package org.dromara.member.domain.bo;

import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.member.domain.AppFile;

/**
 * App端文件信息业务对象 app_file
 *
 * @author pengles
 */
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = AppFile.class, reverseConvertGenerate = false)
public class AppFileBo extends BaseEntity {

    /**
     * 文件ID
     */
    @NotNull(message = "文件ID不能为空", groups = {EditGroup.class})
    private Long fileId;

    /**
     * 用户ID
     */
    private Long userId;

    /**
     * 文件名
     */
    @NotBlank(message = "文件名不能为空", groups = {AddGroup.class, EditGroup.class})
    private String fileName;

    /**
     * 原始文件名
     */
    @NotBlank(message = "原始文件名不能为空", groups = {AddGroup.class, EditGroup.class})
    private String originalName;

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

    /**
     * 文件URL
     */
    @NotBlank(message = "文件URL不能为空", groups = {AddGroup.class, EditGroup.class})
    private String fileUrl;

    /**
     * 文件大小（字节）
     */
    @NotNull(message = "文件大小不能为空", groups = {AddGroup.class, EditGroup.class})
    private Long fileSize;

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

    /**
     * 文件后缀
     */
    private String fileSuffix;

    /**
     * 文件分类（1头像 2文档 3图片 4视频 5音频 6其他）
     */
    private Integer fileCategory;

    /**
     * 存储服务商
     */
    private String storageService;

    /**
     * 文件状态（0正常 1删除）
     */
    private String status;

    /**
     * 下载次数
     */
    private Long downloadCount;

    /**
     * 是否公开（0私有 1公开）
     */
    private String isPublic;

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

    /**
     * 备注
     */
    private String remark;

}