diff --git a/Pinnacle/src/main/java/com/cfive/pinnacle/service/permission/impl/RoleServiceImpl.java b/Pinnacle/src/main/java/com/cfive/pinnacle/service/permission/impl/RoleServiceImpl.java
index 2f1741e..ecbbc56 100644
--- a/Pinnacle/src/main/java/com/cfive/pinnacle/service/permission/impl/RoleServiceImpl.java
+++ b/Pinnacle/src/main/java/com/cfive/pinnacle/service/permission/impl/RoleServiceImpl.java
@@ -1,8 +1,10 @@
package com.cfive.pinnacle.service.permission.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.cfive.pinnacle.entity.permission.Power;
import com.cfive.pinnacle.entity.permission.Role;
import com.cfive.pinnacle.entity.permission.PowerRole;
+import com.cfive.pinnacle.exception.DataValidationFailedException;
import com.cfive.pinnacle.mapper.permission.RoleMapper;
import com.cfive.pinnacle.mapper.permission.PowerRoleMapper;
import com.cfive.pinnacle.service.permission.IRoleService;
@@ -13,6 +15,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.util.HashSet;
import java.util.List;
+import java.util.Set;
/**
*
@@ -51,6 +54,8 @@ public class RoleServiceImpl extends ServiceImpl implements IR
@Override
@Transactional
public boolean addRole(Role role) {
+ handlePower(role);
+
if (roleMapper.insert(role) == 1) {
role.getPowers().forEach(power -> {
PowerRole powerRole = new PowerRole();
@@ -69,6 +74,7 @@ public class RoleServiceImpl extends ServiceImpl implements IR
@Override
@Transactional
public boolean modifyRole(Role role) {
+ handlePower(role);
roleMapper.updateById(role);
Role originalRole = getRole(role.getId());
HashSet newPowerIds = new HashSet<>();
@@ -97,4 +103,20 @@ public class RoleServiceImpl extends ServiceImpl implements IR
});
return true;
}
+
+ private void handlePower(Role role) {
+ List powers = role.getPowers();
+ Set elementIds = new HashSet<>();
+ Set menuIds = new HashSet<>();
+ powers.forEach(power -> {
+ Long powerId = power.getId();
+ if (powerId % 100 == 0) {
+ throw new DataValidationFailedException("Illegal data");
+ }
+ elementIds.add(powerId - powerId % 100);
+ menuIds.add(powerId - powerId % 10000);
+ });
+ elementIds.forEach(elementId -> powers.add(new Power(elementId, 2L)));
+ menuIds.forEach(menuId -> powers.add(new Power(menuId, 1L)));
+ }
}
diff --git a/sql/Insert.sql b/sql/Insert.sql
index 920e56c..49585e9 100644
--- a/sql/Insert.sql
+++ b/sql/Insert.sql
@@ -187,28 +187,28 @@ begin;
insert into t_power(id, type_id)
values (3020101, 3);
insert into t_operation(id, name, code, power_id, element_id, parent_id)
-VALUES (3020101, '获取所有公告', 'notice:manage:get', id, 3030100, null);
+VALUES (3020101, '获取所有公告', 'notice:manage:get', id, 3020100, null);
commit;
begin;
insert into t_power(id, type_id)
values (3020102, 3);
insert into t_operation(id, name, code, power_id, element_id, parent_id)
-VALUES (3020102, '发布公告', 'notice:manage:add', id, 3030100, null);
+VALUES (3020102, '发布公告', 'notice:manage:add', id, 3020100, null);
commit;
begin;
insert into t_power(id, type_id)
values (3020103, 3);
insert into t_operation(id, name, code, power_id, element_id, parent_id)
-VALUES (3020103, '删除公告', 'notice:manage:delete', id, 3030100, null);
+VALUES (3020103, '删除公告', 'notice:manage:delete', id, 3020100, null);
commit;
begin;
insert into t_power(id, type_id)
values (3020104, 3);
insert into t_operation(id, name, code, power_id, element_id, parent_id)
-VALUES (3020104, '修改公告', 'notice:manage:modify', id, 3030100, null);
+VALUES (3020104, '修改公告', 'notice:manage:modify', id, 3020100, null);
commit;
begin;
diff --git a/ui/src/pages/power/RoleManagement.vue b/ui/src/pages/power/RoleManagement.vue
index ef17384..b813bca 100644
--- a/ui/src/pages/power/RoleManagement.vue
+++ b/ui/src/pages/power/RoleManagement.vue
@@ -12,7 +12,7 @@
- 添加
+ 添加
+
+
+
-
-
-
提交
+ >提交
+
取消
@@ -204,6 +204,11 @@ export default {
}
menu.children.push(element)
}
+ for (const menu of menuList) {
+ if (menu.children.length === 1) {
+ menu.children = menu.children[0].children
+ }
+ }
this.powerTree = data.menuList
this.dialogLoading = false
} else {
@@ -215,10 +220,12 @@ export default {
})
},
handleSelectedPowerChange(data, checked, indeterminate) {
- if (checked || indeterminate) {
- this.roleForm.selectedPower.add(data.powerId)
- } else {
- this.roleForm.selectedPower.delete(data.powerId)
+ if (data.children === undefined) {
+ if (checked || indeterminate) {
+ this.roleForm.selectedPower.add(data.powerId)
+ } else {
+ this.roleForm.selectedPower.delete(data.powerId)
+ }
}
},
handleAddBtn() {
@@ -235,12 +242,6 @@ export default {
this.defaultSelectedPower.push(operation.powerId)
this.roleForm.selectedPower.add(operation.powerId)
}
- for (const element of row.elements) {
- this.roleForm.selectedPower.add(element.powerId)
- }
- for (const menu of row.menus) {
- this.roleForm.selectedPower.add(menu.powerId)
- }
this.isAddNew = false
this.dialogVisible = true
},