package io.gisbi.application.module.domain;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
import org.apache.ibatis.type.JdbcType;

/**
 * <p>
 * 应用_系统模块
 * </p>
 *
 * @author zhengsl
 * @since 2025-03-25
 */
@Getter
@Setter
@TableName("app_module")
public class Module implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    private String id;

    /**
     * 应用ID 关联应用系统
     */
    private String appId;

    /**
     * 名称
     */
    private String name;

    /**
     * 父级ID 父级模块
     */
    @TableField(value = "pid", jdbcType = JdbcType.VARCHAR)
    private String pid;

    /**
     * 层级
     */
    private Integer level;

    /**
     * 节点类型 01-目录  02-模块
     */
    private String nodeType;

    /**
     * 类型 01-数据大屏  02-数据看板 03-弹窗页面 04-填报页面  06-移动端界面   09-自定义页面
     */
    private String type;

    /**
     * 样式数据
     */
    @TableField(value = "canvas_style_data", jdbcType = JdbcType.VARCHAR)
    private String canvasStyleData;

    /**
     * 组件数据
     */
    @TableField(value = "component_data", jdbcType = JdbcType.VARCHAR)
    private String componentData;

    /**
     * 状态 0-未发布 1-已发布
     */
    private Integer status;

    /**
     * 是否单独打开水印 0-关闭 1-开启
     */
    private Integer selfWatermarkStatus;

    /**
     * 排序 目录内的排序号
     */
    private Integer sort;

    /**
     * 创建时间
     */
    private LocalDateTime createTime;

    /**
     * 创建人
     */
    private String createBy;

    /**
     * 更新时间
     */
    private LocalDateTime updateTime;

    /**
     * 更新人
     */
    private String updateBy;

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

    /**
     * 数据来源
     */
    private String source;

    /**
     * 删除标志
     */
    private Byte deleteFlag;

    /**
     * 删除时间
     */
    private LocalDateTime deleteTime;

    /**
     * 删除人
     */
    private String deleteBy;

    /**
     * 可视化资源版本
     */
    private Integer version;

    /**
     * 内容标识
     */
    private String contentId;

    /**
     * 内容检查标识
     */
    private String checkVersion;

    /**
     * 备用1
     */
    private String custom1;

    /**
     * 备用2
     */
    private String custom2;

    /**
     * 备用3
     */
    private String custom3;

    public Module(String appId,String name,String pid,Integer level,String nodeType,String type,Integer status,Integer sort,LocalDateTime createTime,String createBy){

        this.appId = appId;
        this.name = name;
        this.pid = pid;
        this.level = level;
        this.nodeType = nodeType;
        this.type = type;
        this.status = status;
        this.sort = sort;
        this.createTime = createTime;
        this.createBy = createBy;
    };
}
