Skip to content

Commit 5367524

Browse files
committed
feat: 添加查询用户(带角色)方法
1 parent 88d19f0 commit 5367524

7 files changed

Lines changed: 84 additions & 15 deletions

File tree

system/src/main/java/top/cadecode/uniboot/system/bean/po/SysUser.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public class SysUser {
3939
/**
4040
* 是否启用
4141
*/
42-
private boolean enableFlag;
42+
private Boolean enableFlag;
4343

4444
/**
4545
* 性别

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

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

3+
import com.fasterxml.jackson.annotation.JsonIgnore;
34
import lombok.Data;
45

56
import java.util.Date;
@@ -20,9 +21,12 @@ public static class SysUserRolesVo {
2021

2122
private String username;
2223

24+
@JsonIgnore
25+
private String password;
26+
2327
private String nickName;
2428

25-
private boolean enableFlag;
29+
private Boolean enableFlag;
2630

2731
private String sex;
2832

@@ -34,6 +38,12 @@ public static class SysUserRolesVo {
3438

3539
private Date loginDate;
3640

41+
private Date createTime;
42+
43+
private Date updateTime;
44+
45+
private String updateUser;
46+
3747
private List<String> roles;
3848
}
3949
}

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,7 @@ public interface SysUserConvert {
2020
SysUserRolesVo poToRolesVo(SysUser po);
2121

2222
SysUserDetailsDto poToDetailsDto(SysUser po);
23+
24+
SysUserDetailsDto rolesVoToDetailsDto(SysUserRolesVo vo);
25+
2326
}

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,11 @@
22

33
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
44
import org.apache.ibatis.annotations.Mapper;
5+
import org.apache.ibatis.annotations.Param;
56
import top.cadecode.uniboot.system.bean.po.SysUser;
7+
import top.cadecode.uniboot.system.bean.vo.SysUserVo.SysUserRolesVo;
8+
9+
import java.util.List;
610

711
/**
812
* 系统用户 DAO
@@ -12,4 +16,8 @@
1216
*/
1317
@Mapper
1418
public interface SysUserMapper extends BaseMapper<SysUser> {
19+
20+
List<SysUserRolesVo> listRolesVo(@Param("userIds") List<Long> userIds);
21+
22+
List<SysUserRolesVo> listRolesVoByUsername(@Param("username") String username);
1523
}

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
import com.baomidou.mybatisplus.extension.service.IService;
44
import org.springframework.security.core.userdetails.UserDetailsService;
55
import top.cadecode.uniboot.system.bean.po.SysUser;
6+
import top.cadecode.uniboot.system.bean.vo.SysUserVo.SysUserRolesVo;
7+
8+
import java.util.List;
69

710
/**
811
* 系统用户服务
@@ -11,4 +14,7 @@
1114
* @date 2022/5/27
1215
*/
1316
public interface SysUserService extends IService<SysUser>, UserDetailsService {
17+
18+
List<SysUserRolesVo> listRolesVo(List<Long> userIds);
19+
1420
}
Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,18 @@
11
package top.cadecode.uniboot.system.serviceimpl;
22

3+
import cn.hutool.core.util.ObjectUtil;
34
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
45
import lombok.RequiredArgsConstructor;
56
import org.springframework.security.core.userdetails.UserDetails;
67
import org.springframework.stereotype.Service;
78
import top.cadecode.uniboot.common.exception.UniException;
8-
import top.cadecode.uniboot.system.bean.dto.SysUserDto.SysUserDetailsDto;
9-
import top.cadecode.uniboot.system.bean.po.SysRole;
109
import top.cadecode.uniboot.system.bean.po.SysUser;
10+
import top.cadecode.uniboot.system.bean.vo.SysUserVo.SysUserRolesVo;
1111
import top.cadecode.uniboot.system.convert.SysUserConvert;
12-
import top.cadecode.uniboot.system.mapper.SysRoleMapper;
1312
import top.cadecode.uniboot.system.mapper.SysUserMapper;
1413
import top.cadecode.uniboot.system.service.SysUserService;
1514

1615
import java.util.List;
17-
import java.util.Optional;
18-
import java.util.stream.Collectors;
1916

2017
/**
2118
* 系统用户服务实现
@@ -27,23 +24,28 @@
2724
@RequiredArgsConstructor
2825
public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> implements SysUserService {
2926

30-
private final SysRoleMapper sysRoleMapper;
27+
private final SysUserMapper sysUserMapper;
3128

3229
/**
3330
* UserDetailsService 实现
3431
*/
3532
@Override
3633
public UserDetails loadUserByUsername(String username) {
37-
Optional<SysUser> sysUserOpt = lambdaQuery().eq(SysUser::getUsername, username).oneOpt();
34+
List<SysUserRolesVo> userRolesVoList = sysUserMapper.listRolesVoByUsername(username);
3835
// 用户账户不存在
39-
sysUserOpt.orElseThrow(() -> UniException.of("该用户不存在"));
36+
if (ObjectUtil.isEmpty(userRolesVoList)) {
37+
throw UniException.of("该用户不存在");
38+
}
39+
SysUserRolesVo userRolesVo = userRolesVoList.get(0);
4040
// 用户账号被关闭
41-
if (!sysUserOpt.get().isEnableFlag()) {
41+
if (!userRolesVo.getEnableFlag()) {
4242
throw UniException.of("账号已被关闭");
4343
}
44-
SysUserDetailsDto sysUserDetailsDto = SysUserConvert.INSTANCE.poToDetailsDto(sysUserOpt.get());
45-
List<SysRole> sysRoles = sysRoleMapper.listByUserId(sysUserDetailsDto.getId());
46-
sysUserDetailsDto.setRoles(sysRoles.stream().map(SysRole::getCode).collect(Collectors.toList()));
47-
return sysUserDetailsDto;
44+
return SysUserConvert.INSTANCE.rolesVoToDetailsDto(userRolesVo);
45+
}
46+
47+
@Override
48+
public List<SysUserRolesVo> listRolesVo(List<Long> userIds) {
49+
return sysUserMapper.listRolesVo(userIds);
4850
}
4951
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,44 @@
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.SysUserMapper">
4+
<resultMap id="SysUserRolesVoMap" type="top.cadecode.uniboot.system.bean.vo.SysUserVo$SysUserRolesVo">
5+
<result column="id" property="id"/>
6+
<result column="username" property="username"/>
7+
<result column="nick_name" property="nickName"/>
8+
<result column="password" property="password"/>
9+
<result column="enable_flag" property="enableFlag"/>
10+
<result column="sex" property="sex"/>
11+
<result column="phone" property="phone"/>
12+
<result column="mail" property="mail"/>
13+
<result column="loginIp" property="loginIp"/>
14+
<result column="loginDate" property="loginDate"/>
15+
<result column="create_time" property="createTime"/>
16+
<result column="update_time" property="updateTime"/>
17+
<result column="update_user" property="updateUser"/>
18+
<collection property="roles" ofType="string">
19+
<result column="r_code"/>
20+
</collection>
21+
</resultMap>
22+
<select id="listRolesVo" resultMap="SysUserRolesVoMap">
23+
SELECT su.*, sr.code r_code
24+
FROM sys_user su
25+
LEFT JOIN sys_role_user sru ON sru.user_id = su.id
26+
LEFT JOIN sys_role sr ON sru.role_id = sr.id
27+
<if test="userIds != null and userIds.size > 0">
28+
WHERE su.id IN (
29+
<foreach collection="userIds" item="id" separator=",">
30+
#{id}
31+
</foreach>
32+
)
33+
</if>
34+
GROUP BY su.username, sr.code
35+
</select>
36+
<select id="listRolesVoByUsername" resultMap="SysUserRolesVoMap">
37+
SELECT su.*, sr.code r_code
38+
FROM sys_user su
39+
LEFT JOIN sys_role_user sru ON sru.user_id = su.id
40+
LEFT JOIN sys_role sr ON sru.role_id = sr.id
41+
WHERE su.username = #{username}
42+
GROUP BY su.username, sr.code
43+
</select>
444
</mapper>

0 commit comments

Comments
 (0)