Skip to content

Commit 30e3411

Browse files
committed
feat: 角色管理按 type:code 进行区分管理
1 parent 5cea07d commit 30e3411

12 files changed

Lines changed: 77 additions & 34 deletions

File tree

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.github.cadecode.uniboot.framework.base.enums;
2+
3+
import com.baomidou.mybatisplus.annotation.EnumValue;
4+
import com.fasterxml.jackson.annotation.JsonValue;
5+
import lombok.Getter;
6+
7+
/**
8+
* 角色类型枚举
9+
*
10+
* @author Cade Li
11+
* @since 2024/5/26
12+
*/
13+
@Getter
14+
public enum RoleTypeEnum {
15+
16+
ACCESS("ACCESS"),
17+
DATA("DATA"),
18+
;
19+
20+
@EnumValue
21+
@JsonValue
22+
private final String prefix;
23+
24+
RoleTypeEnum(String prefix) {
25+
this.prefix = prefix;
26+
}
27+
}

framework/framework_svc/src/main/java/com/github/cadecode/uniboot/framework/svc/bean/po/SysRole.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.baomidou.mybatisplus.annotation.IdType;
55
import com.baomidou.mybatisplus.annotation.TableField;
66
import com.baomidou.mybatisplus.annotation.TableId;
7+
import com.github.cadecode.uniboot.framework.base.enums.RoleTypeEnum;
78
import lombok.AllArgsConstructor;
89
import lombok.Builder;
910
import lombok.Data;
@@ -39,6 +40,11 @@ public class SysRole {
3940
*/
4041
private String name;
4142

43+
/**
44+
* 角色类型
45+
*/
46+
private RoleTypeEnum type;
47+
4248
/**
4349
* 描述
4450
*/

framework/framework_svc/src/main/java/com/github/cadecode/uniboot/framework/svc/bean/vo/SysRoleVo.java

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.github.cadecode.uniboot.framework.svc.bean.vo;
22

33
import com.github.cadecode.uniboot.common.core.web.response.PageParams;
4+
import com.github.cadecode.uniboot.framework.base.enums.RoleTypeEnum;
45
import lombok.Data;
56
import lombok.EqualsAndHashCode;
67

@@ -30,6 +31,8 @@ public static class SysRoleMappingReqVo {
3031
public static class SysRoleUnionReqVo extends PageParams {
3132
private String code;
3233
private String name;
34+
@NotNull
35+
private RoleTypeEnum type;
3336
}
3437

3538
@Data
@@ -50,47 +53,43 @@ public static class SysRoleAddReqVo {
5053
@NotEmpty
5154
private String name;
5255
@NotNull
56+
private RoleTypeEnum type;
57+
@NotNull
5358
@NotEmpty
5459
private String description;
5560
}
5661

5762
@Data
58-
public static class SysRoleListResVo {
63+
public static class SysRoleListReqVo {
64+
private String code;
65+
private String name;
66+
@NotNull
67+
private RoleTypeEnum type;
68+
}
5969

70+
@Data
71+
public static class SysRoleListResVo {
6072
private Long id;
61-
6273
private String code;
63-
6474
private String name;
65-
75+
private RoleTypeEnum type;
6676
private String description;
67-
6877
private Date createTime;
69-
7078
private Date updateTime;
71-
7279
private String updateUser;
7380
}
7481

7582
@Data
7683
public static class SysRoleUnionResVo {
77-
7884
private Long id;
79-
8085
private String code;
81-
8286
private String name;
83-
87+
private RoleTypeEnum type;
8488
private String description;
85-
8689
private Date createTime;
87-
8890
private Date updateTime;
89-
9091
private String updateUser;
91-
9292
private List<Long> menus;
93-
9493
private List<Long> apis;
9594
}
9695
}

framework/framework_svc/src/main/java/com/github/cadecode/uniboot/framework/svc/controller/SysRoleController.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.github.cadecode.uniboot.framework.svc.controller;
22

3+
import cn.hutool.core.util.ObjUtil;
34
import com.github.cadecode.uniboot.common.core.web.response.PageResult;
45
import com.github.cadecode.uniboot.framework.api.consts.KeyPrefixConst;
56
import com.github.cadecode.uniboot.framework.base.annotation.ApiFormat;
@@ -45,8 +46,12 @@ public class SysRoleController {
4546

4647
@ApiOperation("查询角色列表")
4748
@PostMapping("list")
48-
public List<SysRoleListResVo> roleList() {
49-
List<SysRole> roleList = sysRoleService.list();
49+
public List<SysRoleListResVo> roleList(@RequestBody @Valid SysRoleListReqVo reqVo) {
50+
List<SysRole> roleList = sysRoleService.lambdaQuery()
51+
.eq(ObjUtil.isNotEmpty(reqVo.getCode()), SysRole::getCode, reqVo.getCode())
52+
.eq(ObjUtil.isNotEmpty(reqVo.getName()), SysRole::getName, reqVo.getName())
53+
.eq(SysRole::getType, reqVo.getType())
54+
.list();
5055
return SysRoleConvert.INSTANCE.poToListResVo(roleList);
5156
}
5257

framework/framework_svc/src/main/resources/mapper/mysql/SysApiMapper.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
<result column="r_code" property="roles" typeHandler="ObjToStrTypeHandler"/>
1212
</resultMap>
1313
<select id="selectRolesVoByApiIds" resultMap="SysApiRolesVoMap">
14-
SELECT sa.*, JSON_ARRAYAGG(sr.code) r_code
14+
SELECT sa.*, JSON_ARRAYAGG(CONCAT(sr.type, ':', sr.code)) r_code
1515
FROM sys_api sa
1616
LEFT JOIN sys_role_api sra ON sra.api_id = sa.id
1717
LEFT JOIN sys_role sr ON sra.role_id = sr.id
@@ -26,7 +26,7 @@
2626
ORDER BY sa.url
2727
</select>
2828
<select id="selectRolesVo" resultMap="SysApiRolesVoMap">
29-
SELECT sa.*, JSON_ARRAYAGG(sr.code) r_code
29+
SELECT sa.*, JSON_ARRAYAGG(CONCAT(sr.type, ':', sr.code)) r_code
3030
FROM sys_api sa
3131
LEFT JOIN sys_role_api sra ON sra.api_id = sa.id
3232
LEFT JOIN sys_role sr ON sra.role_id = sr.id

framework/framework_svc/src/main/resources/mapper/mysql/SysMenuMapper.xml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,14 @@
2222
FROM sys_menu sm LEFT JOIN sys_role_menu srm ON sm.id = srm.menu_id
2323
LEFT JOIN sys_role sr ON srm.role_id = sr.id
2424
where sm.enable_flag = 1
25-
<foreach collection="roleCodes" item="roleCode" separator="," open="and sr.code IN (" close=")">
25+
<foreach collection="roleCodes" item="roleCode" separator="," open="and CONCAT(sr.type, ':', sr.code) IN ("
26+
close=")">
2627
#{roleCode}
2728
</foreach>
2829
ORDER BY sm.order_num
2930
</select>
3031
<select id="selectRolesVo" resultMap="SysMenuRolesVoMap">
31-
SELECT sm.*, JSON_ARRAYAGG(sr.code) r_code
32+
SELECT sm.*, JSON_ARRAYAGG(CONCAT(sr.type, ':', sr.code)) r_code
3233
FROM sys_menu sm
3334
LEFT JOIN sys_role_menu srm ON srm.menu_id = sm.id
3435
LEFT JOIN sys_role sr ON srm.role_id = sr.id
@@ -68,7 +69,7 @@
6869
</choose>
6970
</select>
7071
<select id="selectRolesVoByMenuIds" resultMap="SysMenuRolesVoMap">
71-
SELECT sm.*, JSON_ARRAYAGG(sr.code) r_code
72+
SELECT sm.*, JSON_ARRAYAGG(CONCAT(sr.type, ':', sr.code)) r_code
7273
FROM sys_menu sm
7374
LEFT JOIN sys_role_menu srm ON srm.menu_id = sm.id
7475
LEFT JOIN sys_role sr ON srm.role_id = sr.id

framework/framework_svc/src/main/resources/mapper/mysql/SysRoleMapper.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@
6565
<bind name="bindName" value="'%' + req.name + '%'"/>
6666
AND sr.name like #{bindName}
6767
</if>
68+
AND sr.type = #{req.type.prefix}
6869
</where>
6970
</if>
7071
GROUP BY sr.id, sr.code

framework/framework_svc/src/main/resources/mapper/mysql/SysUserMapper.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
<result column="r_code" property="roles" typeHandler="ObjToStrTypeHandler"/>
2222
</resultMap>
2323
<select id="selectRolesVoByUserIds" resultMap="SysUserRolesVoMap">
24-
SELECT su.*, JSON_ARRAYAGG(sr.code) r_code, sd.dept_name d_dept_name
24+
SELECT su.*, JSON_ARRAYAGG(CONCAT(sr.type, ':', sr.code)) r_code, sd.dept_name d_dept_name
2525
FROM sys_user su
2626
LEFT JOIN sys_role_user sru ON sru.user_id = su.id
2727
LEFT JOIN sys_role sr ON sru.role_id = sr.id
@@ -37,7 +37,7 @@
3737
ORDER BY su.create_time DESC
3838
</select>
3939
<select id="selectRolesVoByUsername" resultMap="SysUserRolesVoMap">
40-
SELECT su.*, JSON_ARRAYAGG(sr.code) r_code, sd.dept_name d_dept_name
40+
SELECT su.*, JSON_ARRAYAGG(CONCAT(sr.type, ':', sr.code)) r_code, sd.dept_name d_dept_name
4141
FROM sys_user su
4242
LEFT JOIN sys_role_user sru ON sru.user_id = su.id
4343
LEFT JOIN sys_role sr ON sru.role_id = sr.id
@@ -46,7 +46,7 @@
4646
GROUP BY su.id
4747
</select>
4848
<select id="selectRolesVo" resultMap="SysUserRolesVoMap">
49-
SELECT su.*, JSON_ARRAYAGG(sr.code) r_code, sd.dept_name d_dept_name
49+
SELECT su.*, JSON_ARRAYAGG(CONCAT(sr.type, ':', sr.code)) r_code, sd.dept_name d_dept_name
5050
FROM sys_user su
5151
LEFT JOIN sys_role_user sru ON sru.user_id = su.id
5252
LEFT JOIN sys_role sr ON sru.role_id = sr.id

framework/framework_svc/src/main/resources/mapper/oracle/SysApiMapper.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
<result column="r_code" property="roles" typeHandler="ObjToStrTypeHandler"/>
1212
</resultMap>
1313
<select id="selectRolesVoByApiIds" resultMap="SysApiRolesVoMap">
14-
SELECT sa.*, JSON_ARRAYAGG(sr.code) r_code
14+
SELECT sa.*, JSON_ARRAYAGG(sr.type || ':' || sr.code) r_code
1515
FROM sys_api sa
1616
LEFT JOIN sys_role_api sra ON sra.api_id = sa.id
1717
LEFT JOIN sys_role sr ON sra.role_id = sr.id
@@ -26,7 +26,7 @@
2626
ORDER BY sa.url
2727
</select>
2828
<select id="selectRolesVo" resultMap="SysApiRolesVoMap">
29-
SELECT sa.*, JSON_ARRAYAGG(sr.code) r_code
29+
SELECT sa.*, JSON_ARRAYAGG(sr.type || ':' || sr.code) r_code
3030
FROM sys_api sa
3131
LEFT JOIN sys_role_api sra ON sra.api_id = sa.id
3232
LEFT JOIN sys_role sr ON sra.role_id = sr.id

framework/framework_svc/src/main/resources/mapper/oracle/SysMenuMapper.xml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@
2727
FROM sys_menu sm LEFT JOIN sys_role_menu srm ON sm.id = srm.menu_id
2828
LEFT JOIN sys_role sr ON srm.role_id = sr.id
2929
where sm.enable_flag = 1
30-
<foreach collection="roleCodes" item="roleCode" separator="," open="and sr.code IN (" close=")">
30+
<foreach collection="roleCodes" item="roleCode" separator="," open="and sr.type || ':' || sr.code IN ("
31+
close=")">
3132
#{roleCode}
3233
</foreach>
3334
GROUP BY sm.id, sm.parent_id, sm.route_name, TO_CHAR(sm.route_path), TO_CHAR(sm.component_path), sm.menu_name,
@@ -40,7 +41,7 @@
4041
component_path, sm.menu_name,
4142
sm.leaf_flag, TO_CHAR(sm.icon) as icon, sm.order_num, sm.enable_flag, sm.hidden_flag, sm.cache_flag,
4243
sm.create_time, sm.update_time,
43-
sm.update_user, JSON_ARRAYAGG(sr.code) r_code
44+
sm.update_user, JSON_ARRAYAGG(sr.type || ':' || sr.code) r_code
4445
FROM sys_menu sm
4546
LEFT JOIN sys_role_menu srm ON srm.menu_id = sm.id
4647
LEFT JOIN sys_role sr ON srm.role_id = sr.id
@@ -86,7 +87,7 @@
8687
component_path, sm.menu_name,
8788
sm.leaf_flag, TO_CHAR(sm.icon) as icon, sm.order_num, sm.enable_flag, sm.hidden_flag, sm.cache_flag,
8889
sm.create_time, sm.update_time,
89-
sm.update_user, JSON_ARRAYAGG(sr.code) r_code
90+
sm.update_user, JSON_ARRAYAGG(sr.type || ':' || sr.code) r_code
9091
FROM sys_menu sm
9192
LEFT JOIN sys_role_menu srm ON srm.menu_id = sm.id
9293
LEFT JOIN sys_role sr ON srm.role_id = sr.id

0 commit comments

Comments
 (0)