Skip to content

Commit 5243263

Browse files
committed
feat: 添加分页查询用户(带角色)的接口
1 parent e61878a commit 5243263

6 files changed

Lines changed: 80 additions & 7 deletions

File tree

application/src/main/java/top/cadecode/uniboot/controller/SystemController.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package top.cadecode.uniboot.controller;
22

33
import cn.hutool.core.util.ObjectUtil;
4+
import com.github.pagehelper.PageInfo;
45
import io.swagger.annotations.Api;
56
import io.swagger.annotations.ApiOperation;
67
import lombok.RequiredArgsConstructor;
@@ -13,16 +14,19 @@
1314
import org.springframework.web.bind.annotation.RestController;
1415
import top.cadecode.uniboot.common.annotation.ApiFormat;
1516
import top.cadecode.uniboot.common.exception.UniException;
17+
import top.cadecode.uniboot.common.response.PageResult;
1618
import top.cadecode.uniboot.framework.security.TokenAuthHolder;
1719
import top.cadecode.uniboot.system.bean.dto.SysUserDto.SysUserDetailsDto;
1820
import top.cadecode.uniboot.system.bean.dto.SysUserDto.SysUserInfoDto;
1921
import top.cadecode.uniboot.system.bean.po.SysRole;
2022
import top.cadecode.uniboot.system.bean.po.SysUser;
2123
import top.cadecode.uniboot.system.bean.vo.SysMenuVo.SysMenuTreeVo;
2224
import top.cadecode.uniboot.system.bean.vo.SysRoleVo.SysRoleListVo;
25+
import top.cadecode.uniboot.system.bean.vo.SysUserVo.SysUserRolesVo;
2326
import top.cadecode.uniboot.system.convert.SysRoleConvert;
2427
import top.cadecode.uniboot.system.request.SysUserRequest.SysUserModifyInfoRequest;
2528
import top.cadecode.uniboot.system.request.SysUserRequest.SysUserModifyPassRequest;
29+
import top.cadecode.uniboot.system.request.SysUserRequest.SysUserRolesRequest;
2630
import top.cadecode.uniboot.system.service.SysApiService;
2731
import top.cadecode.uniboot.system.service.SysMenuService;
2832
import top.cadecode.uniboot.system.service.SysRoleService;
@@ -83,7 +87,7 @@ public boolean userModifyPass(@RequestBody @Valid SysUserModifyPassRequest reque
8387
SysUserDetailsDto userDetails = TokenAuthHolder.getUserDetails(null);
8488
SysUser sysUser = sysUserService.lambdaQuery().select(SysUser::getPassword)
8589
.eq(SysUser::getId, userDetails.getId()).one();
86-
if (ObjectUtil.notEqual(request.getNewPass(), request.getConfirmedPass())){
90+
if (ObjectUtil.notEqual(request.getNewPass(), request.getConfirmedPass())) {
8791
throw UniException.of("新密码和确认密码不一致");
8892
}
8993
if (!passwordEncoder.matches(request.getOldPass(), sysUser.getPassword())) {
@@ -96,9 +100,16 @@ public boolean userModifyPass(@RequestBody @Valid SysUserModifyPassRequest reque
96100
.update();
97101
}
98102

103+
@ApiOperation("查询用户列表(带角色)")
104+
@PostMapping("user/page_roles_vo")
105+
public PageResult<SysUserRolesVo> userPageRolesVo(@RequestBody @Valid SysUserRolesRequest request) {
106+
PageInfo<SysUserRolesVo> rolesVoPage = sysUserService.pageRolesVo(request);
107+
return new PageResult<>((int) rolesVoPage.getTotal(), rolesVoPage.getList());
108+
}
109+
99110
@ApiOperation("查询角色列表")
100111
@PostMapping("role/list")
101-
public List<SysRoleListVo> roleList(){
112+
public List<SysRoleListVo> roleList() {
102113
List<SysRole> roleList = sysRoleService.list();
103114
return SysRoleConvert.INSTANCE.poToListVo(roleList);
104115
}

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import org.apache.ibatis.annotations.Param;
66
import top.cadecode.uniboot.system.bean.po.SysUser;
77
import top.cadecode.uniboot.system.bean.vo.SysUserVo.SysUserRolesVo;
8+
import top.cadecode.uniboot.system.request.SysUserRequest.SysUserRolesRequest;
89

910
import java.util.List;
1011

@@ -17,7 +18,10 @@
1718
@Mapper
1819
public interface SysUserMapper extends BaseMapper<SysUser> {
1920

20-
List<SysUserRolesVo> listRolesVo(@Param("userIds") List<Long> userIds);
21+
List<SysUserRolesVo> listRolesVoByUserIds(@Param("userIds") List<Long> userIds);
2122

2223
List<SysUserRolesVo> listRolesVoByUsername(@Param("username") String username);
24+
25+
List<SysUserRolesVo> listRolesVo(@Param("request") SysUserRolesRequest request);
26+
2327
}

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

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

33
import lombok.Data;
4+
import lombok.EqualsAndHashCode;
5+
import top.cadecode.uniboot.common.response.PageParams;
46

57
import javax.validation.constraints.Email;
68
import javax.validation.constraints.NotEmpty;
9+
import java.util.List;
710

811
/**
912
* 系统用户请求对象
@@ -32,4 +35,13 @@ public static class SysUserModifyPassRequest{
3235
@NotEmpty
3336
private String confirmedPass;
3437
}
38+
39+
@Data
40+
@EqualsAndHashCode(callSuper = true)
41+
public static class SysUserRolesRequest extends PageParams {
42+
private String username;
43+
private String nickName;
44+
private List<Long> roleIdList;
45+
private Boolean enableFlag;
46+
}
3547
}

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

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +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 org.springframework.security.core.userdetails.UserDetailsService;
56
import top.cadecode.uniboot.system.bean.po.SysUser;
67
import top.cadecode.uniboot.system.bean.vo.SysUserVo.SysUserRolesVo;
8+
import top.cadecode.uniboot.system.request.SysUserRequest.SysUserRolesRequest;
79

810
import java.util.List;
911

@@ -15,6 +17,9 @@
1517
*/
1618
public interface SysUserService extends IService<SysUser>, UserDetailsService {
1719

18-
List<SysUserRolesVo> listRolesVo(List<Long> userIds);
20+
List<SysUserRolesVo> listRolesVoByUserIds(List<Long> userIds);
1921

22+
List<SysUserRolesVo> listRolesVo(SysUserRolesRequest request);
23+
24+
PageInfo<SysUserRolesVo> pageRolesVo(SysUserRolesRequest request);
2025
}

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

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

33
import cn.hutool.core.util.ObjectUtil;
44
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
5+
import com.github.pagehelper.PageHelper;
6+
import com.github.pagehelper.PageInfo;
57
import lombok.RequiredArgsConstructor;
68
import org.springframework.security.core.userdetails.UserDetails;
79
import org.springframework.stereotype.Service;
@@ -10,6 +12,7 @@
1012
import top.cadecode.uniboot.system.bean.vo.SysUserVo.SysUserRolesVo;
1113
import top.cadecode.uniboot.system.convert.SysUserConvert;
1214
import top.cadecode.uniboot.system.mapper.SysUserMapper;
15+
import top.cadecode.uniboot.system.request.SysUserRequest.SysUserRolesRequest;
1316
import top.cadecode.uniboot.system.service.SysUserService;
1417

1518
import java.util.List;
@@ -45,7 +48,18 @@ public UserDetails loadUserByUsername(String username) {
4548
}
4649

4750
@Override
48-
public List<SysUserRolesVo> listRolesVo(List<Long> userIds) {
49-
return sysUserMapper.listRolesVo(userIds);
51+
public List<SysUserRolesVo> listRolesVoByUserIds(List<Long> userIds) {
52+
return sysUserMapper.listRolesVoByUserIds(userIds);
53+
}
54+
55+
@Override
56+
public List<SysUserRolesVo> listRolesVo(SysUserRolesRequest request) {
57+
return sysUserMapper.listRolesVo(request);
58+
}
59+
60+
@Override
61+
public PageInfo<SysUserRolesVo> pageRolesVo(SysUserRolesRequest request) {
62+
return PageHelper.startPage(request.getPageNumber(), request.getPageSize())
63+
.doSelectPageInfo(() -> sysUserMapper.listRolesVo(request));
5064
}
5165
}

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

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
<result column="r_code"/>
2020
</collection>
2121
</resultMap>
22-
<select id="listRolesVo" resultMap="SysUserRolesVoMap">
22+
<select id="listRolesVoByUserIds" resultMap="SysUserRolesVoMap">
2323
SELECT su.*, sr.code r_code
2424
FROM sys_user su
2525
LEFT JOIN sys_role_user sru ON sru.user_id = su.id
@@ -41,4 +41,31 @@
4141
WHERE su.username = #{username}
4242
GROUP BY su.username, sr.code
4343
</select>
44+
<select id="listRolesVo" resultMap="SysUserRolesVoMap">
45+
SELECT su.*, sr.code r_code
46+
FROM sys_user su
47+
LEFT JOIN sys_role_user sru ON sru.user_id = su.id
48+
LEFT JOIN sys_role sr ON sru.role_id = sr.id
49+
<if test="request != null">
50+
<where>
51+
<if test="request.username != null and request.username.length > 0">
52+
su.username like CONCAT(#{request.username}, '%')
53+
</if>
54+
<if test="request.nickName != null and request.nickName.length > 0">
55+
AND su.nick_name like CONCAT(#{request.nickName}, '%')
56+
</if>
57+
<if test="request.enableFlag != null">
58+
AND su.enable_flag = #{request.enableFlag}
59+
</if>
60+
<if test="request.roleIdList != null and request.roleIdList.size > 0 ">
61+
AND sr.id in (
62+
<foreach collection="request.roleIdList" item="id" separator=",">
63+
#{id}
64+
</foreach>
65+
)
66+
</if>
67+
</where>
68+
</if>
69+
GROUP BY su.username, sr.code
70+
</select>
4471
</mapper>

0 commit comments

Comments
 (0)