package com.tofly.base.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.tofly.common.oauth.util.SecurityUtils;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;

/**
 * 菜单表
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName(value="TF_SMPN_MENU_X",resultMap = "menuMap")
@KeySequence("TF_SMPN_MENU_X")
@ApiModel
public class Menu extends Model<Menu> {
    private static final long serialVersionUID = 1L;

    /**
     * 菜单ID，主键
     */
    @TableId(value = "ID",type= IdType.INPUT)
    @ApiModelProperty(value = "菜单ID，主键")
    private Long id;
    /**
     * 菜单名称
     */
    @ApiModelProperty(value = "菜单名称")
    private String name;
    /**
     * 菜单权限标识（保留字段）
     */
    @ApiModelProperty(value = "菜单权限标识（保留字段）")
    private String permission;
    /**
     * 前端URL
     */
    @ApiModelProperty(value = "前端URL")
    private String path;
    /**
     * 父菜单ID
     */
    @ApiModelProperty(value = "父菜单ID")
    private Long parentId;
    /**
     * 默认图标
     */
    @ApiModelProperty(value = "默认图标")
    private String icon;
    /**
     * 排序
     */
    @ApiModelProperty(value = "排序")
    private Integer sort;
    /**
     * 开启关闭 1开启，0关闭
     */
    @ApiModelProperty(value = "开启关闭 1开启，0关闭")
    private String keepAlive;

    /**
     * 菜单类型 0菜单 1功能 2工具 3按钮
     */
    @ApiModelProperty(value = "菜单类型 0菜单 1功能 2工具 3按钮")
    private String type;

    /**
     * 创建时间
     */
    @ApiModelProperty(value = "创建时间")
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @TableField(value = "CREATE_TIME",fill = FieldFill.INSERT)
    private Date createTime;
    /**
     * 修改时间
     */
    @ApiModelProperty(value = "修改时间")
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @TableField(value = "UPDATE_TIME",fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;
    /**
     * 是否启用禁用 1启用，0禁用
     */
    @ApiModelProperty(value = "是否启用禁用 1启用，0禁用")
    private String statusFlag;
    /**
     * 菜单编码（自定义菜单）
     */
    @ApiModelProperty(value = "菜单编码（自定义菜单）")
    private String code;
    /**
     * 鼠标经过图标
     */
    @ApiModelProperty(value = "鼠标经过图标")
    private String mouseIcon;
    /**
     * 是否放置在模板内  1放置在模板内，0不放置。
     */
    @ApiModelProperty(value = "是否放置在模板内  1放置在模板内，0不放置。")
    private String inpanel;
    /**
     * 放置模板
     */
    @ApiModelProperty(value = "放置模板")
    private String panel;
    /**
     * 是否跟随系统启动 1启动 2不启动
     */
    @ApiModelProperty(value = "是否跟随系统启动 1启动 2不启动")
    private String autorun;
    /**
     * 所属子系统
     */
    @ApiModelProperty(value = "所属子系统")
    private Long sysId;
    /**
     * 创建人
     */
    @ApiModelProperty(value = "创建人")
    @TableField(value = "CREATE_USER",fill = FieldFill.INSERT)
    private Long createUser;

    @TableField(exist = false)
    @ApiModelProperty(hidden = true)
    private String createUserName;

    @ApiModelProperty(value = "")
    private String component;

    @ApiModelProperty(value = "")
    private String label;

    @ApiModelProperty(value = "")
    private String meta;

    @ApiModelProperty(value = "")
    private String parentPathid;

    @ApiModelProperty(value = "")
    private String pathId;

    @ApiModelProperty(value = "")
    private String redirect;

    @ApiModelProperty(value = "")
    private String widgetid;

    @ApiModelProperty(value = "层级")
    @TableField(exist = false)
    private Integer level;

    @ApiModelProperty(value = "下级")
    @TableField(exist = false)
    private List<Menu> childrens;

}
