Commit 1bfaa2c967859a946460b9ff397d3b1f827d0173

Authored by YunaiV
1 parent 04feb57e

完成 Role 模块的迁移

Showing 26 changed files with 151 additions and 361 deletions
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysMenuMapper.java
1 package com.ruoyi.system.mapper; 1 package com.ruoyi.system.mapper;
2 2
3 import java.util.List; 3 import java.util.List;
  4 +
4 import org.apache.ibatis.annotations.Param; 5 import org.apache.ibatis.annotations.Param;
5 import com.ruoyi.common.core.domain.entity.SysMenu; 6 import com.ruoyi.common.core.domain.entity.SysMenu;
6 7
@@ -9,22 +10,7 @@ import com.ruoyi.common.core.domain.entity.SysMenu; @@ -9,22 +10,7 @@ import com.ruoyi.common.core.domain.entity.SysMenu;
9 * 10 *
10 * @author ruoyi 11 * @author ruoyi
11 */ 12 */
12 -public interface SysMenuMapper  
13 -{  
14 - /**  
15 - * 查询系统菜单列表  
16 - *  
17 - * @param menu 菜单信息  
18 - * @return 菜单列表  
19 - */  
20 - public List<SysMenu> selectMenuList(SysMenu menu);  
21 -  
22 - /**  
23 - * 根据用户所有权限  
24 - *  
25 - * @return 权限列表  
26 - */  
27 - public List<String> selectMenuPerms(); 13 +public interface SysMenuMapper {
28 14
29 /** 15 /**
30 * 根据用户查询系统菜单列表 16 * 根据用户查询系统菜单列表
@@ -60,7 +46,7 @@ public interface SysMenuMapper @@ -60,7 +46,7 @@ public interface SysMenuMapper
60 /** 46 /**
61 * 根据角色ID查询菜单树信息 47 * 根据角色ID查询菜单树信息
62 * 48 *
63 - * @param roleId 角色ID 49 + * @param roleId 角色ID
64 * @param menuCheckStrictly 菜单树选择项是否关联显示 50 * @param menuCheckStrictly 菜单树选择项是否关联显示
65 * @return 选中菜单列表 51 * @return 选中菜单列表
66 */ 52 */
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMapper.java
1 package com.ruoyi.system.mapper; 1 package com.ruoyi.system.mapper;
2 2
3 import java.util.List; 3 import java.util.List;
  4 +
4 import com.ruoyi.common.core.domain.entity.SysRole; 5 import com.ruoyi.common.core.domain.entity.SysRole;
5 6
6 /** 7 /**
7 * 角色表 数据层 8 * 角色表 数据层
8 - * 9 + *
9 * @author ruoyi 10 * @author ruoyi
10 */ 11 */
11 -public interface SysRoleMapper  
12 -{ 12 +public interface SysRoleMapper {
  13 +
13 /** 14 /**
14 * 根据条件分页查询角色数据 15 * 根据条件分页查询角色数据
15 - * 16 + *
16 * @param role 角色信息 17 * @param role 角色信息
17 * @return 角色数据集合信息 18 * @return 角色数据集合信息
18 */ 19 */
@@ -20,88 +21,26 @@ public interface SysRoleMapper @@ -20,88 +21,26 @@ public interface SysRoleMapper
20 21
21 /** 22 /**
22 * 根据用户ID查询角色 23 * 根据用户ID查询角色
23 - * 24 + *
24 * @param userId 用户ID 25 * @param userId 用户ID
25 * @return 角色列表 26 * @return 角色列表
26 */ 27 */
27 public List<SysRole> selectRolePermissionByUserId(Long userId); 28 public List<SysRole> selectRolePermissionByUserId(Long userId);
28 29
29 /** 30 /**
30 - * 查询所有角色  
31 - *  
32 - * @return 角色列表  
33 - */  
34 - public List<SysRole> selectRoleAll();  
35 -  
36 - /**  
37 * 根据用户ID获取角色选择框列表 31 * 根据用户ID获取角色选择框列表
38 - * 32 + *
39 * @param userId 用户ID 33 * @param userId 用户ID
40 * @return 选中角色ID列表 34 * @return 选中角色ID列表
41 */ 35 */
42 public List<Integer> selectRoleListByUserId(Long userId); 36 public List<Integer> selectRoleListByUserId(Long userId);
43 37
44 /** 38 /**
45 - * 通过角色ID查询角色  
46 - *  
47 - * @param roleId 角色ID  
48 - * @return 角色对象信息  
49 - */  
50 - public SysRole selectRoleById(Long roleId);  
51 -  
52 - /**  
53 * 根据用户ID查询角色 39 * 根据用户ID查询角色
54 - * 40 + *
55 * @param userName 用户名 41 * @param userName 用户名
56 * @return 角色列表 42 * @return 角色列表
57 */ 43 */
58 public List<SysRole> selectRolesByUserName(String userName); 44 public List<SysRole> selectRolesByUserName(String userName);
59 45
60 - /**  
61 - * 校验角色名称是否唯一  
62 - *  
63 - * @param roleName 角色名称  
64 - * @return 角色信息  
65 - */  
66 - public SysRole checkRoleNameUnique(String roleName);  
67 -  
68 - /**  
69 - * 校验角色权限是否唯一  
70 - *  
71 - * @param roleKey 角色权限  
72 - * @return 角色信息  
73 - */  
74 - public SysRole checkRoleKeyUnique(String roleKey);  
75 -  
76 - /**  
77 - * 修改角色信息  
78 - *  
79 - * @param role 角色信息  
80 - * @return 结果  
81 - */  
82 - public int updateRole(SysRole role);  
83 -  
84 - /**  
85 - * 新增角色信息  
86 - *  
87 - * @param role 角色信息  
88 - * @return 结果  
89 - */  
90 - public int insertRole(SysRole role);  
91 -  
92 - /**  
93 - * 通过角色ID删除角色  
94 - *  
95 - * @param roleId 角色ID  
96 - * @return 结果  
97 - */  
98 - public int deleteRoleById(Long roleId);  
99 -  
100 - /**  
101 - * 批量删除角色信息  
102 - *  
103 - * @param roleIds 需要删除的角色ID  
104 - * @return 结果  
105 - */  
106 - public int deleteRoleByIds(Long[] roleIds);  
107 } 46 }
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMenuMapper.java deleted
1 -package com.ruoyi.system.mapper;  
2 -  
3 -import java.util.List;  
4 -import com.ruoyi.system.domain.SysRoleMenu;  
5 -  
6 -/**  
7 - * 角色与菜单关联表 数据层  
8 - *  
9 - * @author ruoyi  
10 - */  
11 -public interface SysRoleMenuMapper  
12 -{  
13 - /**  
14 - * 查询菜单使用数量  
15 - *  
16 - * @param menuId 菜单ID  
17 - * @return 结果  
18 - */  
19 - public int checkMenuExistRole(Long menuId);  
20 -  
21 - /**  
22 - * 通过角色ID删除角色和菜单关联  
23 - *  
24 - * @param roleId 角色ID  
25 - * @return 结果  
26 - */  
27 - public int deleteRoleMenuByRoleId(Long roleId);  
28 -  
29 - /**  
30 - * 批量删除角色菜单关联信息  
31 - *  
32 - * @param ids 需要删除的数据ID  
33 - * @return 结果  
34 - */  
35 - public int deleteRoleMenu(Long[] ids);  
36 -  
37 - /**  
38 - * 批量新增角色菜单信息  
39 - *  
40 - * @param roleMenuList 角色菜单列表  
41 - * @return 结果  
42 - */  
43 - public int batchRoleMenu(List<SysRoleMenu> roleMenuList);  
44 -}  
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserRoleMapper.java deleted
1 -package com.ruoyi.system.mapper;  
2 -  
3 -import java.util.List;  
4 -import org.apache.ibatis.annotations.Param;  
5 -import com.ruoyi.system.domain.SysUserRole;  
6 -  
7 -/**  
8 - * 用户与角色关联表 数据层  
9 - *  
10 - * @author ruoyi  
11 - */  
12 -public interface SysUserRoleMapper  
13 -{  
14 - /**  
15 - * 通过用户ID删除用户和角色关联  
16 - *  
17 - * @param userId 用户ID  
18 - * @return 结果  
19 - */  
20 - public int deleteUserRoleByUserId(Long userId);  
21 -  
22 - /**  
23 - * 批量删除用户和角色关联  
24 - *  
25 - * @param ids 需要删除的数据ID  
26 - * @return 结果  
27 - */  
28 - public int deleteUserRole(Long[] ids);  
29 -  
30 - /**  
31 - * 通过角色ID查询角色使用数量  
32 - *  
33 - * @param roleId 角色ID  
34 - * @return 结果  
35 - */  
36 - public int countUserRoleByRoleId(Long roleId);  
37 -  
38 - /**  
39 - * 批量新增用户角色信息  
40 - *  
41 - * @param userRoleList 用户角色列表  
42 - * @return 结果  
43 - */  
44 - public int batchUserRole(List<SysUserRole> userRoleList);  
45 -  
46 - /**  
47 - * 删除用户和角色关联信息  
48 - *  
49 - * @param userRole 用户和角色关联信息  
50 - * @return 结果  
51 - */  
52 - public int deleteUserRoleInfo(SysUserRole userRole);  
53 -  
54 - /**  
55 - * 批量取消授权用户角色  
56 - *  
57 - * @param roleId 角色ID  
58 - * @param userIds 需要删除的用户数据ID  
59 - * @return 结果  
60 - */  
61 - public int deleteUserRoleInfos(@Param("roleId") Long roleId, @Param("userIds") Long[] userIds);  
62 -}  
ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml
@@ -4,22 +4,6 @@ @@ -4,22 +4,6 @@
4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
5 <mapper namespace="com.ruoyi.system.mapper.SysMenuMapper"> 5 <mapper namespace="com.ruoyi.system.mapper.SysMenuMapper">
6 6
7 - <select id="selectMenuList" parameterType="SysMenu" resultMap="SysMenuResult">  
8 - <include refid="selectMenuVo"/>  
9 - <where>  
10 - <if test="menuName != null and menuName != ''">  
11 - AND menu_name like concat('%', #{menuName}, '%')  
12 - </if>  
13 - <if test="visible != null and visible != ''">  
14 - AND visible = #{visible}  
15 - </if>  
16 - <if test="status != null and status != ''">  
17 - AND status = #{status}  
18 - </if>  
19 - </where>  
20 - order by parent_id, order_num  
21 - </select>  
22 -  
23 <select id="selectMenuTreeAll" resultMap="SysMenuResult"> 7 <select id="selectMenuTreeAll" resultMap="SysMenuResult">
24 select distinct m.menu_id, m.parent_id, m.menu_name, m.path, m.component, m.visible, m.status, ifnull(m.perms,'') as perms, m.is_frame, m.is_cache, m.menu_type, m.icon, m.order_num, m.create_time 8 select distinct m.menu_id, m.parent_id, m.menu_name, m.path, m.component, m.visible, m.status, ifnull(m.perms,'') as perms, m.is_frame, m.is_cache, m.menu_type, m.icon, m.order_num, m.create_time
25 from sys_menu m where m.menu_type in ('M', 'C') and m.status = 0 9 from sys_menu m where m.menu_type in ('M', 'C') and m.status = 0
@@ -67,13 +51,6 @@ @@ -67,13 +51,6 @@
67 order by m.parent_id, m.order_num 51 order by m.parent_id, m.order_num
68 </select> 52 </select>
69 53
70 - <select id="selectMenuPerms" resultType="String">  
71 - select distinct m.perms  
72 - from sys_menu m  
73 - left join sys_role_menu rm on m.menu_id = rm.menu_id  
74 - left join sys_user_role ur on rm.role_id = ur.role_id  
75 - </select>  
76 -  
77 <select id="selectMenuPermsByUserId" parameterType="Long" resultType="String"> 54 <select id="selectMenuPermsByUserId" parameterType="Long" resultType="String">
78 select distinct m.perms 55 select distinct m.perms
79 from sys_menu m 56 from sys_menu m
@@ -83,13 +60,4 @@ @@ -83,13 +60,4 @@
83 where m.status = '0' and r.status = '0' and ur.user_id = #{userId} 60 where m.status = '0' and r.status = '0' and ur.user_id = #{userId}
84 </select> 61 </select>
85 62
86 - <select id="hasChildByMenuId" resultType="Integer">  
87 - select count(1) from sys_menu where parent_id = #{menuId}  
88 - </select>  
89 -  
90 - <select id="checkMenuNameUnique" parameterType="SysMenu" resultMap="SysMenuResult">  
91 - <include refid="selectMenuVo"/>  
92 - where menu_name=#{menuName} and parent_id = #{parentId} limit 1  
93 - </select>  
94 -  
95 </mapper> 63 </mapper>
ruoyi-system/src/main/resources/mapper/system/SysRoleMenuMapper.xml deleted
1 -<?xml version="1.0" encoding="UTF-8" ?>  
2 -<!DOCTYPE mapper  
3 -PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"  
4 -"http://mybatis.org/dtd/mybatis-3-mapper.dtd">  
5 -<mapper namespace="com.ruoyi.system.mapper.SysRoleMenuMapper">  
6 -  
7 - <resultMap type="SysRoleMenu" id="SysRoleMenuResult">  
8 - <result property="roleId" column="role_id" />  
9 - <result property="menuId" column="menu_id" />  
10 - </resultMap>  
11 -  
12 - <select id="checkMenuExistRole" resultType="Integer">  
13 - select count(1) from sys_role_menu where menu_id = #{menuId}  
14 - </select>  
15 -  
16 - <delete id="deleteRoleMenuByRoleId" parameterType="Long">  
17 - delete from sys_role_menu where role_id=#{roleId}  
18 - </delete>  
19 -  
20 - <delete id="deleteRoleMenu" parameterType="Long">  
21 - delete from sys_role_menu where role_id in  
22 - <foreach collection="array" item="roleId" open="(" separator="," close=")">  
23 - #{roleId}  
24 - </foreach>  
25 - </delete>  
26 -  
27 - <insert id="batchRoleMenu">  
28 - insert into sys_role_menu(role_id, menu_id) values  
29 - <foreach item="item" index="index" collection="list" separator=",">  
30 - (#{item.roleId},#{item.menuId})  
31 - </foreach>  
32 - </insert>  
33 -  
34 -</mapper>  
35 \ No newline at end of file 0 \ No newline at end of file
ruoyi-system/src/main/resources/mapper/system/SysUserRoleMapper.xml deleted
1 -<?xml version="1.0" encoding="UTF-8" ?>  
2 -<!DOCTYPE mapper  
3 -PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"  
4 -"http://mybatis.org/dtd/mybatis-3-mapper.dtd">  
5 -<mapper namespace="com.ruoyi.system.mapper.SysUserRoleMapper">  
6 -  
7 - <resultMap type="SysUserRole" id="SysUserRoleResult">  
8 - <result property="userId" column="user_id" />  
9 - <result property="roleId" column="role_id" />  
10 - </resultMap>  
11 -  
12 - <delete id="deleteUserRoleByUserId" parameterType="Long">  
13 - delete from sys_user_role where user_id=#{userId}  
14 - </delete>  
15 -  
16 - <select id="countUserRoleByRoleId" resultType="Integer">  
17 - select count(1) from sys_user_role where role_id=#{roleId}  
18 - </select>  
19 -  
20 - <delete id="deleteUserRole" parameterType="Long">  
21 - delete from sys_user_role where user_id in  
22 - <foreach collection="array" item="userId" open="(" separator="," close=")">  
23 - #{userId}  
24 - </foreach>  
25 - </delete>  
26 -  
27 - <insert id="batchUserRole">  
28 - insert into sys_user_role(user_id, role_id) values  
29 - <foreach item="item" index="index" collection="list" separator=",">  
30 - (#{item.userId},#{item.roleId})  
31 - </foreach>  
32 - </insert>  
33 -  
34 - <delete id="deleteUserRoleInfo" parameterType="SysUserRole">  
35 - delete from sys_user_role where user_id=#{userId} and role_id=#{roleId}  
36 - </delete>  
37 -  
38 - <delete id="deleteUserRoleInfos">  
39 - delete from sys_user_role where role_id=#{roleId} and user_id in  
40 - <foreach collection="userIds" item="userId" open="(" separator="," close=")">  
41 - #{userId}  
42 - </foreach>  
43 - </delete>  
44 -</mapper>  
45 \ No newline at end of file 0 \ No newline at end of file
ruoyi-ui/src/api/system/dept.js
@@ -25,24 +25,6 @@ export function getDept(deptId) { @@ -25,24 +25,6 @@ export function getDept(deptId) {
25 }) 25 })
26 } 26 }
27 27
28 -// 查询部门下拉树结构  
29 -// TODO 准备删除  
30 -export function treeselect() {  
31 - return request({  
32 - url: '/system/dept/treeselect',  
33 - method: 'get'  
34 - })  
35 -}  
36 -  
37 -// 根据角色ID查询部门树结构  
38 -// TODO 准备删除  
39 -export function roleDeptTreeselect(roleId) {  
40 - return request({  
41 - url: '/system/dept/roleDeptTreeselect/' + roleId,  
42 - method: 'get'  
43 - })  
44 -}  
45 -  
46 // 获取部门精简信息列表 28 // 获取部门精简信息列表
47 export function listSimpleDepts() { 29 export function listSimpleDepts() {
48 return request({ 30 return request({
@@ -76,3 +58,6 @@ export function delDept(deptId) { @@ -76,3 +58,6 @@ export function delDept(deptId) {
76 method: 'delete' 58 method: 'delete'
77 }) 59 })
78 } 60 }
  61 +
  62 +export class treeselect {
  63 +}
ruoyi-ui/src/api/system/permission.js
@@ -16,3 +16,12 @@ export function assignRoleMenu(data) { @@ -16,3 +16,12 @@ export function assignRoleMenu(data) {
16 data: data 16 data: data
17 }) 17 })
18 } 18 }
  19 +
  20 +// 赋予角色数据权限
  21 +export function assignRoleDataScope(data) {
  22 + return request({
  23 + url: '/system/permission/assign-role-data-scope',
  24 + method: 'post',
  25 + data: data
  26 + })
  27 +}
ruoyi-ui/src/api/system/role.js
@@ -35,15 +35,6 @@ export function updateRole(data) { @@ -35,15 +35,6 @@ export function updateRole(data) {
35 }) 35 })
36 } 36 }
37 37
38 -// 角色数据权限  
39 -export function dataScope(data) {  
40 - return request({  
41 - url: '/system/role/dataScope',  
42 - method: 'put',  
43 - data: data  
44 - })  
45 -}  
46 -  
47 // 角色状态修改 38 // 角色状态修改
48 export function changeRoleStatus(id, status) { 39 export function changeRoleStatus(id, status) {
49 const data = { 40 const data = {
ruoyi-ui/src/utils/constants.js
@@ -30,7 +30,7 @@ export const SysRoleTypeEnum = { @@ -30,7 +30,7 @@ export const SysRoleTypeEnum = {
30 } 30 }
31 31
32 /** 32 /**
33 - * 数据权限的泛微枚举 33 + * 数据权限的范围枚举
34 */ 34 */
35 export const SysDataScopeEnum = { 35 export const SysDataScopeEnum = {
36 ALL: 1, // 全部数据权限 36 ALL: 1, // 全部数据权限
ruoyi-ui/src/utils/ruoyi.js
@@ -55,15 +55,15 @@ export function resetForm(refName) { @@ -55,15 +55,15 @@ export function resetForm(refName) {
55 55
56 // 添加日期范围 56 // 添加日期范围
57 export function addDateRange(params, dateRange, propName) { 57 export function addDateRange(params, dateRange, propName) {
58 - var search = params;  
59 - search.params = {};  
60 - if (null != dateRange && '' != dateRange) { 58 + const search = params;
  59 + search.params = {};
  60 + if (null != dateRange && '' !== dateRange) {
61 if (typeof(propName) === "undefined") { 61 if (typeof(propName) === "undefined") {
62 - search.params["beginTime"] = dateRange[0];  
63 - search.params["endTime"] = dateRange[1]; 62 + search["beginTime"] = dateRange[0];
  63 + search["endTime"] = dateRange[1];
64 } else { 64 } else {
65 - search.params["begin" + propName] = dateRange[0];  
66 - search.params["end" + propName] = dateRange[1]; 65 + search["begin" + propName] = dateRange[0];
  66 + search["end" + propName] = dateRange[1];
67 } 67 }
68 } 68 }
69 return search; 69 return search;
ruoyi-ui/src/views/system/role/index.vue
@@ -248,8 +248,8 @@ import { @@ -248,8 +248,8 @@ import {
248 updateRole 248 updateRole
249 } from "@/api/system/role"; 249 } from "@/api/system/role";
250 import {listSimpleMenus} from "@/api/system/menu"; 250 import {listSimpleMenus} from "@/api/system/menu";
251 -import {assignRoleMenu, listRoleMenus} from "@/api/system/permission";  
252 -import {listSimpleDepts, treeselect as deptTreeselect} from "@/api/system/dept"; 251 +import {assignRoleMenu, listRoleMenus, assignRoleDataScope} from "@/api/system/permission";
  252 +import {listSimpleDepts} from "@/api/system/dept";
253 import {SysCommonStatusEnum, SysDataScopeEnum} from "@/utils/constants"; 253 import {SysCommonStatusEnum, SysDataScopeEnum} from "@/utils/constants";
254 import {DICT_TYPE, getDictDataLabel, getDictDatas} from "@/utils/dict"; 254 import {DICT_TYPE, getDictDataLabel, getDictDatas} from "@/utils/dict";
255 255
@@ -326,7 +326,10 @@ export default { @@ -326,7 +326,10 @@ export default {
326 /** 查询角色列表 */ 326 /** 查询角色列表 */
327 getList() { 327 getList() {
328 this.loading = true; 328 this.loading = true;
329 - listRole(this.addDateRange(this.queryParams, this.dateRange)).then( 329 + listRole(this.addDateRange(this.queryParams, [
  330 + this.dateRange[0] ? this.dateRange[0] + ' 00:00:00' : undefined,
  331 + this.dateRange[1] ? this.dateRange[1] + ' 23:59:59' : undefined,
  332 + ])).then(
330 response => { 333 response => {
331 this.roleList = response.data.list; 334 this.roleList = response.data.list;
332 this.total = response.data.total; 335 this.total = response.data.total;
@@ -387,6 +390,7 @@ export default { @@ -387,6 +390,7 @@ export default {
387 sort: 0, 390 sort: 0,
388 deptIds: [], 391 deptIds: [],
389 menuIds: [], 392 menuIds: [],
  393 + dataScope: undefined,
390 deptCheckStrictly: false, 394 deptCheckStrictly: false,
391 remark: undefined 395 remark: undefined
392 }; 396 };
@@ -485,11 +489,11 @@ export default { @@ -485,11 +489,11 @@ export default {
485 // 处理 menuOptions 参数 489 // 处理 menuOptions 参数
486 this.deptOptions = []; 490 this.deptOptions = [];
487 this.deptOptions.push(...this.handleTree(response.data, "id")); 491 this.deptOptions.push(...this.handleTree(response.data, "id"));
488 - });  
489 - // 获得角色拥有的数据权限  
490 - getRole(row.id).then(response => {  
491 - // TODO 搞一搞  
492 - // this.$refs.dept.setCheckedKeys(res.checkedKeys); 492 + // 获得角色拥有的数据权限
  493 + getRole(row.id).then(response => {
  494 + this.form.dataScope = response.data.dataScope;
  495 + this.$refs.dept.setCheckedKeys(response.data.dataScopeDeptIds, false);
  496 + });
493 }); 497 });
494 }, 498 },
495 /** 提交按钮 */ 499 /** 提交按钮 */
@@ -515,11 +519,10 @@ export default { @@ -515,11 +519,10 @@ export default {
515 /** 提交按钮(数据权限) */ 519 /** 提交按钮(数据权限) */
516 submitDataScope: function() { 520 submitDataScope: function() {
517 if (this.form.id !== undefined) { 521 if (this.form.id !== undefined) {
518 - // this.form.deptIds = this.getDeptAllCheckedKeys();  
519 - debugger  
520 - dataScope({ 522 + assignRoleDataScope({
521 roleId: this.form.id, 523 roleId: this.form.id,
522 - deptIds: this.form.dataScope !== SysDataScopeEnum.DEPT_CUSTOM ? [] : 524 + dataScope: this.form.dataScope,
  525 + dataScopeDeptIds: this.form.dataScope !== SysDataScopeEnum.DEPT_CUSTOM ? [] :
523 this.$refs.dept.getCheckedKeys(false) 526 this.$refs.dept.getCheckedKeys(false)
524 }).then(response => { 527 }).then(response => {
525 this.msgSuccess("修改成功"); 528 this.msgSuccess("修改成功");
src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/SysPermissionController.java
1 package cn.iocoder.dashboard.modules.system.controller.permission; 1 package cn.iocoder.dashboard.modules.system.controller.permission;
2 2
3 import cn.iocoder.dashboard.common.pojo.CommonResult; 3 import cn.iocoder.dashboard.common.pojo.CommonResult;
  4 +import cn.iocoder.dashboard.modules.system.controller.permission.vo.permission.SysPermissionAssignRoleDataScopeReqVO;
4 import cn.iocoder.dashboard.modules.system.controller.permission.vo.permission.SysPermissionAssignRoleMenuReqVO; 5 import cn.iocoder.dashboard.modules.system.controller.permission.vo.permission.SysPermissionAssignRoleMenuReqVO;
5 import cn.iocoder.dashboard.modules.system.service.permission.SysPermissionService; 6 import cn.iocoder.dashboard.modules.system.service.permission.SysPermissionService;
6 import io.swagger.annotations.Api; 7 import io.swagger.annotations.Api;
@@ -43,6 +44,15 @@ public class SysPermissionController { @@ -43,6 +44,15 @@ public class SysPermissionController {
43 return success(true); 44 return success(true);
44 } 45 }
45 46
  47 + @PostMapping("/assign-role-data-scope")
  48 + @ApiOperation("赋予角色数据权限")
  49 +// @RequiresPermissions("system:permission:assign-role-data-scope")
  50 + public CommonResult<Boolean> assignRoleDataScope(
  51 + @Validated @RequestBody SysPermissionAssignRoleDataScopeReqVO reqVO) {
  52 + permissionService.assignRoleDataScope(reqVO.getRoleId(), reqVO.getDataScope(), reqVO.getDataScopeDeptIds());
  53 + return success(true);
  54 + }
  55 +
46 // @GetMapping("/list-admin-roles") 56 // @GetMapping("/list-admin-roles")
47 // @ApiOperation("获得管理员拥有的角色编号列表") 57 // @ApiOperation("获得管理员拥有的角色编号列表")
48 //// @RequiresPermissions("system:permission:assign-admin-role") 58 //// @RequiresPermissions("system:permission:assign-admin-role")
src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/vo/permission/SysPermissionAssignRoleDataScopeReqVO.java 0 → 100644
  1 +package cn.iocoder.dashboard.modules.system.controller.permission.vo.permission;
  2 +
  3 +import io.swagger.annotations.ApiModel;
  4 +import io.swagger.annotations.ApiModelProperty;
  5 +import lombok.Data;
  6 +
  7 +import javax.validation.constraints.NotNull;
  8 +import java.util.Collections;
  9 +import java.util.Set;
  10 +
  11 +@ApiModel("赋予角色数据权限 Request VO")
  12 +@Data
  13 +public class SysPermissionAssignRoleDataScopeReqVO {
  14 +
  15 + @ApiModelProperty(value = "角色编号", required = true, example = "1")
  16 + @NotNull(message = "角色编号不能为空")
  17 + private Long roleId;
  18 +
  19 + @ApiModelProperty(value = "数据范围", required = true, example = "1", notes = "参见 SysDataScopeEnum 枚举类")
  20 + @NotNull(message = "数据范围不能为空")
  21 +// TODO 这里要多一个枚举校验
  22 + private Integer dataScope;
  23 +
  24 + @ApiModelProperty(value = "部门编号列表", example = "1,3,5", notes = "只有范围类型为 DEPT_CUSTOM 时,该字段才需要")
  25 + private Set<Long> dataScopeDeptIds = Collections.emptySet(); // 兜底
  26 +
  27 +}
src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/vo/permission/SysPermissionAssignRoleMenuReqVO.java
@@ -12,7 +12,7 @@ import java.util.Set; @@ -12,7 +12,7 @@ import java.util.Set;
12 @Data 12 @Data
13 public class SysPermissionAssignRoleMenuReqVO { 13 public class SysPermissionAssignRoleMenuReqVO {
14 14
15 - @ApiModelProperty(value = "角色名", required = true, example = "1") 15 + @ApiModelProperty(value = "角色编号", required = true, example = "1")
16 @NotNull(message = "角色编号不能为空") 16 @NotNull(message = "角色编号不能为空")
17 private Long roleId; 17 private Long roleId;
18 18
src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/vo/role/SysRolePageReqVO.java
@@ -5,6 +5,11 @@ import io.swagger.annotations.ApiModel; @@ -5,6 +5,11 @@ import io.swagger.annotations.ApiModel;
5 import io.swagger.annotations.ApiModelProperty; 5 import io.swagger.annotations.ApiModelProperty;
6 import lombok.Data; 6 import lombok.Data;
7 import lombok.EqualsAndHashCode; 7 import lombok.EqualsAndHashCode;
  8 +import org.springframework.format.annotation.DateTimeFormat;
  9 +
  10 +import java.util.Date;
  11 +
  12 +import static cn.iocoder.dashboard.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
8 13
9 @ApiModel("角色分页 Request VO") 14 @ApiModel("角色分页 Request VO")
10 @Data 15 @Data
@@ -14,7 +19,18 @@ public class SysRolePageReqVO extends PageParam { @@ -14,7 +19,18 @@ public class SysRolePageReqVO extends PageParam {
14 @ApiModelProperty(value = "角色名称", example = "芋道", notes = "模糊匹配") 19 @ApiModelProperty(value = "角色名称", example = "芋道", notes = "模糊匹配")
15 private String name; 20 private String name;
16 21
  22 + @ApiModelProperty(value = "角色标识", example = "yudao", notes = "模糊匹配")
  23 + private String code;
  24 +
17 @ApiModelProperty(value = "展示状态", example = "1", notes = "参见 SysCommonStatusEnum 枚举类") 25 @ApiModelProperty(value = "展示状态", example = "1", notes = "参见 SysCommonStatusEnum 枚举类")
18 private Integer status; 26 private Integer status;
19 27
  28 + @ApiModelProperty(value = "开始时间", example = "2020-10-24")
  29 + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
  30 + private Date beginTime;
  31 +
  32 + @ApiModelProperty(value = "结束时间", example = "2020-10-24")
  33 + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
  34 + private Date endTime;
  35 +
20 } 36 }
src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/vo/role/SysRoleRespVO.java
@@ -8,6 +8,7 @@ import lombok.EqualsAndHashCode; @@ -8,6 +8,7 @@ import lombok.EqualsAndHashCode;
8 import lombok.NoArgsConstructor; 8 import lombok.NoArgsConstructor;
9 9
10 import java.util.Date; 10 import java.util.Date;
  11 +import java.util.Set;
11 12
12 @ApiModel("角色信息 Response VO") 13 @ApiModel("角色信息 Response VO")
13 @Data 14 @Data
@@ -22,6 +23,9 @@ public class SysRoleRespVO extends SysRoleBaseVO { @@ -22,6 +23,9 @@ public class SysRoleRespVO extends SysRoleBaseVO {
22 @ApiModelProperty(value = "数据范围", required = true, example = "1", notes = "参见 DataScopeEnum 枚举类") 23 @ApiModelProperty(value = "数据范围", required = true, example = "1", notes = "参见 DataScopeEnum 枚举类")
23 private Integer dataScope; 24 private Integer dataScope;
24 25
  26 + @ApiModelProperty(value = "数据范围(指定部门数组)", example = "1")
  27 + private Set<Long> dataScopeDeptIds;
  28 +
25 @ApiModelProperty(value = "状态", required = true, example = "1", notes = "参见 SysCommonStatusEnum 枚举类") 29 @ApiModelProperty(value = "状态", required = true, example = "1", notes = "参见 SysCommonStatusEnum 枚举类")
26 private Integer status; 30 private Integer status;
27 31
src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/dao/permission/SysRoleMapper.java
@@ -14,7 +14,9 @@ public interface SysRoleMapper extends BaseMapper&lt;SysRoleDO&gt; { @@ -14,7 +14,9 @@ public interface SysRoleMapper extends BaseMapper&lt;SysRoleDO&gt; {
14 default IPage<SysRoleDO> selectPage(SysRolePageReqVO reqVO) { 14 default IPage<SysRoleDO> selectPage(SysRolePageReqVO reqVO) {
15 return selectPage(MyBatisUtils.buildPage(reqVO), 15 return selectPage(MyBatisUtils.buildPage(reqVO),
16 new QueryWrapperX<SysRoleDO>().likeIfPresent("name", reqVO.getName()) 16 new QueryWrapperX<SysRoleDO>().likeIfPresent("name", reqVO.getName())
17 - .eqIfPresent("status", reqVO.getStatus())); 17 + .likeIfPresent("code", reqVO.getCode())
  18 + .eqIfPresent("status", reqVO.getStatus())
  19 + .betweenIfPresent("create_time", reqVO.getBeginTime(), reqVO.getEndTime()));
18 } 20 }
19 21
20 default SysRoleDO selectByName(String name) { 22 default SysRoleDO selectByName(String name) {
src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/dataobject/permission/SysRoleDO.java
@@ -12,7 +12,7 @@ import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler; @@ -12,7 +12,7 @@ import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
12 import lombok.Data; 12 import lombok.Data;
13 import lombok.EqualsAndHashCode; 13 import lombok.EqualsAndHashCode;
14 14
15 -import java.util.List; 15 +import java.util.Set;
16 16
17 /** 17 /**
18 * 角色 DO 18 * 角色 DO
@@ -72,6 +72,6 @@ public class SysRoleDO extends BaseDO { @@ -72,6 +72,6 @@ public class SysRoleDO extends BaseDO {
72 * 适用于 {@link #dataScope} 的值为 {@link DataScopeEnum#DEPT_CUSTOM} 时 72 * 适用于 {@link #dataScope} 的值为 {@link DataScopeEnum#DEPT_CUSTOM} 时
73 */ 73 */
74 @TableField(typeHandler = FastjsonTypeHandler.class) 74 @TableField(typeHandler = FastjsonTypeHandler.class)
75 - private List<Long> dataScopeDeptIds; 75 + private Set<Long> dataScopeDeptIds;
76 76
77 } 77 }
src/main/java/cn/iocoder/dashboard/modules/system/enums/SysErrorCodeConstants.java
@@ -30,7 +30,6 @@ public interface SysErrorCodeConstants { @@ -30,7 +30,6 @@ public interface SysErrorCodeConstants {
30 ErrorCode ROLE_NOT_EXISTS = new ErrorCode(1002003000, "角色不存在"); 30 ErrorCode ROLE_NOT_EXISTS = new ErrorCode(1002003000, "角色不存在");
31 ErrorCode ROLE_NAME_DUPLICATE = new ErrorCode(1002003001, "已经存在名为【{}}】的角色"); 31 ErrorCode ROLE_NAME_DUPLICATE = new ErrorCode(1002003001, "已经存在名为【{}}】的角色");
32 ErrorCode ROLE_CODE_DUPLICATE = new ErrorCode(1002003002, "已经存在编码为【{}}】的角色"); 32 ErrorCode ROLE_CODE_DUPLICATE = new ErrorCode(1002003002, "已经存在编码为【{}}】的角色");
33 - ErrorCode ROLE_CAN_NOT_UPDATE_SYSTEM_TYPE_ROLE = new ErrorCode(1002003004, "不能修改类型为系统内置的角色");  
34 - ErrorCode ROLE_CAN_NOT_DELETE_SYSTEM_TYPE_ROLE = new ErrorCode(1002003005, "不能删除类型为系统内置的角色"); 33 + ErrorCode ROLE_CAN_NOT_UPDATE_SYSTEM_TYPE_ROLE = new ErrorCode(1002003004, "不能操作类型为系统内置的角色");
35 34
36 } 35 }
src/main/java/cn/iocoder/dashboard/modules/system/service/permission/SysPermissionService.java
@@ -52,7 +52,7 @@ public interface SysPermissionService { @@ -52,7 +52,7 @@ public interface SysPermissionService {
52 Set<Long> listRoleMenuIds(Long roleId); 52 Set<Long> listRoleMenuIds(Long roleId);
53 53
54 /** 54 /**
55 - * 赋予赋予角色菜单 55 + * 设置角色菜单
56 * 56 *
57 * @param roleId 角色编号 57 * @param roleId 角色编号
58 * @param menuIds 菜单编号集合 58 * @param menuIds 菜单编号集合
@@ -60,6 +60,15 @@ public interface SysPermissionService { @@ -60,6 +60,15 @@ public interface SysPermissionService {
60 void assignRoleMenu(Long roleId, Set<Long> menuIds); 60 void assignRoleMenu(Long roleId, Set<Long> menuIds);
61 61
62 /** 62 /**
  63 + * 设置角色的数据权限
  64 + *
  65 + * @param roleId 角色编号
  66 + * @param dataScope 数据范围
  67 + * @param dataScopeDeptIds 部门编号数组
  68 + */
  69 + void assignRoleDataScope(Long roleId, Integer dataScope, Set<Long> dataScopeDeptIds);
  70 +
  71 + /**
63 * 处理角色删除时,删除关联授权角色 72 * 处理角色删除时,删除关联授权角色
64 * 73 *
65 * @param roleId 角色编号 74 * @param roleId 角色编号
src/main/java/cn/iocoder/dashboard/modules/system/service/permission/SysRoleService.java
@@ -8,6 +8,7 @@ import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.permission.SysRo @@ -8,6 +8,7 @@ import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.permission.SysRo
8 8
9 import java.util.Collection; 9 import java.util.Collection;
10 import java.util.List; 10 import java.util.List;
  11 +import java.util.Set;
11 12
12 /** 13 /**
13 * 角色 Service 接口 14 * 角色 Service 接口
@@ -91,4 +92,13 @@ public interface SysRoleService { @@ -91,4 +92,13 @@ public interface SysRoleService {
91 */ 92 */
92 void updateRoleStatus(Long id, Integer status); 93 void updateRoleStatus(Long id, Integer status);
93 94
  95 + /**
  96 + * 设置角色的数据权限
  97 + *
  98 + * @param id 角色编号
  99 + * @param dataScope 数据范围
  100 + * @param dataScopeDeptIds 部门编号数组
  101 + */
  102 + void updateRoleDataScope(Long id, Integer dataScope, Set<Long> dataScopeDeptIds);
  103 +
94 } 104 }
src/main/java/cn/iocoder/dashboard/modules/system/service/permission/impl/SysPermissionServiceImpl.java
@@ -143,6 +143,11 @@ public class SysPermissionServiceImpl implements SysPermissionService { @@ -143,6 +143,11 @@ public class SysPermissionServiceImpl implements SysPermissionService {
143 } 143 }
144 144
145 @Override 145 @Override
  146 + public void assignRoleDataScope(Long roleId, Integer dataScope, Set<Long> dataScopeDeptIds) {
  147 + roleService.updateRoleDataScope(roleId, dataScope, dataScopeDeptIds);
  148 + }
  149 +
  150 + @Override
146 public void processRoleDeleted(Long roleId) { 151 public void processRoleDeleted(Long roleId) {
147 // TODO 实现我 152 // TODO 实现我
148 // // 标记删除 RoleResource 153 // // 标记删除 RoleResource
src/main/java/cn/iocoder/dashboard/modules/system/service/permission/impl/SysRoleServiceImpl.java
@@ -23,10 +23,7 @@ import org.springframework.util.StringUtils; @@ -23,10 +23,7 @@ import org.springframework.util.StringUtils;
23 23
24 import javax.annotation.PostConstruct; 24 import javax.annotation.PostConstruct;
25 import javax.annotation.Resource; 25 import javax.annotation.Resource;
26 -import java.util.Collection;  
27 -import java.util.Collections;  
28 -import java.util.List;  
29 -import java.util.Map; 26 +import java.util.*;
30 import java.util.stream.Collectors; 27 import java.util.stream.Collectors;
31 28
32 import static cn.iocoder.dashboard.modules.system.enums.SysErrorCodeConstants.*; 29 import static cn.iocoder.dashboard.modules.system.enums.SysErrorCodeConstants.*;
@@ -148,6 +145,18 @@ public class SysRoleServiceImpl implements SysRoleService { @@ -148,6 +145,18 @@ public class SysRoleServiceImpl implements SysRoleService {
148 roleMapper.updateById(updateObject); 145 roleMapper.updateById(updateObject);
149 } 146 }
150 147
  148 + @Override
  149 + public void updateRoleDataScope(Long id, Integer dataScope, Set<Long> dataScopeDeptIds) {
  150 + // 校验是否可以更新
  151 + checkUpdateRole(id);
  152 + // 更新数据范围
  153 + SysRoleDO updateObject = new SysRoleDO();
  154 + updateObject.setId(id);
  155 + updateObject.setDataScope(dataScope);
  156 + updateObject.setDataScopeDeptIds(dataScopeDeptIds);
  157 + roleMapper.updateById(updateObject);
  158 + }
  159 +
151 /** 160 /**
152 * 校验角色的唯一字段是否重复 161 * 校验角色的唯一字段是否重复
153 * 162 *
@@ -187,7 +196,7 @@ public class SysRoleServiceImpl implements SysRoleService { @@ -187,7 +196,7 @@ public class SysRoleServiceImpl implements SysRoleService {
187 } 196 }
188 // 内置角色,不允许删除 197 // 内置角色,不允许删除
189 if (RoleTypeEnum.SYSTEM.getType().equals(roleDO.getType())) { 198 if (RoleTypeEnum.SYSTEM.getType().equals(roleDO.getType())) {
190 - throw ServiceExceptionUtil.exception(ROLE_CAN_NOT_DELETE_SYSTEM_TYPE_ROLE); 199 + throw ServiceExceptionUtil.exception(ROLE_CAN_NOT_UPDATE_SYSTEM_TYPE_ROLE);
191 } 200 }
192 } 201 }
193 202
src/main/java/cn/iocoder/dashboard/util/date/DateUtils.java
@@ -8,6 +8,8 @@ import java.util.Date; @@ -8,6 +8,8 @@ import java.util.Date;
8 */ 8 */
9 public class DateUtils { 9 public class DateUtils {
10 10
  11 + public static final String FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND = "yyyy-MM-dd HH:mm:ss";
  12 +
11 public static Date addTime(Duration duration) { 13 public static Date addTime(Duration duration) {
12 return new Date(System.currentTimeMillis() + duration.toMillis()); 14 return new Date(System.currentTimeMillis() + duration.toMillis());
13 } 15 }