package com.mortals.xhx.base.system.menu.model;
import java.util.List;
import java.util.ArrayList;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mortals.framework.annotation.Excel;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.base.system.menu.model.vo.MenuVo;

/**
 * 菜单信息实体对象
 *
 * @author zxfei
 * @date 2023-04-10
 */

public class MenuEntity extends MenuVo {
    private static final long serialVersionUID = 1L;

    /**
     * 菜单名称
     */
    private String name;
    /**
     * 连接地址
     */
    private String url;
    /**
     * 当前节点父id路径，“，”分割，服务端生成
     */
    private String ancestors;
    /**
     * 父菜单ID，一级菜单的该字段值为-1
     */
    private Long parentId;
    /**
     * 排序编号
     */
    private Integer orderId;
    /**
     * 菜单状态，0：禁用，1：启用，默认1
     */
    private Integer status;
    /**
     * 链接方式，0：普通，1：弹出，2：脚本（JavaScript），默认0
     */
    private Integer linkType;
    /**
     * 分组编号，使用菜单分隔符按该值分隔，默认1
     */
    private Long groupId;
    /**
     *
     */
    private String groupName;
    /**
     * 主菜单图标，主菜单图标的css样式名
     */
    private String imgPath;
    /**
     * 按钮图标，按钮图标的css样式名
     */
    private String buttonImgPath;
    /**
     * 常用菜单图标，常用菜单图标的css样式名
     */
    private String imgCommPath;
    /**
     * 是否常用菜单，0：非常用，1：常用，默认0
     */
    private Integer commMenu;
    /**
     * 菜单类型，0：主菜单，1：非主菜单(功能操作组)，默认0
     */
    private Integer menuType;
    /**
     * 权限类型，0：无限制，1：无需登录查看，2：需要登录查看，3：需要角色权限查看，默认3
     */
    private Integer authType;
    /**
     * 创建用户名称
     */
    private String createUserName;



    public MenuEntity(){}
    /**
     * 获取 菜单名称
     * @return String
     */
    public String getName(){
        return name;
    }
    /**
     * 设置 菜单名称
     * @param name
     */
    public void setName(String name){
        this.name = name;
    }
    /**
     * 获取 连接地址
     * @return String
     */
    public String getUrl(){
        return url;
    }
    /**
     * 设置 连接地址
     * @param url
     */
    public void setUrl(String url){
        this.url = url;
    }
    /**
     * 获取 当前节点父id路径，“，”分割，服务端生成
     * @return String
     */
    public String getAncestors(){
        return ancestors;
    }
    /**
     * 设置 当前节点父id路径，“，”分割，服务端生成
     * @param ancestors
     */
    public void setAncestors(String ancestors){
        this.ancestors = ancestors;
    }
    /**
     * 获取 父菜单ID，一级菜单的该字段值为-1
     * @return Long
     */
    public Long getParentId(){
        return parentId;
    }
    /**
     * 设置 父菜单ID，一级菜单的该字段值为-1
     * @param parentId
     */
    public void setParentId(Long parentId){
        this.parentId = parentId;
    }
    /**
     * 获取 排序编号
     * @return Integer
     */
    public Integer getOrderId(){
        return orderId;
    }
    /**
     * 设置 排序编号
     * @param orderId
     */
    public void setOrderId(Integer orderId){
        this.orderId = orderId;
    }
    /**
     * 获取 菜单状态，0：禁用，1：启用，默认1
     * @return Integer
     */
    public Integer getStatus(){
        return status;
    }
    /**
     * 设置 菜单状态，0：禁用，1：启用，默认1
     * @param status
     */
    public void setStatus(Integer status){
        this.status = status;
    }
    /**
     * 获取 链接方式，0：普通，1：弹出，2：脚本（JavaScript），默认0
     * @return Integer
     */
    public Integer getLinkType(){
        return linkType;
    }
    /**
     * 设置 链接方式，0：普通，1：弹出，2：脚本（JavaScript），默认0
     * @param linkType
     */
    public void setLinkType(Integer linkType){
        this.linkType = linkType;
    }
    /**
     * 获取 分组编号，使用菜单分隔符按该值分隔，默认1
     * @return Long
     */
    public Long getGroupId(){
        return groupId;
    }
    /**
     * 设置 分组编号，使用菜单分隔符按该值分隔，默认1
     * @param groupId
     */
    public void setGroupId(Long groupId){
        this.groupId = groupId;
    }
    /**
     * 获取
     * @return String
     */
    public String getGroupName(){
        return groupName;
    }
    /**
     * 设置
     * @param groupName
     */
    public void setGroupName(String groupName){
        this.groupName = groupName;
    }
    /**
     * 获取 主菜单图标，主菜单图标的css样式名
     * @return String
     */
    public String getImgPath(){
        return imgPath;
    }
    /**
     * 设置 主菜单图标，主菜单图标的css样式名
     * @param imgPath
     */
    public void setImgPath(String imgPath){
        this.imgPath = imgPath;
    }
    /**
     * 获取 按钮图标，按钮图标的css样式名
     * @return String
     */
    public String getButtonImgPath(){
        return buttonImgPath;
    }
    /**
     * 设置 按钮图标，按钮图标的css样式名
     * @param buttonImgPath
     */
    public void setButtonImgPath(String buttonImgPath){
        this.buttonImgPath = buttonImgPath;
    }
    /**
     * 获取 常用菜单图标，常用菜单图标的css样式名
     * @return String
     */
    public String getImgCommPath(){
        return imgCommPath;
    }
    /**
     * 设置 常用菜单图标，常用菜单图标的css样式名
     * @param imgCommPath
     */
    public void setImgCommPath(String imgCommPath){
        this.imgCommPath = imgCommPath;
    }
    /**
     * 获取 是否常用菜单，0：非常用，1：常用，默认0
     * @return Integer
     */
    public Integer getCommMenu(){
        return commMenu;
    }
    /**
     * 设置 是否常用菜单，0：非常用，1：常用，默认0
     * @param commMenu
     */
    public void setCommMenu(Integer commMenu){
        this.commMenu = commMenu;
    }
    /**
     * 获取 菜单类型，0：主菜单，1：非主菜单(功能操作组)，默认0
     * @return Integer
     */
    public Integer getMenuType(){
        return menuType;
    }
    /**
     * 设置 菜单类型，0：主菜单，1：非主菜单(功能操作组)，默认0
     * @param menuType
     */
    public void setMenuType(Integer menuType){
        this.menuType = menuType;
    }
    /**
     * 获取 权限类型，0：无限制，1：无需登录查看，2：需要登录查看，3：需要角色权限查看，默认3
     * @return Integer
     */
    public Integer getAuthType(){
        return authType;
    }
    /**
     * 设置 权限类型，0：无限制，1：无需登录查看，2：需要登录查看，3：需要角色权限查看，默认3
     * @param authType
     */
    public void setAuthType(Integer authType){
        this.authType = authType;
    }
    /**
     * 获取 创建用户名称
     * @return String
     */
    public String getCreateUserName(){
        return createUserName;
    }
    /**
     * 设置 创建用户名称
     * @param createUserName
     */
    public void setCreateUserName(String createUserName){
        this.createUserName = createUserName;
    }




    @Override
    public int hashCode() {
        return this.getId().hashCode();
    }
    @Override
    public boolean equals(Object obj) {
        if (obj == null) return false;
        if (obj instanceof MenuEntity) {
            MenuEntity tmp = (MenuEntity) obj;
            if (this.getId() == tmp.getId()) {
                return true;
            }
        }
        return false;
    }

    public String toString(){
        StringBuilder sb = new StringBuilder("");
        sb.append(",name:").append(getName());
        sb.append(",url:").append(getUrl());
        sb.append(",ancestors:").append(getAncestors());
        sb.append(",parentId:").append(getParentId());
        sb.append(",orderId:").append(getOrderId());
        sb.append(",status:").append(getStatus());
        sb.append(",linkType:").append(getLinkType());
        sb.append(",groupId:").append(getGroupId());
        sb.append(",groupName:").append(getGroupName());
        sb.append(",imgPath:").append(getImgPath());
        sb.append(",buttonImgPath:").append(getButtonImgPath());
        sb.append(",imgCommPath:").append(getImgCommPath());
        sb.append(",commMenu:").append(getCommMenu());
        sb.append(",menuType:").append(getMenuType());
        sb.append(",authType:").append(getAuthType());
        sb.append(",createUserName:").append(getCreateUserName());
        return sb.toString();
    }

    public void initAttrValue(){

        this.name = "";

        this.url = "";

        this.ancestors = "";

        this.parentId = 0L;

        this.orderId = 1;

        this.status = 1;

        this.linkType = 0;

        this.groupId = 1L;

        this.groupName = "";

        this.imgPath = "";

        this.buttonImgPath = "";

        this.imgCommPath = "";

        this.commMenu = 0;

        this.menuType = 0;

        this.authType = 3;

    }
}