package com.yushu.system.domain;

import java.util.Date;
import java.util.List;
import lombok.Data;
import lombok.EqualsAndHashCode;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yushu.common.annotation.Excel;
import com.yushu.common.core.domain.BaseEntity;

/**
 * 文件分享对象 sys_file_share
 * 
 * @author yushu
 * @date 2024-11-15
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class SysFileShare extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 分享ID */
    private Long shareId;

    /** 文件ID */
    @Excel(name = "文件ID")
    private Long fileId;
    
    /** 文件夹ID */
    @Excel(name = "文件夹ID")
    private Long folderId;

    /** 分享码 */
    @Excel(name = "分享码")
    private String shareCode;

    /** 提取码 */
    @Excel(name = "提取码")
    private String sharePassword;

    /** 分享类型（0公开 1需要密码） */
    @Excel(name = "分享类型", readConverterExp = "0=公开,1=需要密码")
    private String shareType;
    
    /** 资源类型（0文件 1文件夹） */
    @Excel(name = "资源类型", readConverterExp = "0=文件,1=文件夹")
    private String resourceType;

    /** 过期时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "过期时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date expireTime;

    /** 查看次数 */
    @Excel(name = "查看次数")
    private Integer viewCount;

    /** 下载次数 */
    @Excel(name = "下载次数")
    private Integer downloadCount;

    /** 最大下载次数（-1不限制） */
    @Excel(name = "最大下载次数")
    private Integer maxDownload;

    /** 分享人ID */
    @Excel(name = "分享人ID")
    private Long userId;

    /** 状态（0正常 1禁用） */
    @Excel(name = "状态", readConverterExp = "0=正常,1=禁用")
    private String status;
    
    /** 文件信息（用于返回，不映射到数据库） */
    private transient SysFileInfo fileInfo;
    
    /** 文件列表（文件夹分享时使用，不映射到数据库） */
    private transient List<SysFileInfo> fileList;
}
