package com.sptg.permissions.api.entity;

import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableName;
import com.sptg.common.core.entity.BaseEntity;
import com.sptg.common.core.util.TreeUtil;
import lombok.Getter;
import lombok.Setter;

import java.util.List;

/**
 * title: Menu
 * package: com.sptg.permissions.api.entity
 * description: 菜单-实体类
 *                  
 *                 
 */
@Getter
@Setter
@TableName(value = "menu")
public class Menu extends BaseEntity implements TreeUtil.TreeEntity<Menu> {

    /**
     * 父级节点Id
     */
    @TableField(value = "l_pid")
    private Long pid;

    /**
     * 存储位置
     */
    @TableField(value = "s_position")
    private String position;

    /**
     * 程序名称
     */
    @TableField(value = "s_name")
    private String name;

    /**
     * 程序路径
     */
    @TableField(value = "s_path")
    private String path;

    /**
     * 图标
     */
    @TableField(value = "s_icon")
    private String icon;

    /**
     * 程序唯一标识
     */
    @TableField(value = "s_token")
    private String token;

    /**
     * 功能权限类型{
     *      1：菜单（点击跳转到一个新的页面），
     *      2：按钮（功能按钮，例如增删改），
     *      3：文件夹 （点击会将子菜单列出，不会跳转）
     * }
     */
    @TableField(value = "i_type")
    private Integer type;

    /**
     * 排序字段
     */
    @TableField(value = "i_sort")
    private Integer sort;

    /**
     * 层级数
     */
    @TableField(value = "i_layer_number")
    private Integer layerNumber;

    /**
     * 子节点总数
     */
    @TableField(value = "i_client_count")
    private Integer clientCount;

    /**
     * 创建人Id
     */
    @TableField(value = "l_create_account_id")
    private Long createAccountId;

    /* -------------------------------------------------------------------------------------------------------------- */
    //  以下为字段非表字段
    /* -------------------------------------------------------------------------------------------------------------- */

    /**
     * 子菜单
     */
    @TableField(exist = false)
    private List<Menu> subList;



}
