Commit be2ba5be283bd085ad65ba2a0029c4d8021e28e3

Authored by YunaiV
1 parent 2651f9bc

完成角色的授权的功能

ruoyi-system/src/main/java/com/ruoyi/system/service/ISysMenuService.java
... ... @@ -8,14 +8,14 @@ import com.ruoyi.system.domain.vo.RouterVo;
8 8  
9 9 /**
10 10 * 菜单 业务层
11   - *
  11 + *
12 12 * @author ruoyi
13 13 */
14 14 public interface ISysMenuService
15 15 {
16 16 /**
17 17 * 根据用户查询系统菜单列表
18   - *
  18 + *
19 19 * @param userId 用户ID
20 20 * @return 菜单列表
21 21 */
... ... @@ -23,7 +23,7 @@ public interface ISysMenuService
23 23  
24 24 /**
25 25 * 根据用户查询系统菜单列表
26   - *
  26 + *
27 27 * @param menu 菜单信息
28 28 * @param userId 用户ID
29 29 * @return 菜单列表
... ... @@ -32,105 +32,18 @@ public interface ISysMenuService
32 32  
33 33 /**
34 34 * 根据用户ID查询权限
35   - *
  35 + *
36 36 * @param userId 用户ID
37 37 * @return 权限列表
38 38 */
39 39 public Set<String> selectMenuPermsByUserId(Long userId);
40 40  
41 41 /**
42   - * 根据用户ID查询菜单树信息
43   - *
44   - * @param userId 用户ID
45   - * @return 菜单列表
46   - */
47   - public List<SysMenu> selectMenuTreeByUserId(Long userId);
48   -
49   - /**
50   - * 根据角色ID查询菜单树信息
51   - *
52   - * @param roleId 角色ID
53   - * @return 选中菜单列表
54   - */
55   - public List<Integer> selectMenuListByRoleId(Long roleId);
56   -
57   - /**
58   - * 构建前端路由所需要的菜单
59   - *
60   - * @param menus 菜单列表
61   - * @return 路由列表
62   - */
63   - public List<RouterVo> buildMenus(List<SysMenu> menus);
64   -
65   - /**
66   - * 构建前端所需要树结构
67   - *
68   - * @param menus 菜单列表
69   - * @return 树结构列表
70   - */
71   - public List<SysMenu> buildMenuTree(List<SysMenu> menus);
72   -
73   - /**
74   - * 构建前端所需要下拉树结构
75   - *
76   - * @param menus 菜单列表
77   - * @return 下拉树结构列表
78   - */
79   - public List<TreeSelect> buildMenuTreeSelect(List<SysMenu> menus);
80   -
81   - /**
82   - * 根据菜单ID查询信息
83   - *
84   - * @param menuId 菜单ID
85   - * @return 菜单信息
86   - */
87   - public SysMenu selectMenuById(Long menuId);
88   -
89   - /**
90   - * 是否存在菜单子节点
91   - *
92   - * @param menuId 菜单ID
93   - * @return 结果 true 存在 false 不存在
94   - */
95   - public boolean hasChildByMenuId(Long menuId);
96   -
97   - /**
98 42 * 查询菜单是否存在角色
99   - *
  43 + *
100 44 * @param menuId 菜单ID
101 45 * @return 结果 true 存在 false 不存在
102 46 */
103 47 public boolean checkMenuExistRole(Long menuId);
104 48  
105   - /**
106   - * 新增保存菜单信息
107   - *
108   - * @param menu 菜单信息
109   - * @return 结果
110   - */
111   - public int insertMenu(SysMenu menu);
112   -
113   - /**
114   - * 修改保存菜单信息
115   - *
116   - * @param menu 菜单信息
117   - * @return 结果
118   - */
119   - public int updateMenu(SysMenu menu);
120   -
121   - /**
122   - * 删除菜单管理信息
123   - *
124   - * @param menuId 菜单ID
125   - * @return 结果
126   - */
127   - public int deleteMenuById(Long menuId);
128   -
129   - /**
130   - * 校验菜单名称是否唯一
131   - *
132   - * @param menu 菜单信息
133   - * @return 结果
134   - */
135   - public String checkMenuNameUnique(SysMenu menu);
136 49 }
... ...
ruoyi-system/src/main/java/com/ruoyi/system/service/ISysRoleService.java
... ... @@ -2,130 +2,30 @@ package com.ruoyi.system.service;
2 2  
3 3 import java.util.List;
4 4 import java.util.Set;
  5 +
5 6 import com.ruoyi.common.core.domain.entity.SysRole;
6 7  
7 8 /**
8 9 * 角色业务层
9   - *
  10 + *
10 11 * @author ruoyi
11 12 */
12   -public interface ISysRoleService
13   -{
14   - /**
15   - * 根据条件分页查询角色数据
16   - *
17   - * @param role 角色信息
18   - * @return 角色数据集合信息
19   - */
20   - public List<SysRole> selectRoleList(SysRole role);
  13 +public interface ISysRoleService {
21 14  
22 15 /**
23 16 * 根据用户ID查询角色
24   - *
  17 + *
25 18 * @param userId 用户ID
26 19 * @return 权限列表
27 20 */
28 21 public Set<String> selectRolePermissionByUserId(Long userId);
29 22  
30 23 /**
31   - * 查询所有角色
32   - *
33   - * @return 角色列表
34   - */
35   - public List<SysRole> selectRoleAll();
36   -
37   - /**
38   - * 根据用户ID获取角色选择框列表
39   - *
40   - * @param userId 用户ID
41   - * @return 选中角色ID列表
42   - */
43   - public List<Integer> selectRoleListByUserId(Long userId);
44   -
45   - /**
46   - * 通过角色ID查询角色
47   - *
48   - * @param roleId 角色ID
49   - * @return 角色对象信息
50   - */
51   - public SysRole selectRoleById(Long roleId);
52   -
53   - /**
54   - * 校验角色名称是否唯一
55   - *
56   - * @param role 角色信息
57   - * @return 结果
58   - */
59   - public String checkRoleNameUnique(SysRole role);
60   -
61   - /**
62   - * 校验角色权限是否唯一
63   - *
64   - * @param role 角色信息
65   - * @return 结果
66   - */
67   - public String checkRoleKeyUnique(SysRole role);
68   -
69   - /**
70   - * 校验角色是否允许操作
71   - *
72   - * @param role 角色信息
73   - */
74   - public void checkRoleAllowed(SysRole role);
75   -
76   - /**
77   - * 通过角色ID查询角色使用数量
78   - *
79   - * @param roleId 角色ID
80   - * @return 结果
81   - */
82   - public int countUserRoleByRoleId(Long roleId);
83   -
84   - /**
85   - * 新增保存角色信息
86   - *
87   - * @param role 角色信息
88   - * @return 结果
89   - */
90   - public int insertRole(SysRole role);
91   -
92   - /**
93   - * 修改保存角色信息
94   - *
95   - * @param role 角色信息
96   - * @return 结果
97   - */
98   - public int updateRole(SysRole role);
99   -
100   - /**
101   - * 修改角色状态
102   - *
103   - * @param role 角色信息
104   - * @return 结果
105   - */
106   - public int updateRoleStatus(SysRole role);
107   -
108   - /**
109 24 * 修改数据权限信息
110   - *
  25 + *
111 26 * @param role 角色信息
112 27 * @return 结果
113 28 */
114 29 public int authDataScope(SysRole role);
115 30  
116   - /**
117   - * 通过角色ID删除角色
118   - *
119   - * @param roleId 角色ID
120   - * @return 结果
121   - */
122   - public int deleteRoleById(Long roleId);
123   -
124   - /**
125   - * 批量删除角色信息
126   - *
127   - * @param roleIds 需要删除的角色ID
128   - * @return 结果
129   - */
130   - public int deleteRoleByIds(Long[] roleIds);
131 31 }
... ...
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
... ... @@ -32,7 +32,6 @@ import com.ruoyi.system.service.ISysMenuService;
32 32 */
33 33 @Service
34 34 public class SysMenuServiceImpl implements ISysMenuService {
35   - public static final String PREMISSION_STRING = "perms[\"{0}\"]";
36 35  
37 36 /**
38 37 * 根据用户查询系统菜单列表
... ... @@ -99,29 +98,4 @@ public class SysMenuServiceImpl implements ISysMenuService {
99 98 return getChildPerms(menus, 0);
100 99 }
101 100  
102   - /**
103   - * 根据角色ID查询菜单树信息
104   - *
105   - * @param roleId 角色ID
106   - * @return 选中菜单列表
107   - */
108   - @Override
109   - public List<Integer> selectMenuListByRoleId(Long roleId) {
110   - SysRole role = roleMapper.selectRoleById(roleId);
111   - return menuMapper.selectMenuListByRoleId(roleId, role.isMenuCheckStrictly());
112   - }
113   -
114   - /**
115   - * 查询菜单使用数量
116   - *
117   - * @param menuId 菜单ID
118   - * @return 结果
119   - */
120   - @Override
121   - public boolean checkMenuExistRole(Long menuId) {
122   - int result = roleMenuMapper.checkMenuExistRole(menuId);
123   - return result > 0 ? true : false;
124   - }
125   -
126   -
127 101 }
... ...
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java
... ... @@ -5,6 +5,7 @@ import java.util.Arrays;
5 5 import java.util.HashSet;
6 6 import java.util.List;
7 7 import java.util.Set;
  8 +
8 9 import org.springframework.beans.factory.annotation.Autowired;
9 10 import org.springframework.stereotype.Service;
10 11 import org.springframework.transaction.annotation.Transactional;
... ... @@ -28,19 +29,7 @@ import com.ruoyi.system.service.ISysRoleService;
28 29 * @author ruoyi
29 30 */
30 31 @Service
31   -public class SysRoleServiceImpl implements ISysRoleService
32   -{
33   - @Autowired
34   - private SysRoleMapper roleMapper;
35   -
36   - @Autowired
37   - private SysRoleMenuMapper roleMenuMapper;
38   -
39   - @Autowired
40   - private SysUserRoleMapper userRoleMapper;
41   -
42   - @Autowired
43   - private SysRoleDeptMapper roleDeptMapper;
  32 +public class SysRoleServiceImpl implements ISysRoleService {
44 33  
45 34 /**
46 35 * 根据条件分页查询角色数据
... ... @@ -50,86 +39,11 @@ public class SysRoleServiceImpl implements ISysRoleService
50 39 */
51 40 @Override
52 41 @DataScope(deptAlias = "d")
53   - public List<SysRole> selectRoleList(SysRole role)
54   - {
  42 + public List<SysRole> selectRoleList(SysRole role) {
55 43 return roleMapper.selectRoleList(role);
56 44 }
57 45  
58 46 /**
59   - * 根据用户ID查询权限
60   - *
61   - * @param userId 用户ID
62   - * @return 权限列表
63   - */
64   - @Override
65   - public Set<String> selectRolePermissionByUserId(Long userId)
66   - {
67   - List<SysRole> perms = roleMapper.selectRolePermissionByUserId(userId);
68   - Set<String> permsSet = new HashSet<>();
69   - for (SysRole perm : perms)
70   - {
71   - if (StringUtils.isNotNull(perm))
72   - {
73   - permsSet.addAll(Arrays.asList(perm.getRoleKey().trim().split(",")));
74   - }
75   - }
76   - return permsSet;
77   - }
78   -
79   - /**
80   - * 查询所有角色
81   - *
82   - * @return 角色列表
83   - */
84   - @Override
85   - public List<SysRole> selectRoleAll()
86   - {
87   - return SpringUtils.getAopProxy(this).selectRoleList(new SysRole());
88   - }
89   -
90   - /**
91   - * 根据用户ID获取角色选择框列表
92   - *
93   - * @param userId 用户ID
94   - * @return 选中角色ID列表
95   - */
96   - @Override
97   - public List<Integer> selectRoleListByUserId(Long userId)
98   - {
99   - return roleMapper.selectRoleListByUserId(userId);
100   - }
101   -
102   - /**
103   - * 通过角色ID查询角色
104   - *
105   - * @param roleId 角色ID
106   - * @return 角色对象信息
107   - */
108   - @Override
109   - public SysRole selectRoleById(Long roleId)
110   - {
111   - return roleMapper.selectRoleById(roleId);
112   - }
113   -
114   - /**
115   - * 校验角色名称是否唯一
116   - *
117   - * @param role 角色信息
118   - * @return 结果
119   - */
120   - @Override
121   - public String checkRoleNameUnique(SysRole role)
122   - {
123   - Long roleId = StringUtils.isNull(role.getRoleId()) ? -1L : role.getRoleId();
124   - SysRole info = roleMapper.checkRoleNameUnique(role.getRoleName());
125   - if (StringUtils.isNotNull(info) && info.getRoleId().longValue() != roleId.longValue())
126   - {
127   - return UserConstants.NOT_UNIQUE;
128   - }
129   - return UserConstants.UNIQUE;
130   - }
131   -
132   - /**
133 47 * 修改数据权限信息
134 48 *
135 49 * @param role 角色信息
... ... @@ -137,8 +51,7 @@ public class SysRoleServiceImpl implements ISysRoleService
137 51 */
138 52 @Override
139 53 @Transactional
140   - public int authDataScope(SysRole role)
141   - {
  54 + public int authDataScope(SysRole role) {
142 55 // 修改角色信息
143 56 roleMapper.updateRole(role);
144 57 // 删除角色与部门关联
... ... @@ -148,71 +61,6 @@ public class SysRoleServiceImpl implements ISysRoleService
148 61 }
149 62  
150 63 /**
151   - * 新增角色菜单信息
152   - *
153   - * @param role 角色对象
154   - */
155   - public int insertRoleMenu(SysRole role)
156   - {
157   - int rows = 1;
158   - // 新增用户与角色管理
159   - List<SysRoleMenu> list = new ArrayList<SysRoleMenu>();
160   - for (Long menuId : role.getMenuIds())
161   - {
162   - SysRoleMenu rm = new SysRoleMenu();
163   - rm.setRoleId(role.getRoleId());
164   - rm.setMenuId(menuId);
165   - list.add(rm);
166   - }
167   - if (list.size() > 0)
168   - {
169   - rows = roleMenuMapper.batchRoleMenu(list);
170   - }
171   - return rows;
172   - }
173   -
174   - /**
175   - * 新增角色部门信息(数据权限)
176   - *
177   - * @param role 角色对象
178   - */
179   - public int insertRoleDept(SysRole role)
180   - {
181   - int rows = 1;
182   - // 新增角色与部门(数据权限)管理
183   - List<SysRoleDept> list = new ArrayList<SysRoleDept>();
184   - for (Long deptId : role.getDeptIds())
185   - {
186   - SysRoleDept rd = new SysRoleDept();
187   - rd.setRoleId(role.getRoleId());
188   - rd.setDeptId(deptId);
189   - list.add(rd);
190   - }
191   - if (list.size() > 0)
192   - {
193   - rows = roleDeptMapper.batchRoleDept(list);
194   - }
195   - return rows;
196   - }
197   -
198   - /**
199   - * 通过角色ID删除角色
200   - *
201   - * @param roleId 角色ID
202   - * @return 结果
203   - */
204   - @Override
205   - @Transactional
206   - public int deleteRoleById(Long roleId)
207   - {
208   - // 删除角色与菜单关联
209   - roleMenuMapper.deleteRoleMenuByRoleId(roleId);
210   - // 删除角色与部门关联
211   - roleDeptMapper.deleteRoleDeptByRoleId(roleId);
212   - return roleMapper.deleteRoleById(roleId);
213   - }
214   -
215   - /**
216 64 * 批量删除角色信息
217 65 *
218 66 * @param roleIds 需要删除的角色ID
... ... @@ -220,14 +68,11 @@ public class SysRoleServiceImpl implements ISysRoleService
220 68 */
221 69 @Override
222 70 @Transactional
223   - public int deleteRoleByIds(Long[] roleIds)
224   - {
225   - for (Long roleId : roleIds)
226   - {
  71 + public int deleteRoleByIds(Long[] roleIds) {
  72 + for (Long roleId : roleIds) {
227 73 checkRoleAllowed(new SysRole(roleId));
228 74 SysRole role = selectRoleById(roleId);
229   - if (countUserRoleByRoleId(roleId) > 0)
230   - {
  75 + if (countUserRoleByRoleId(roleId) > 0) {
231 76 throw new CustomException(String.format("%1$s已分配,不能删除", role.getRoleName()));
232 77 }
233 78 }
... ...
ruoyi-ui/src/views/system/menu/index.vue
... ... @@ -45,7 +45,7 @@
45 45 row-key="id"
46 46 :tree-props="{children: 'children', hasChildren: 'hasChildren'}"
47 47 >
48   - <el-table-column prop="name" label="菜单名称" :show-overflow-tooltip="true" width="160"></el-table-column>
  48 + <el-table-column prop="name" label="菜单名称" :show-overflow-tooltip="true" width="200"></el-table-column>
49 49 <el-table-column prop="icon" label="图标" align="center" width="100">
50 50 <template slot-scope="scope">
51 51 <svg-icon :icon-class="scope.row.icon" />
... ... @@ -156,7 +156,7 @@
156 156 </el-col>
157 157 <el-col :span="12">
158 158 <el-form-item v-if="form.type != '1'" label="权限标识">
159   - <el-input v-model="form.perms" placeholder="请权限标识" maxlength="50" />
  159 + <el-input v-model="form.permission" placeholder="请权限标识" maxlength="50" />
160 160 </el-form-item>
161 161 </el-col>
162 162 <el-col :span="12">
... ...
ruoyi-ui/src/views/system/role/index.vue
... ... @@ -112,14 +112,14 @@
112 112 type="text"
113 113 icon="el-icon-circle-check"
114 114 @click="handleMenu(scope.row)"
115   - v-hasPermi="['system:role:edit']"
  115 + v-hasPermi="['system:permission:assign-role-menu']"
116 116 >菜单权限</el-button>
117 117 <el-button
118 118 size="mini"
119 119 type="text"
120 120 icon="el-icon-circle-check"
121 121 @click="handleDataScope(scope.row)"
122   - v-hasPermi="['system:role:edit']"
  122 + v-hasPermi="['system:permission:assign-role-data-scope']"
123 123 >数据权限</el-button>
124 124 <el-button
125 125 size="mini"
... ... @@ -214,7 +214,6 @@
214 214 <el-input v-model="form.code" :disabled="true" />
215 215 </el-form-item>
216 216 <el-form-item label="菜单权限">
217   - <el-checkbox v-model="!form.menuCheckStrictly" @change="handleCheckedTreeConnect($event, 'menu')">父子联动(选中父节点,自动选择子节点)</el-checkbox>
218 217 <el-checkbox v-model="menuExpand" @change="handleCheckedTreeExpand($event, 'menu')">展开/折叠</el-checkbox>
219 218 <el-checkbox v-model="menuNodeAll" @change="handleCheckedTreeNodeAll($event, 'menu')">全选/全不选</el-checkbox>
220 219 <el-tree
... ... @@ -356,15 +355,6 @@ export default {
356 355 this.deptOptions = response.data;
357 356 });
358 357 },
359   - // 所有菜单节点数据
360   - getMenuAllCheckedKeys() {
361   - // 目前被选中的菜单节点
362   - let checkedKeys = this.$refs.menu.getCheckedKeys();
363   - // 半选中的菜单节点
364   - let halfCheckedKeys = this.$refs.menu.getHalfCheckedKeys();
365   - checkedKeys.unshift.apply(checkedKeys, halfCheckedKeys);
366   - return checkedKeys;
367   - },
368 358 // 所有部门节点数据
369 359 getDeptAllCheckedKeys() {
370 360 // 目前被选中的部门节点
... ... @@ -434,7 +424,6 @@ export default {
434 424 sort: 0,
435 425 deptIds: [],
436 426 menuIds: [],
437   - menuCheckStrictly: false, // 非严格,菜单弹窗的父子级联动
438 427 deptCheckStrictly: false,
439 428 remark: undefined
440 429 };
... ... @@ -515,12 +504,8 @@ export default {
515 504 });
516 505 // 获得角色拥有的菜单集合
517 506 listRoleMenus(id).then(response => {
518   - // 设置为严格,避免设置父节点自动选中子节点,解决半选中问题
519   - // this.form.menuCheckStrictly = true
520 507 // 设置选中
521   - this.$refs.menu.setCheckedKeys(response.data, false);
522   - // 设置为非严格,继续使用半选中
523   - // this.form.menuCheckStrictly = false
  508 + this.$refs.menu.setCheckedKeys(response.data, true, false);
524 509 })
525 510 },
526 511 /** 分配数据权限操作 */
... ... @@ -575,7 +560,7 @@ export default {
575 560 if (this.form.id !== undefined) {
576 561 assignRoleMenu({
577 562 roleId: this.form.id,
578   - menuIds: this.getMenuAllCheckedKeys()
  563 + menuIds: this.$refs.menu.getCheckedKeys(true)
579 564 }).then(response => {
580 565 this.msgSuccess("修改成功");
581 566 this.openMenu = false;
... ...
src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/SysPermissionController.java
... ... @@ -59,4 +59,6 @@ public class SysPermissionController {
59 59 // return success(true);
60 60 // }
61 61  
  62 +// system:permission:assign-role-data-scope TODO
  63 +
62 64 }
... ...