package com.xjrsoft.module.system.dto;

import com.xjrsoft.module.system.entity.XjrMenuDeptRelation;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.Range;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.List;

/**
 * @title: AddMenuDto
 * @Author tzx
 * @Date: 2022/4/4 19:03
 * @Version 1.0
 */
@Data
public class AddMenuDto implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty("上级Id")
    private Long parentId = 0L;

    @Length(min = 1,max = 20,message = "组件名称不能大于20个字符！")
    @ApiModelProperty("组件名（路由名称） --  与vue代码组件名必须一直 才能做到缓存页面 相关联")
    private String name;

    @NotNull(message = "菜单名称不能为空!")
    @Length(max = 20,message = "菜单名称不能大于20个字符！")
    @ApiModelProperty("菜单名")
    private String title;

    @NotNull(message = "菜单编码不能为空!")
    @Length(max = 20,message = "菜单编码不能大于20个字符！")
    @ApiModelProperty("菜单编号")
    private String code;

    @Length(max = 50,message = "菜单图标不能大于20个字符！")
    @ApiModelProperty("菜单图标")
    private String icon;

    @Length(max = 2000,message = "图标地址不能大于2000个字符！")
    @ApiModelProperty("图标地址")
    private String iconUrl;

    @NotNull(message = "菜单地址不能为空!")
    @Length(max = 100,message = "菜单地址不能大于100个字符！")
    @ApiModelProperty("地址")
    private String path;

//    @NotNull(message = "组件地址不能为空!")
    @Length(max = 100,message = "组件地址不能大于100个字符！")
    @ApiModelProperty("组件地址")
    private String component;

    @NotNull(message = "组件类型不能为空!")
    @ApiModelProperty("组件类型")
    private Integer menuType;

    @NotNull(message = "系统类型不能为空!")
    @ApiModelProperty("系统类型(xjr_dictionary_item[system_type])")
    private String systemType;

    @Range(min = 0,max = 1,message = "菜单显示或者隐藏只能是0 或者 1！")
    @ApiModelProperty("菜单显示或者隐藏")
    private Integer display;

    @Range(min = 0,max = 1,message = "菜单是否允许修改只能是0 或者 1！")
    @ApiModelProperty("是否允许修改")
    private Integer allowModify;

    @Range(min = 0,max = 1,message = "菜单是否允许删除只能是0 或者 1！")
    @ApiModelProperty("是否允许删除")
    private Integer allowDelete;

    @Range(min = 0,max = 1,message = "菜单是否为外链只能是0 或者 1！")
    @ApiModelProperty("是否外链")
    private Integer outLink;

    @Range(min = 0,max = 1,message = "菜单是否为缓存只能是0 或者 1！")
    @ApiModelProperty("页面持久化")
    private Integer keepAlive;

    @ApiModelProperty("排序码")
    private Integer sortCode;

    @Length(max = 255,message = "备注不能大于255个字符！")
    @ApiModelProperty("备注")
    private String remark;

    @Range(min = 0,max = 1,message = "菜单是否为缓存只能是0 或者 1！")
    @ApiModelProperty("启用状态")
    private Integer enabledMark;

    @ApiModelProperty("系统主键")
    private Long systemId = 1L;

    @ApiModelProperty("按钮列表")
    private List<AddMenuButtonDto> buttonList;

    @ApiModelProperty("列表字段列表")
    private List<AddMenuColumnDto> columnList;

    @ApiModelProperty("表单字段列表")
    private List<AddMenuFormDto> formList;

    @ApiModelProperty("菜单部门关联表")
    private List<AddXjrMenuDeptRelationDto> menuDeptRelations;

    @ApiModelProperty("是否显示在服务中心（0：否 1：是）")
    private Integer isShowServce;
}
