Skip to content

Commit a36b459

Browse files
committed
feat: 添加角色 curd
1 parent af38758 commit a36b459

8 files changed

Lines changed: 186 additions & 1 deletion

File tree

application/src/main/java/top/cadecode/uniboot/controller/system/SysRoleController.java

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,28 @@
11
package top.cadecode.uniboot.controller.system;
22

3+
import com.github.pagehelper.PageInfo;
34
import io.swagger.annotations.Api;
45
import io.swagger.annotations.ApiOperation;
56
import lombok.RequiredArgsConstructor;
67
import lombok.extern.slf4j.Slf4j;
8+
import org.springframework.transaction.annotation.Transactional;
79
import org.springframework.validation.annotation.Validated;
810
import org.springframework.web.bind.annotation.PostMapping;
911
import org.springframework.web.bind.annotation.RequestBody;
1012
import org.springframework.web.bind.annotation.RequestMapping;
1113
import org.springframework.web.bind.annotation.RestController;
1214
import top.cadecode.uniboot.common.annotation.ApiFormat;
15+
import top.cadecode.uniboot.common.response.PageResult;
1316
import top.cadecode.uniboot.system.bean.po.SysRole;
1417
import top.cadecode.uniboot.system.bean.vo.SysRoleVo.SysRoleListVo;
18+
import top.cadecode.uniboot.system.bean.vo.SysRoleVo.SysRoleUnionVo;
1519
import top.cadecode.uniboot.system.convert.SysRoleConvert;
20+
import top.cadecode.uniboot.system.request.SysRoleRequest;
1621
import top.cadecode.uniboot.system.request.SysRoleRequest.SysRoleMappingRequest;
22+
import top.cadecode.uniboot.system.request.SysRoleRequest.SysRoleUnionRequest;
1723
import top.cadecode.uniboot.system.service.SysRoleService;
1824

25+
import javax.validation.Valid;
1926
import javax.validation.constraints.NotEmpty;
2027
import java.util.List;
2128

@@ -78,4 +85,42 @@ public boolean addApiMapping(@RequestBody @NotEmpty List<SysRoleMappingRequest>
7885
public boolean removeApiMapping(@RequestBody @NotEmpty List<SysRoleMappingRequest> request) {
7986
return sysRoleService.removeRoleApi(request) > 0;
8087
}
88+
89+
@ApiOperation("查询角色列表(带菜单、api)")
90+
@PostMapping("page_union_vo")
91+
public PageResult<SysRoleUnionVo> pageUnionVo(@RequestBody @Valid SysRoleUnionRequest request) {
92+
PageInfo<SysRoleUnionVo> page = sysRoleService.pageUnionVo(request);
93+
return new PageResult<>((int) page.getTotal(), page.getList());
94+
}
95+
96+
@ApiOperation("查询角色列表(带菜单、api)byRoleIds")
97+
@PostMapping("list_union_vo_by_role_ids")
98+
public List<SysRoleUnionVo> listUnionVoByRoleIds(@RequestBody @NotEmpty List<Long> roleIds) {
99+
return sysRoleService.listUnionVoByRoleIds(roleIds);
100+
}
101+
102+
@ApiOperation("更新角色")
103+
@PostMapping("update")
104+
public boolean update(@RequestBody @Valid SysRoleRequest.SysRoleUpdateRequest request) {
105+
SysRole po = SysRoleConvert.INSTANCE.requestToPo(request);
106+
return sysRoleService.updateById(po);
107+
}
108+
109+
@ApiOperation("添加角色")
110+
@PostMapping("add")
111+
public boolean add(@RequestBody @Valid SysRoleRequest.SysRoleAddRequest request) {
112+
SysRole sysRole = SysRoleConvert.INSTANCE.requestToPo(request);
113+
return sysRoleService.save(sysRole);
114+
}
115+
116+
@ApiOperation("删除角色(多选)")
117+
@PostMapping("delete")
118+
@Transactional(rollbackFor = Exception.class)
119+
public boolean delete(@RequestBody @NotEmpty List<Long> roleIdList) {
120+
// 清理角色绑定关系
121+
sysRoleService.removeRoleApiByRoleIds(roleIdList);
122+
sysRoleService.removeRoleMenuByRoleIds(roleIdList);
123+
sysRoleService.removeRoleUserByRoleIds(roleIdList);
124+
return sysRoleService.removeBatchByIds(roleIdList);
125+
}
81126
}

system/src/main/java/top/cadecode/uniboot/system/bean/vo/SysRoleVo.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import lombok.Data;
44

55
import java.util.Date;
6+
import java.util.List;
67

78
/**
89
* 系统角色 VO
@@ -29,4 +30,26 @@ public static class SysRoleListVo {
2930

3031
private String updateUser;
3132
}
33+
34+
@Data
35+
public static class SysRoleUnionVo {
36+
37+
private Long id;
38+
39+
private String code;
40+
41+
private String name;
42+
43+
private String description;
44+
45+
private Date createTime;
46+
47+
private Date updateTime;
48+
49+
private String updateUser;
50+
51+
private List<Long> menus;
52+
53+
private List<Long> apis;
54+
}
3255
}

system/src/main/java/top/cadecode/uniboot/system/convert/SysRoleConvert.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import org.mapstruct.factory.Mappers;
55
import top.cadecode.uniboot.system.bean.po.SysRole;
66
import top.cadecode.uniboot.system.bean.vo.SysRoleVo.SysRoleListVo;
7+
import top.cadecode.uniboot.system.request.SysRoleRequest.SysRoleAddRequest;
8+
import top.cadecode.uniboot.system.request.SysRoleRequest.SysRoleUpdateRequest;
79

810
import java.util.List;
911

@@ -22,4 +24,7 @@ public interface SysRoleConvert {
2224

2325
List<SysRoleListVo> poToListVo(List<SysRole> po);
2426

27+
SysRole requestToPo(SysRoleUpdateRequest request);
28+
29+
SysRole requestToPo(SysRoleAddRequest request);
2530
}

system/src/main/java/top/cadecode/uniboot/system/mapper/SysRoleMapper.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@
44
import org.apache.ibatis.annotations.Mapper;
55
import org.apache.ibatis.annotations.Param;
66
import top.cadecode.uniboot.system.bean.po.SysRole;
7+
import top.cadecode.uniboot.system.bean.vo.SysRoleVo.SysRoleUnionVo;
78
import top.cadecode.uniboot.system.request.SysRoleRequest.SysRoleMappingRequest;
9+
import top.cadecode.uniboot.system.request.SysRoleRequest.SysRoleUnionRequest;
810

911
import java.util.List;
1012

@@ -46,5 +48,9 @@ public interface SysRoleMapper extends BaseMapper<SysRole> {
4648
int insertRoleMenu(List<SysRoleMappingRequest> list);
4749

4850
int insertRoleApi(List<SysRoleMappingRequest> list);
49-
51+
52+
List<SysRoleUnionVo> selectRolesVo(@Param("request") SysRoleUnionRequest request);
53+
54+
List<SysRoleUnionVo> selectRolesVoByRoleIds(@Param("roleIds") List<Long> roleIds);
55+
5056
}

system/src/main/java/top/cadecode/uniboot/system/request/SysRoleRequest.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package top.cadecode.uniboot.system.request;
22

33
import lombok.Data;
4+
import top.cadecode.uniboot.common.response.PageParams;
45

6+
import javax.validation.constraints.NotEmpty;
57
import javax.validation.constraints.NotNull;
68

79
/**
@@ -19,4 +21,29 @@ public static class SysRoleMappingRequest {
1921
@NotNull
2022
private Long roleId;
2123
}
24+
25+
@Data
26+
public static class SysRoleUnionRequest extends PageParams {
27+
private String code;
28+
private String name;
29+
}
30+
31+
@Data
32+
public static class SysRoleUpdateRequest {
33+
@NotNull
34+
private Long id;
35+
private String code;
36+
private String name;
37+
private String description;
38+
}
39+
40+
@Data
41+
public static class SysRoleAddRequest {
42+
@NotEmpty
43+
private String code;
44+
@NotEmpty
45+
private String name;
46+
@NotEmpty
47+
private String description;
48+
}
2249
}

system/src/main/java/top/cadecode/uniboot/system/service/SysRoleService.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
package top.cadecode.uniboot.system.service;
22

33
import com.baomidou.mybatisplus.extension.service.IService;
4+
import com.github.pagehelper.PageInfo;
45
import top.cadecode.uniboot.system.bean.po.SysRole;
6+
import top.cadecode.uniboot.system.bean.vo.SysRoleVo.SysRoleUnionVo;
57
import top.cadecode.uniboot.system.request.SysRoleRequest.SysRoleMappingRequest;
8+
import top.cadecode.uniboot.system.request.SysRoleRequest.SysRoleUnionRequest;
69

710
import java.util.List;
811

@@ -43,4 +46,10 @@ public interface SysRoleService extends IService<SysRole> {
4346
int addRoleMenu(List<SysRoleMappingRequest> list);
4447

4548
int addRoleApi(List<SysRoleMappingRequest> list);
49+
50+
List<SysRoleUnionVo> listUnionVo(SysRoleUnionRequest request);
51+
52+
PageInfo<SysRoleUnionVo> pageUnionVo(SysRoleUnionRequest request);
53+
54+
List<SysRoleUnionVo> listUnionVoByRoleIds(List<Long> roleIds);
4655
}

system/src/main/java/top/cadecode/uniboot/system/serviceimpl/SysRoleServiceImpl.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
11
package top.cadecode.uniboot.system.serviceimpl;
22

33
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
4+
import com.github.pagehelper.PageHelper;
5+
import com.github.pagehelper.PageInfo;
46
import lombok.RequiredArgsConstructor;
57
import org.springframework.stereotype.Service;
68
import top.cadecode.uniboot.system.bean.po.SysRole;
9+
import top.cadecode.uniboot.system.bean.vo.SysRoleVo.SysRoleUnionVo;
710
import top.cadecode.uniboot.system.mapper.SysRoleMapper;
811
import top.cadecode.uniboot.system.request.SysRoleRequest.SysRoleMappingRequest;
12+
import top.cadecode.uniboot.system.request.SysRoleRequest.SysRoleUnionRequest;
913
import top.cadecode.uniboot.system.service.SysRoleService;
1014

1115
import java.util.List;
@@ -96,4 +100,20 @@ public int addRoleMenu(List<SysRoleMappingRequest> list) {
96100
public int addRoleApi(List<SysRoleMappingRequest> list) {
97101
return sysRoleMapper.insertRoleApi(list);
98102
}
103+
104+
@Override
105+
public List<SysRoleUnionVo> listUnionVo(SysRoleUnionRequest request) {
106+
return sysRoleMapper.selectRolesVo(request);
107+
}
108+
109+
@Override
110+
public PageInfo<SysRoleUnionVo> pageUnionVo(SysRoleUnionRequest request) {
111+
return PageHelper.startPage(request.getPageNumber(), request.getPageSize())
112+
.doSelectPageInfo(() -> listUnionVo(request));
113+
}
114+
115+
@Override
116+
public List<SysRoleUnionVo> listUnionVoByRoleIds(List<Long> roleIds) {
117+
return sysRoleMapper.selectRolesVoByRoleIds(roleIds);
118+
}
99119
}

system/src/main/resources/mapper/SysRoleMapper.xml

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,17 @@
11
<?xml version="1.0" encoding="UTF-8" ?>
22
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
33
<mapper namespace="top.cadecode.uniboot.system.mapper.SysRoleMapper">
4+
<resultMap id="SysRoleUnionVoMap" type="top.cadecode.uniboot.system.bean.vo.SysRoleVo$SysRoleUnionVo">
5+
<result column="id" property="id"/>
6+
<result column="code" property="code"/>
7+
<result column="name" property="name"/>
8+
<result column="description" property="description"/>
9+
<result column="create_time" property="createTime"/>
10+
<result column="update_time" property="updateTime"/>
11+
<result column="update_user" property="updateUser"/>
12+
<result column="m_id" property="menus" typeHandler="ObjToStrTypeHandler"/>
13+
<result column="a_id" property="apis" typeHandler="ObjToStrTypeHandler"/>
14+
</resultMap>
415
<select id="selectByUserIds" resultType="top.cadecode.uniboot.system.bean.po.SysRole">
516
SELECT *
617
FROM sys_role_user ru
@@ -37,6 +48,45 @@
3748
)
3849
</if>
3950
</select>
51+
<select id="selectRolesVo" resultMap="SysRoleUnionVoMap">
52+
SELECT sr.*, JSON_ARRAYAGG(sm.id) m_id, JSON_ARRAYAGG(sa.id) a_id
53+
FROM sys_role sr
54+
LEFT JOIN sys_role_menu srm ON srm.role_id = sr.id
55+
LEFT JOIN sys_role_api sra ON sra.role_id = sr.id
56+
LEFT JOIN sys_menu sm ON srm.menu_id = sm.id
57+
LEFT JOIN sys_api sa ON sra.api_id = sa.id
58+
<if test="request != null">
59+
<where>
60+
<if test="request.code != null and request.code.length > 0">
61+
<bind name="bindCode" value="'%' + request.code + '%'"/>
62+
sr.code like #{bindCode}
63+
</if>
64+
<if test="request.name != null and request.name.length > 0">
65+
<bind name="bindName" value="'%' + request.name + '%'"/>
66+
AND sr.name like #{bindName}
67+
</if>
68+
</where>
69+
</if>
70+
GROUP BY sr.id, sr.code
71+
ORDER BY sr.code
72+
</select>
73+
<select id="selectRolesVoByRoleIds" resultMap="SysRoleUnionVoMap">
74+
SELECT sr.*, JSON_ARRAYAGG(sm.id) m_id, JSON_ARRAYAGG(sa.id) a_id
75+
FROM sys_role sr
76+
LEFT JOIN sys_role_menu srm ON srm.role_id = sr.id
77+
LEFT JOIN sys_role_api sra ON sra.role_id = sr.id
78+
LEFT JOIN sys_menu sm ON srm.menu_id = sm.id
79+
LEFT JOIN sys_api sa ON sra.api_id = sa.id
80+
<if test="roleIds != null and roleIds.size > 0">
81+
WHERE sr.id IN (
82+
<foreach collection="roleIds" item="roleId" separator=",">
83+
#{roleId}
84+
</foreach>
85+
)
86+
</if>
87+
GROUP BY sr.id, sr.code
88+
ORDER BY sr.code
89+
</select>
4090
<delete id="deleteRoleUserByUserIds">
4191
DELETE FROM sys_role_user ru
4292
WHERE ru.user_id IN (

0 commit comments

Comments
 (0)