Skip to content

Commit ac3c629

Browse files
committed
feat: 使用JacksonTypeHandler实现roles合并
1 parent 17689f7 commit ac3c629

6 files changed

Lines changed: 12 additions & 37 deletions

File tree

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

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package top.cadecode.uniboot.system.bean.vo;
22

3-
import com.fasterxml.jackson.annotation.JsonIgnore;
43
import lombok.Data;
54

65
import java.util.ArrayList;
@@ -66,7 +65,5 @@ public static class SysMenuRolesVo {
6665

6766
private String updateUser;
6867

69-
@JsonIgnore
70-
private String rolesJson;
7168
}
7269
}

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

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,5 @@ public static class SysUserRolesVo {
4545
private String updateUser;
4646

4747
private List<String> roles;
48-
49-
@JsonIgnore
50-
private String rolesJson;
5148
}
5249
}

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

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,10 @@
22

33
import cn.hutool.core.util.ObjectUtil;
44
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
5-
import com.fasterxml.jackson.core.type.TypeReference;
65
import com.github.pagehelper.PageHelper;
76
import com.github.pagehelper.PageInfo;
87
import lombok.RequiredArgsConstructor;
98
import org.springframework.stereotype.Service;
10-
import top.cadecode.uniboot.common.util.JacksonUtil;
119
import top.cadecode.uniboot.system.bean.po.SysMenu;
1210
import top.cadecode.uniboot.system.bean.vo.SysMenuVo.SysMenuRolesVo;
1311
import top.cadecode.uniboot.system.bean.vo.SysMenuVo.SysMenuTreeVo;
@@ -49,9 +47,7 @@ public List<SysMenuTreeVo> listTreeVoByRoles(List<String> roleCodes) {
4947

5048
@Override
5149
public List<SysMenuRolesVo> listRolesVo(SysMenuRolesRequest request) {
52-
return sysMenuMapper.selectRolesVo(request).stream()
53-
.peek(o -> o.setRoles(JacksonUtil.toBean(o.getRolesJson(), new TypeReference<List<String>>() {})))
54-
.collect(Collectors.toList());
50+
return sysMenuMapper.selectRolesVo(request);
5551
}
5652

5753
@Override
@@ -62,9 +58,7 @@ public PageInfo<SysMenuRolesVo> pageRolesVo(SysMenuRolesRequest request) {
6258

6359
@Override
6460
public List<SysMenuRolesVo> listRolesVoByMenuIds(List<Long> menuIds) {
65-
return sysMenuMapper.selectRolesVoByMenuIds(menuIds).stream()
66-
.peek(o -> o.setRoles(JacksonUtil.toBean(o.getRolesJson(), new TypeReference<List<String>>() {})))
67-
.collect(Collectors.toList());
61+
return sysMenuMapper.selectRolesVoByMenuIds(menuIds);
6862
}
6963

7064
private List<SysMenuTreeVo> generateMenuTree(List<SysMenuTreeVo> menus, Long rootId) {

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

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,12 @@
22

33
import cn.hutool.core.util.ObjectUtil;
44
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
5-
import com.fasterxml.jackson.core.type.TypeReference;
65
import com.github.pagehelper.PageHelper;
76
import com.github.pagehelper.PageInfo;
87
import lombok.RequiredArgsConstructor;
98
import org.springframework.security.core.userdetails.UserDetails;
109
import org.springframework.stereotype.Service;
1110
import top.cadecode.uniboot.common.exception.UniException;
12-
import top.cadecode.uniboot.common.util.JacksonUtil;
1311
import top.cadecode.uniboot.system.bean.po.SysUser;
1412
import top.cadecode.uniboot.system.bean.vo.SysUserVo.SysUserRolesVo;
1513
import top.cadecode.uniboot.system.convert.SysUserConvert;
@@ -18,7 +16,6 @@
1816
import top.cadecode.uniboot.system.service.SysUserService;
1917

2018
import java.util.List;
21-
import java.util.stream.Collectors;
2219

2320
/**
2421
* 系统用户服务实现
@@ -52,17 +49,12 @@ public UserDetails loadUserByUsername(String username) {
5249

5350
@Override
5451
public List<SysUserRolesVo> listRolesVoByUserIds(List<Long> userIds) {
55-
// 通过rolesJson转换
56-
return sysUserMapper.selectRolesVoByUserIds(userIds).stream()
57-
.peek(o -> o.setRoles(JacksonUtil.toBean(o.getRolesJson(), new TypeReference<List<String>>() {})))
58-
.collect(Collectors.toList());
52+
return sysUserMapper.selectRolesVoByUserIds(userIds);
5953
}
6054

6155
@Override
6256
public List<SysUserRolesVo> listRolesVo(SysUserRolesRequest request) {
63-
return sysUserMapper.selectRolesVo(request).stream()
64-
.peek(o -> o.setRoles(JacksonUtil.toBean(o.getRolesJson(), new TypeReference<List<String>>() {})))
65-
.collect(Collectors.toList());
57+
return sysUserMapper.selectRolesVo(request);
6658
}
6759

6860
@Override

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

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,7 @@
1515
<result column="create_time" property="createTime"/>
1616
<result column="update_time" property="updateTime"/>
1717
<result column="update_user" property="updateUser"/>
18-
<result column="r_code" property="rolesJson"/>
19-
<collection property="roles" ofType="string">
20-
<result column="r_code"/>
21-
</collection>
18+
<result column="r_code" property="roles" typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"/>
2219
</resultMap>
2320
<select id="selectByRoles" resultType="top.cadecode.uniboot.system.bean.po.SysMenu">
2421
SELECT DISTINCT sm.*
@@ -38,10 +35,10 @@
3835
<if test="request != null">
3936
<where>
4037
<if test="request.routeName != null and request.routeName.length > 0">
41-
sm.route_name like CONCAT(#{request.routeName}, '%')
38+
sm.route_name like CONCAT('%', #{request.routeName}, '%')
4239
</if>
4340
<if test="request.menuName != null and request.menuName.length > 0">
44-
AND sm.menu_name like CONCAT(#{request.menuName}, '%')
41+
AND sm.menu_name like CONCAT('%', #{request.menuName}, '%')
4542
</if>
4643
<if test="request.enableFlag != null">
4744
AND sm.enable_flag = #{request.enableFlag}

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

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,7 @@
1515
<result column="create_time" property="createTime"/>
1616
<result column="update_time" property="updateTime"/>
1717
<result column="update_user" property="updateUser"/>
18-
<result column="r_code" property="rolesJson"/>
19-
<collection property="roles" ofType="string">
20-
<result column="r_code"/>
21-
</collection>
18+
<result column="r_code" property="roles" typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"/>
2219
</resultMap>
2320
<select id="selectRolesVoByUserIds" resultMap="SysUserRolesVoMap">
2421
SELECT su.*, JSON_ARRAYAGG(sr.code) r_code
@@ -36,11 +33,12 @@
3633
ORDER BY su.create_time DESC
3734
</select>
3835
<select id="selectRolesVoByUsername" resultMap="SysUserRolesVoMap">
39-
SELECT su.*, sr.code r_code
36+
SELECT su.*, JSON_ARRAYAGG(sr.code) r_code
4037
FROM sys_user su
4138
LEFT JOIN sys_role_user sru ON sru.user_id = su.id
4239
LEFT JOIN sys_role sr ON sru.role_id = sr.id
4340
WHERE su.username = #{username}
41+
GROUP BY su.id
4442
</select>
4543
<select id="selectRolesVo" resultMap="SysUserRolesVoMap">
4644
SELECT su.*, JSON_ARRAYAGG(sr.code) r_code
@@ -50,10 +48,10 @@
5048
<if test="request != null">
5149
<where>
5250
<if test="request.username != null and request.username.length > 0">
53-
su.username like CONCAT(#{request.username}, '%')
51+
su.username like CONCAT('%', #{request.username}, '%')
5452
</if>
5553
<if test="request.nickName != null and request.nickName.length > 0">
56-
AND su.nick_name like CONCAT(#{request.nickName}, '%')
54+
AND su.nick_name like CONCAT('%', #{request.nickName}, '%')
5755
</if>
5856
<if test="request.enableFlag != null">
5957
AND su.enable_flag = #{request.enableFlag}

0 commit comments

Comments
 (0)