From bae61e2ae7254be2d536552a9d0cdf6847293720 Mon Sep 17 00:00:00 2001 From: yaoq Date: Tue, 9 Aug 2022 15:45:41 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/bpm/web/sys/user/role/RoleHandler.java | 55 ++++++++++++++-------- .../bpm/web/sys/user/role/RoleRightContent.java | 9 ++++ .../static/event/bpm/sys/user/role/roleRight.js | 8 +--- 3 files changed, 46 insertions(+), 26 deletions(-) diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/user/role/RoleHandler.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/user/role/RoleHandler.java index bf1299a..c9c8de8 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/user/role/RoleHandler.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/user/role/RoleHandler.java @@ -22,6 +22,7 @@ import cc.smtweb.system.bpm.web.sys.user.menuPlan.MenuPlanItem; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Set; /** * @Author: tanghp @@ -52,26 +53,38 @@ public class RoleHandler { if (pageDataSet.name.equals(RIGHT_DATA)) { long role_id = filter.readLong("role_id"); long mp_id = filter.readLong("mp_id"); - if (role_id <= 0 || mp_id <= 0) return R.error("未指定角色或菜单!"); + if (role_id <= 0) return R.error("未指定角色!"); SwMap formData = data.readMap("form"); - + Set set = formData.readLongSet("menu"); + if (PubUtil.isEmpty(set)) return R.error("未选择菜单!"); Role role = RoleCache.getInstance().get(role_id); - MenuPlanItem item = MenuPlanCache.getInstance().getById(role.getSmpId(), mp_id); RoleRightContent rc = new RoleRightContent(role.getPrivilege()); - RoleRight right = rc.getRoleRight(item.getId()); - if (right == null) { - right = new RoleRight(); - right.setId(item.getId()); - right.setMenuId(item.getMenu()); - right.setMenu(1); + for (Long menu_id : set) { + MenuPlanItem item = MenuPlanCache.getInstance().getById(role.getSmpId(), menu_id); + RoleRight right = rc.getRoleRight(item.getId()); + if (right == null) { + right = new RoleRight(); + right.setId(item.getId()); + right.setMenuId(item.getMenu()); + right.setMenu(1); + } + rc.saveItem(right); + } + if (mp_id > 0) { + MenuPlanItem item = MenuPlanCache.getInstance().getById(role.getSmpId(), mp_id); + RoleRight right = rc.getRoleRight(item.getId()); + if (right == null) { + right = new RoleRight(); + right.setId(item.getId()); + right.setMenuId(item.getMenu()); + right.setMenu(1); + } + right.setFunc(formData.readStringSet("func")); + right.setData(formData.readListMap("data")); + right.setField(MenuCache.getInstance().get(item.getMenu()).getRightSet(SwEnum.MenuRightType.FIELD.value), formData.readStringSet("write"), formData.readStringSet("read")); + rc.saveItem(right); } - right.setFunc(formData.readStringSet("func")); - right.setData(formData.readListMap("data")); - right.setField(MenuCache.getInstance().get(item.getMenu()).getRightSet(SwEnum.MenuRightType.FIELD.value), formData.readStringSet("write"), formData.readStringSet("read")); - - rc.saveItem(right); role.setPrivilege(rc.toContentStr()); - DbEngine.getInstance().findDao(Role.ENTITY_NAME).updateEntity(role); RoleCache.getInstance().put(role); return R.success(DynRetBean.createBean(formData)); @@ -107,14 +120,18 @@ public class RoleHandler { @Override public SwMap loadData(SwMap filter, PageDataset pageDataSet) { if (pageDataSet.name.equals(RIGHT_DATA)) { + SwMap bean = new SwMap(); long role_id = filter.readLong("role_id"); long mp_id = filter.readLong("mp_id"); - if (role_id <= 0 || mp_id <= 0) return new SwMap(); + if (role_id <= 0) return bean; Role role = RoleCache.getInstance().get(role_id); - MenuPlanItem item = MenuPlanCache.getInstance().getById(role.getSmpId(), mp_id); - if (item == null) return new SwMap(); RoleRightContent rc = new RoleRightContent(role.getPrivilege()); - SwMap bean = new SwMap(); + if (mp_id <= 0) { + bean.put("menu", rc.getMenuRight()); + return bean; + } + MenuPlanItem item = MenuPlanCache.getInstance().getById(role.getSmpId(), mp_id); + if (item == null) return bean; bean.put("func", rc.getFuncRight(item.getId())); bean.put("read", rc.getFieldRight(item.getId(), 1)); bean.put("write", rc.getFieldRight(item.getId(), 2)); diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/user/role/RoleRightContent.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/user/role/RoleRightContent.java index 17233c4..255d909 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/user/role/RoleRightContent.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/user/role/RoleRightContent.java @@ -57,6 +57,15 @@ public class RoleRightContent { return PubUtil.getSqlInIds(right.getRightFunc()); } + public String getMenuRight() { + if (map.size() == 0) return ""; + Set menus = new HashSet<>(); + map.values().forEach(roleRight -> { + if (roleRight.getMenu() == 1) menus.add(roleRight.getId() + ""); + }); + return PubUtil.getSqlInIds(menus); + } + public String getFieldRight(long key, int type) { RoleRight right = getRoleRight(key); if (right == null) return ""; diff --git a/smtweb-framework/bpm/src/main/resources/static/event/bpm/sys/user/role/roleRight.js b/smtweb-framework/bpm/src/main/resources/static/event/bpm/sys/user/role/roleRight.js index df51ca5..ce17ef3 100644 --- a/smtweb-framework/bpm/src/main/resources/static/event/bpm/sys/user/role/roleRight.js +++ b/smtweb-framework/bpm/src/main/resources/static/event/bpm/sys/user/role/roleRight.js @@ -11,15 +11,9 @@ window.$swEvent.setup("bpm.sys.user.role.roleRight", { const onBeforeSave = () => { $model.rightData.setFormVal("data", $model.roleDataList.data.list.rows); }; - const onRoleSelect = (row) => { - if (this.temp_mp_id !== row["srl_id"]) { - $model.menuData.setFormVal("mp_id", ""); - } - this.temp_mp_id = row["srl_id"]; - } + return { onBeforeSave, - onRoleSelect, } } });