package org.dromara.system.domain.vo;

import org.dromara.system.domain.FileInfo;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;

import java.io.Serial;
import java.io.Serializable;
import java.util.Date;

/**
 * 文件信息视图对象 file_info
 *
 * @author Lion Li
 * @date 2024-01-01
 */
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = FileInfo.class)
public class FileInfoVo implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 文件ID
     */
    @ExcelProperty(value = "文件ID")
    private Long id;

    /**
     * 文件名称
     */
    @ExcelProperty(value = "文件名称")
    private String name;

    /**
     * 原始文件名
     */
    @ExcelProperty(value = "原始文件名")
    private String originalName;

    /**
     * 文件路径（OSS路径）
     */
    @ExcelProperty(value = "文件路径")
    private String path;

    /**
     * 文件访问URL
     */
    @ExcelProperty(value = "文件访问URL")
    private String url;

    /**
     * 文件大小（字节）
     */
    @ExcelProperty(value = "文件大小")
    private Long size;

    /**
     * 文件类型（MIME类型）
     */
    @ExcelProperty(value = "文件类型")
    private String type;

    /**
     * 文件扩展名
     */
    @ExcelProperty(value = "文件扩展名")
    private String extension;

    /**
     * 文件分类ID
     */
    @ExcelProperty(value = "文件分类ID")
    private Long categoryId;

    /**
     * 文件主分类
     */
    @ExcelProperty(value = "文件主分类")
    private Long categoryType;

    /**
     * 文件分类名称
     */
    @ExcelProperty(value = "文件主分类名称")
    private Long categoryTypeName;

    /**
     * 文件分类名称
     */
    @ExcelProperty(value = "文件分类名称")
    private String categoryName;

    /**
     * 文件哈希值（MD5）
     */
    @ExcelProperty(value = "文件哈希值")
    private String hash;

    /**
     * 图片/视频宽度
     */
    @ExcelProperty(value = "宽度")
    private Integer width;

    /**
     * 图片/视频高度
     */
    @ExcelProperty(value = "高度")
    private Integer height;

    /**
     * 视频/音频时长（秒）
     */
    @ExcelProperty(value = "时长")
    private Integer duration;

    /**
     * OSS存储桶名称
     */
    @ExcelProperty(value = "OSS存储桶")
    private String ossBucket;

    /**
     * OSS对象键
     */
    @ExcelProperty(value = "OSS对象键")
    private String ossKey;

    /**
     * OSS文件唯一标识符
     */
    @ExcelProperty(value = "OSS文件ID")
    private String ossId;

    /**
     * 上传状态（0上传中 1上传完成 2上传失败）
     */
    @ExcelProperty(value = "上传状态")
    private Integer uploadStatus;

    /**
     * 下载次数
     */
    @ExcelProperty(value = "下载次数")
    private Integer downloadCount;

    /**
     * 查看次数
     */
    @ExcelProperty(value = "查看次数")
    private Integer viewCount;

    /**
     * 是否公开（0私有 1公开）
     */
    @ExcelProperty(value = "是否公开")
    private Integer isPublic;

    /**
     * 状态（0正常 1停用）
     */
    @ExcelProperty(value = "状态")
    private Integer status;

    /**
     * 创建时间
     */
    @ExcelProperty(value = "创建时间")
    private Date createTime;

}
