package com.haha.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 菜单实体类
 */
@Data
@TableName("t_menu")
public class Menu implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId(type = IdType.ASSIGN_ID)
    @JsonSerialize(using = ToStringSerializer.class)
    private Long id;

    /** 父菜单ID，0表示顶级菜单 */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long parentId;

    /** 菜单类型: 0=菜单 1=iframe 2=外链 3=按钮 */
    private Integer menuType;

    /** 菜单名称 */
    private String title;

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

    /** 路由路径 */
    private String path;

    /** 组件路径 */
    private String component;

    /** 菜单排序 */
    @TableField("`rank`")
    private Integer rank;

    /** 路由重定向 */
    @TableField("`redirect`")
    private String redirect;

    /** 菜单图标 */
    private String icon;

    /** 右侧图标 */
    private String extraIcon;

    /** 进场动画 */
    private String enterTransition;

    /** 离场动画 */
    private String leaveTransition;

    /** 菜单激活路径 */
    private String activePath;

    /** 权限标识 */
    private String auths;

    /** iframe链接地址 */
    private String frameSrc;

    /** iframe是否开启加载动画 */
    private Boolean frameLoading;

    /** 是否缓存页面 */
    private Boolean keepAlive;

    /** 是否禁止添加到标签页 */
    private Boolean hiddenTag;

    /** 是否固定显示在标签页 */
    private Boolean fixedTag;

    /** 是否显示该菜单 */
    private Boolean showLink;

    /** 是否显示父级菜单 */
    private Boolean showParent;

    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
    private LocalDateTime createTime;

    /** 更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
    private LocalDateTime updateTime;

    /** 逻辑删除: 0=正常 1=已删除 */
    private Integer deleted;
}

