package com.doumee.core.constants; import lombok.AllArgsConstructor; import lombok.Getter; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 数据权限常量 * @author Eva.Caesar Liu * @date 2022/03/15 09:54 */ public interface DataPermissionConstants { /** * 数据权限模块 */ @Getter @AllArgsConstructor enum Module { DEPARTMENT("DEPARTMENT", "部门管理"), POSITION("POSITION", "岗位管理"), ; private String businessCode; private String moduleName; public static List> valueList () { List> list = new ArrayList<>(); for (Module module: Module.values()) { list.add(new HashMap(){{ this.put("businessCode", module.getBusinessCode()); this.put("moduleName", module.getModuleName()); }}); } return list; } } /** * 数据权限类型 */ @Getter @AllArgsConstructor enum Type { ALL((short)0,"全部", new Module[]{}), DEPARTMENT_CUSTOM((short)11, "自定义部门", new Module[]{Module.DEPARTMENT}), DEPARTMENT_CHILDREN((short)12, "所属部门及其子孙部门", new Module[]{Module.DEPARTMENT}), DEPARTMENT_CHILD((short)13, "所属部门及其子部门", new Module[]{Module.DEPARTMENT}), DEPARTMENT((short)14, "仅所属部门", new Module[]{Module.DEPARTMENT}), POSITION_CUSTOM((short)21, "自定义岗位", new Module[]{Module.POSITION}), POSITION_CHILDREN((short)22, "所属岗位及其子孙岗位", new Module[]{Module.POSITION}), POSITION_CHILD((short)23, "所属岗位及其子岗位", new Module[]{Module.POSITION}), POSITION((short)24, "仅所属岗位", new Module[]{Module.POSITION}), ; // 类型编码 private short code; // 类型备注 private String remark; // 所属模块,为空时表示所有模块可用 private Module[] modules; public static List> valueList () { List> list = new ArrayList<>(); for (Type type: Type.values()) { List modules = new ArrayList<>(); for (Module module : type.getModules()) { modules.add(module.getBusinessCode()); } list.add(new HashMap(){{ this.put("code", type.getCode()); this.put("remark", type.getRemark()); this.put("modules", modules); }}); } return list; } } }