package com.fs.file.domain;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 通用文件上传表
 */
@Data
@TableName("sys_file")
public class SysUploadFile implements Serializable {

    private static final long serialVersionUID = 1L;

    /** 文件ID */
    @TableId(type = IdType.AUTO)
    private Long id;

    /** 租户ID */
    private Long tenantId;

    /** 业务ID */
    private String bizId;

    /** 业务类型 */
    private String bizType;

    /** 原始文件名 */
    private String fileName;

    /** 文件存储路径 */
    private String filePath;

    /** 文件访问URL */
    private String fileUrl;

    /** 文件大小（字节） */
    private Long fileSize;

    /** 文件扩展名 */
    private String fileExt;

    /** 文件MIME类型 */
    private String fileType;

    /** 存储类型：1-本地 2-OSS 3-MinIO 4-七牛 5-腾讯COS */
    private Integer storageType;

    /** 存储桶名称 */
    private String bucketName;

    /** 文件MD5值 */
    private String fileMd5;

    /** 排序号 */
    private Integer sortOrder;

    /** 备注 */
    private String remark;

    /** 状态：0-禁用 1-正常 */
    private Integer status;

    /** 删除标志：0-未删除 1-已删除 */
    @TableLogic
    private Integer isDeleted;

    /** 创建人ID */
    @TableField(fill = FieldFill.INSERT)
    private Long createBy;

    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    /** 更新人ID */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Long updateBy;

    /** 更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}
