package com.mcwl.resource.domain;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.mcwl.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.ArrayList;

/**
 * 模型版本
 * @Author：ChenYan
 * @Project：McWl
 * @Package：com.mcwl.resource.domain
 * @Filename：ModelVersion
 * @Description TODO
 * @Date：2025/1/8 19:25
 */
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Data
@ApiModel(description = "模型版本表")
@TableName("model_version")
public class ModelVersion  extends BaseEntity {

    /**
     * 主键ID
     */
    @ApiModelProperty(value = "主键ID")
    @TableId
    private Long id;
    /**
     * 模型ID
     */
    @ApiModelProperty(value = "模型ID")
    private Long modelId;
    /**
     * 版本名称
     */
    @ApiModelProperty(value = "版本名称")
    private String versionName;
    /**
     * 模型类型ID
     */
    @ApiModelProperty(value = "基础模型")
    private Long modelVersionType;
    /**
     * 文件地址
     */
    @ApiModelProperty(value = "文件地址")
    private String filePath;
    /**
     * 文件名
     */
    @ApiModelProperty(value = "文件名")
    private String fileName;
    /**
     * 版本介绍（富文本编辑）
     */
    @ApiModelProperty(value = "版本介绍（富文本编辑）")
    private String versionDescription;
    /**
     * 触发词
     */
    @ApiModelProperty(value = "触发词")
    private String triggerWords;
    /**
     * 采样方法
     */
    @ApiModelProperty(value = "采样方法")
    private String sampling;
    /**
     * 高清修复
     */
    @ApiModelProperty(value = "高清修复")
    private String high;
    /**
     * vae
     */
    @ApiModelProperty(value = "vae")
    private Integer vae;
    /**
     * cfg
     */
    @ApiModelProperty(value = "cfg")
    private Integer cfg;
    /**
     * 是否免费
     */
    @ApiModelProperty(value = "是否免费")
    private Integer isFree;
    /**
     * 是否公开
     */
    @ApiModelProperty(value = "是否公开")
    private Integer isPublic;
    /**
     * 是否加密(0不加密 1加密)
     */
    @ApiModelProperty(value = "是否加密(0不加密 1加密)")
    private Integer isEncrypt;
    /**
     * 是否在线使用
     */
    @ApiModelProperty(value = "是否在线使用")
    private Integer isOnlineUse;
    /**
     * 允许下载生图
     */
    @ApiModelProperty(value = "允许下载生图")
    private Integer allowDownloadImage;
    /**
     * 允许在软件旗下使用
     */
    @ApiModelProperty(value = "允许在软件旗下使用")
    private Integer allowSoftwareUse;
    /**
     * 允许进行融合
     */
    @ApiModelProperty(value = "允许进行融合")
    private Integer allowFusion;
    /**
     * 是否允许商用
     */
    @ApiModelProperty(value = "是否允许商用")
    private Integer allowCommercialUse;
    /**
     * 是否允许使用
     */
    @ApiModelProperty(value = "是否允许使用")
    private Integer allowUsage;
    /**
     * 是否为独家模型
     */
    @ApiModelProperty(value = "是否为独家模型")
    private Integer isExclusiveModel;
    /**
     * 示例图片地址（多张使用切割）
     */
    @ApiModelProperty(value = "示例图片地址（多张使用切割）")
    private String sampleImagePaths;
    /**
     * 是否隐藏图片生成信息
     */
    @ApiModelProperty(value = "是否隐藏图片生成信息")
    private Integer hideImageGenInfo;

    /**
     * 文件解密秘钥
     */
    @ApiModelProperty(value = "文件解密秘钥")
    private String keyRate;

    /**
     *文件key
     */
    @ApiModelProperty(value = "文件的key标识")
    private String objectKey;

    /**
     * 加密后文件地址
     */
    @ApiModelProperty(value = "加密后文件地址")
    private String encryptionFilePath;

    /**
     * 加密后文件key标识
     */
    @ApiModelProperty(value = "加密后文件key标识")
    private String encryptionObjectKey;

    /**
     * 删除标志（0代表存在 2代表删除）
     */
    @ApiModelProperty(value = "删除标志（0代表存在 2代表删除）")
    private String delFlag;

    /**
     * 文件大小
     */
    @ApiModelProperty(value = "文件大小")
    private String fileSize;


    @ApiModelProperty(value = "高清修复列表")
    @TableField(exist = false)
    private ArrayList<String> highList;

    /**
     * 是否收藏
     */
    @ApiModelProperty(value = "是否收藏")
    @TableField(exist = false)
    private Integer isCollect;

    /**
     * 是否下载
     */
    @ApiModelProperty(value = "是否下载")
    @TableField(exist = false)
    private Integer isDownload;

    /**
     * 文件hash
     */
    @ApiModelProperty(value = "文件hash")
    private String fileHash;

    @ApiModelProperty(value = "加密后文件新名字")
    private String encryptionFileName;

    @ApiModelProperty(value = "加密后文件大小")
    private String encryptionFileSize;
}
