package cc.smtweb.system.bpm.web.sys.user.menu;

import cc.smtweb.framework.core.annotation.SwTable;
import cc.smtweb.framework.core.db.impl.DefaultEntity;
import cc.smtweb.framework.core.util.JsonUtil;
import cc.smtweb.framework.core.util.StringUtil;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

/**
 * Created by 1 at 2022-08-03 08:53:34
 * 实体【[菜单定义](SYS_MENU)】的Entity类
 */
@SwTable("SYS_MENU")
public class Menu extends DefaultEntity {
    public static final String ENTITY_NAME = "SYS_MENU";

    public Menu() {
        super(ENTITY_NAME);
    }

    /**
     * 主键
     */
    public long getId() {
        return getLong("sm_id");
    }

    /**
     * 主键
     */
    public void setId(long sm_id) {
        put("sm_id", sm_id);
    }

    /**
     * 排序
     */
    public int getSeq() {
        return getInt("sm_seq");
    }

    /**
     * 排序
     */
    public void setSeq(int sm_seq) {
        put("sm_seq", sm_seq);
    }

    /**
     * 名称
     */
    public String getName() {
        return getStr("sm_name");
    }

    /**
     * 名称
     */
    public void setName(String sm_name) {
        put("sm_name", sm_name);
    }

    /**
     * 图标
     */
    public String getIcon() {
        return getStr("sm_icon");
    }

    /**
     * 图标
     */
    public void setIcon(String sm_icon) {
        put("sm_icon", sm_icon);
    }

    /**
     * 权限点
     */
    public String getRight() {
        return getStr("sm_right");
    }

    /**
     * 权限点
     */
    public void setRight(String sm_right) {
        put("sm_right", sm_right);
    }

    /**
     * 类型
     */
    public boolean isType() {
        return getBool("sm_type");
    }

    /**
     * 类型
     */
    public void set(boolean sm_type) {
        setBool("sm_type", sm_type);
    }

    /**
     * 请求内容
     */
    public String getContent() {
        return getStr("sm_content");
    }

    /**
     * 请求内容
     */
    public void setContent(String sm_content) {
        put("sm_content", sm_content);
    }

    /**
     * 所属项目
     */
    public long getPrjId() {
        return getLong("sm_prj_id");
    }

    /**
     * 所属项目
     */
    public void setPrjId(long sm_prj_id) {
        put("sm_prj_id", sm_prj_id);
    }

    /**
     * 所属目录
     */
    public long getMcId() {
        return getLong("sm_mc_id");
    }

    /**
     * 所属目录
     */
    public void setMcId(long sm_mc_id) {
        put("sm_mc_id", sm_mc_id);
    }

    /**
     * 备注
     */
    public String getRemark() {
        return getStr("sm_remark");
    }

    /**
     * 备注
     */
    public void setRemark(String sm_remark) {
        put("sm_remark", sm_remark);
    }


    public final String getPath() {
        if (StringUtil.isEmpty(getContent())) return "";
        return JsonUtil.parseMap(getContent()).get("path").toString();
    }

    public final String getPageId() {
        if (StringUtil.isEmpty(getContent())) return "";
        return JsonUtil.parseMap(getContent()).get("pageId").toString();
    }

    public final List<String> getRightList(String type) {
        List<String> set = new ArrayList<>();
        if (StringUtil.isEmpty(getRight())) return set;
        return (List<String>) JsonUtil.parseMap(getRight()).get(type);
    }

    public final Set<String> getRightSet(String type) {
        List<String> list = getRightList(type);
        if (list == null) return new HashSet<>();
        return new HashSet<String>(list);
    }
}
