package com.cpop.oam.business.bo;


import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;


/**
 * 系统菜单表Bo
 *
 * @author DB.lost
 * @since 2023-05-10
 */
@Data
@Accessors(chain = true)
@ApiModel(value = "SysMenu对象", description = "系统菜单表")
public class MenuBo implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 菜单ID
     */
    @ApiModelProperty("菜单ID")
    private String id;

    /**
     * 父级菜单ID
     */
    @ApiModelProperty("父级菜单ID")
    private String parentMenu;

    /**
     * 菜单名称
     */
    @ApiModelProperty("菜单名称")
    private String name;

    /**
     * 菜单图标
     */
    @ApiModelProperty(value = "菜单图标")
    private String icon;

    /**
     * 菜单路由，父菜单为空
     */
    @ApiModelProperty("菜单路由，父菜单为空")
    private String component;

    /**
     * 标记菜单的状态  0:禁用 1：启用（根据权限正常显示）
     */
    @NotNull(message = "状态不能为空")
    @ApiModelProperty(value = "标记菜单的状态 0:禁用 1：启用（根据权限正常显示）", required = true)
    private Boolean status;

    /**
     * 菜单类型，0:目录，1:菜单，2:按钮
     */
    @NotNull(message = "菜单类型不能为空")
    @ApiModelProperty(value = "菜单类型，0:目录，1:菜单，2:按钮", required = true)
    private Integer type;

    /**
     * 权限
     */
    @ApiModelProperty("权限")
    private String permission;

    /**
     * 重定向路径，一级菜单有值
     */
    @ApiModelProperty("重定向路径，一级菜单有值")
    private String redirect;

    /**
     * 排序，值越小越靠前，一级菜单有值
     */
    @NotNull(message = "排序不能为空")
    @ApiModelProperty(value = "排序，值越小越靠前，一级菜单有值", required = true)
    private Integer orderNo;

    /**
     * 路由地址
     */
    @ApiModelProperty(value = "路由地址")
    private String path;

    /**
     * 标题
     */
    @NotBlank(message = "标题不能为空")
    @ApiModelProperty(value = "标题", required = true)
    private String title;

    /**
     * 隐藏菜单
     */
    @ApiModelProperty("隐藏菜单")
    private Boolean hideMenu;

}
