/**
 * 文件信息VO
 */
export interface FileInfoVO {
  /**
   * 文件ID
   */
  id: number;

  /**
   * 文件名称
   */
  name: string;

  /**
   * 原始文件名
   */
  originalName: string;

  /**
   * 文件路径
   */
  path: string;

  /**
   * 文件URL
   */
  url?: string;

  /**
   * 文件大小（字节）
   */
  size: number;

  /**
   * 文件类型
   */
  type: string;

  /**
   * 文件扩展名
   */
  extension?: string;

  /**
   * 分类ID
   */
  categoryId?: number;

  /**
   * 分类名称
   */
  categoryName?: string;

  /**
   * 文件哈希值
   */
  hash?: string;

  /**
   * 图片宽度
   */
  width?: number;

  /**
   * 图片高度
   */
  height?: number;

  /**
   * 视频时长（秒）
   */
  duration?: number;

  /**
   * OSS存储桶
   */
  ossBucket?: string;

  /**
   * OSS对象键
   */
  ossKey?: string;

  /**
   * 上传状态（0上传中 1上传完成 2上传失败）
   */
  uploadStatus: number;

  /**
   * 下载次数
   */
  downloadCount: number;

  /**
   * 查看次数
   */
  viewCount: number;

  /**
   * 是否公开（0私有 1公开）
   */
  isPublic: number;

  /**
   * 状态（0正常 1停用）
   */
  status: number;

  /**
   * 文件描述
   */
  description?: string;

  /**
   * 创建时间
   */
  createTime: string;

  /**
   * 更新时间
   */
  updateTime: string;
}

/**
 * 文件信息表单
 */
export interface FileInfoForm {
  /**
   * 文件ID
   */
  id?: number;

  /**
   * 文件名称
   */
  name: string;

  /**
   * 原始文件名
   */
  originalName: string;

  /**
   * 文件路径
   */
  path: string;

  /**
   * 文件URL
   */
  url?: string;

  /**
   * 文件大小（字节）
   */
  size?: number;

  /**
   * 文件类型
   */
  type?: string;

  /**
   * 文件扩展名
   */
  extension?: string;

  /**
   * 分类ID
   */
  categoryId?: number;

  /**
   * 文件主分类
   */
  categoryType?: number;

  /**
   * 文件哈希值
   */
  hash?: string;

  /**
   * 图片宽度
   */
  width?: number;

  /**
   * 图片高度
   */
  height?: number;

  /**
   * 视频时长（秒）
   */
  duration?: number;

  /**
   * OSS存储桶
   */
  ossBucket?: string;

  /**
   * OSS对象键
   */
  ossKey?: string;

  /**
   * 上传状态（0上传中 1上传完成 2上传失败）
   */
  uploadStatus?: number;

  /**
   * 是否公开（0私有 1公开）
   */
  isPublic?: number;

  /**
   * 状态（0正常 1停用）
   */
  status?: number;

  /**
   * 文件描述
   */
  description?: string;
}

/**
 * 文件信息查询参数
 */
export interface FileInfoQuery {
  /**
   * 文件名称
   */
  name?: string;

  /**
   * 文件主分类
   */
  categoryType?: number;

  /**
   * 原始文件名
   */
  originalName?: string;

  /**
   * 分类ID
   */
  categoryId?: number;

  /**
   * 文件类型
   */
  type?: string;

  /**
   * 上传状态
   */
  uploadStatus?: number;

  /**
   * 是否公开
   */
  isPublic?: number;

  /**
   * 页码
   */
  pageNum?: number;

  /**
   * 每页大小
   */
  pageSize?: number;
}

/**
 * 分页查询参数
 */
export interface PageQuery {
  /**
   * 页码
   */
  pageNum?: number;

  /**
   * 每页大小
   */
  pageSize?: number;
}

/**
 * 分页响应结果
 */
export interface TableDataInfo<T> {
  /**
   * 总记录数
   */
  total: number;

  /**
   * 数据列表
   */
  rows: T[];

  /**
   * 页码
   */
  pageNum: number;

  /**
   * 每页大小
   */
  pageSize: number;
} 