Commit 42dc4b6194bbc3ea7090e868604c631e9dd16fc0

Authored by YunaiV
1 parent d4cf945a

🔧 简化 user 模块的 VO

Showing 18 changed files with 222 additions and 453 deletions
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/user/AdminUserApiImpl.java
1 package cn.iocoder.yudao.module.system.api.user; 1 package cn.iocoder.yudao.module.system.api.user;
2 2
  3 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
3 import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; 4 import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
4 -import cn.iocoder.yudao.module.system.convert.user.UserConvert;  
5 import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO; 5 import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
6 import cn.iocoder.yudao.module.system.service.user.AdminUserService; 6 import cn.iocoder.yudao.module.system.service.user.AdminUserService;
7 import org.springframework.stereotype.Service; 7 import org.springframework.stereotype.Service;
@@ -24,25 +24,25 @@ public class AdminUserApiImpl implements AdminUserApi { @@ -24,25 +24,25 @@ public class AdminUserApiImpl implements AdminUserApi {
24 @Override 24 @Override
25 public AdminUserRespDTO getUser(Long id) { 25 public AdminUserRespDTO getUser(Long id) {
26 AdminUserDO user = userService.getUser(id); 26 AdminUserDO user = userService.getUser(id);
27 - return UserConvert.INSTANCE.convert4(user); 27 + return BeanUtils.toBean(user, AdminUserRespDTO.class);
28 } 28 }
29 29
30 @Override 30 @Override
31 public List<AdminUserRespDTO> getUserList(Collection<Long> ids) { 31 public List<AdminUserRespDTO> getUserList(Collection<Long> ids) {
32 List<AdminUserDO> users = userService.getUserList(ids); 32 List<AdminUserDO> users = userService.getUserList(ids);
33 - return UserConvert.INSTANCE.convertList4(users); 33 + return BeanUtils.toBean(users, AdminUserRespDTO.class);
34 } 34 }
35 35
36 @Override 36 @Override
37 public List<AdminUserRespDTO> getUserListByDeptIds(Collection<Long> deptIds) { 37 public List<AdminUserRespDTO> getUserListByDeptIds(Collection<Long> deptIds) {
38 List<AdminUserDO> users = userService.getUserListByDeptIds(deptIds); 38 List<AdminUserDO> users = userService.getUserListByDeptIds(deptIds);
39 - return UserConvert.INSTANCE.convertList4(users); 39 + return BeanUtils.toBean(users, AdminUserRespDTO.class);
40 } 40 }
41 41
42 @Override 42 @Override
43 public List<AdminUserRespDTO> getUserListByPostIds(Collection<Long> postIds) { 43 public List<AdminUserRespDTO> getUserListByPostIds(Collection<Long> postIds) {
44 List<AdminUserDO> users = userService.getUserListByPostIds(postIds); 44 List<AdminUserDO> users = userService.getUserListByPostIds(postIds);
45 - return UserConvert.INSTANCE.convertList4(users); 45 + return BeanUtils.toBean(users, AdminUserRespDTO.class);
46 } 46 }
47 47
48 @Override 48 @Override
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserController.java
1 package cn.iocoder.yudao.module.system.controller.admin.user; 1 package cn.iocoder.yudao.module.system.controller.admin.user;
2 2
3 import cn.hutool.core.collection.CollUtil; 3 import cn.hutool.core.collection.CollUtil;
  4 +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
  5 +import cn.iocoder.yudao.framework.common.pojo.CommonResult;
  6 +import cn.iocoder.yudao.framework.common.pojo.PageParam;
  7 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
  8 +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
  9 +import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
4 import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.*; 10 import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.*;
5 import cn.iocoder.yudao.module.system.convert.user.UserConvert; 11 import cn.iocoder.yudao.module.system.convert.user.UserConvert;
6 import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO; 12 import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
7 import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO; 13 import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
  14 +import cn.iocoder.yudao.module.system.enums.common.SexEnum;
8 import cn.iocoder.yudao.module.system.service.dept.DeptService; 15 import cn.iocoder.yudao.module.system.service.dept.DeptService;
9 import cn.iocoder.yudao.module.system.service.user.AdminUserService; 16 import cn.iocoder.yudao.module.system.service.user.AdminUserService;
10 -import cn.iocoder.yudao.module.system.enums.common.SexEnum;  
11 -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;  
12 -import cn.iocoder.yudao.framework.common.pojo.CommonResult;  
13 -import cn.iocoder.yudao.framework.common.pojo.PageResult;  
14 -import cn.iocoder.yudao.framework.common.util.collection.MapUtils;  
15 -import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;  
16 -import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;  
17 -import io.swagger.v3.oas.annotations.tags.Tag; 17 +import io.swagger.v3.oas.annotations.Operation;
18 import io.swagger.v3.oas.annotations.Parameter; 18 import io.swagger.v3.oas.annotations.Parameter;
19 import io.swagger.v3.oas.annotations.Parameters; 19 import io.swagger.v3.oas.annotations.Parameters;
20 -import io.swagger.v3.oas.annotations.Operation; 20 +import io.swagger.v3.oas.annotations.tags.Tag;
21 import org.springframework.security.access.prepost.PreAuthorize; 21 import org.springframework.security.access.prepost.PreAuthorize;
22 import org.springframework.validation.annotation.Validated; 22 import org.springframework.validation.annotation.Validated;
23 import org.springframework.web.bind.annotation.*; 23 import org.springframework.web.bind.annotation.*;
@@ -27,11 +27,12 @@ import javax.annotation.Resource; @@ -27,11 +27,12 @@ import javax.annotation.Resource;
27 import javax.servlet.http.HttpServletResponse; 27 import javax.servlet.http.HttpServletResponse;
28 import javax.validation.Valid; 28 import javax.validation.Valid;
29 import java.io.IOException; 29 import java.io.IOException;
30 -import java.util.*; 30 +import java.util.Arrays;
  31 +import java.util.List;
  32 +import java.util.Map;
31 33
32 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; 34 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
33 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; 35 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
34 -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;  
35 import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; 36 import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
36 37
37 @Tag(name = "管理后台 - 用户") 38 @Tag(name = "管理后台 - 用户")
@@ -48,7 +49,7 @@ public class UserController { @@ -48,7 +49,7 @@ public class UserController {
48 @PostMapping("/create") 49 @PostMapping("/create")
49 @Operation(summary = "新增用户") 50 @Operation(summary = "新增用户")
50 @PreAuthorize("@ss.hasPermission('system:user:create')") 51 @PreAuthorize("@ss.hasPermission('system:user:create')")
51 - public CommonResult<Long> createUser(@Valid @RequestBody UserCreateReqVO reqVO) { 52 + public CommonResult<Long> createUser(@Valid @RequestBody UserSaveReqVO reqVO) {
52 Long id = userService.createUser(reqVO); 53 Long id = userService.createUser(reqVO);
53 return success(id); 54 return success(id);
54 } 55 }
@@ -56,7 +57,7 @@ public class UserController { @@ -56,7 +57,7 @@ public class UserController {
56 @PutMapping("update") 57 @PutMapping("update")
57 @Operation(summary = "修改用户") 58 @Operation(summary = "修改用户")
58 @PreAuthorize("@ss.hasPermission('system:user:update')") 59 @PreAuthorize("@ss.hasPermission('system:user:update')")
59 - public CommonResult<Boolean> updateUser(@Valid @RequestBody UserUpdateReqVO reqVO) { 60 + public CommonResult<Boolean> updateUser(@Valid @RequestBody UserSaveReqVO reqVO) {
60 userService.updateUser(reqVO); 61 userService.updateUser(reqVO);
61 return success(true); 62 return success(true);
62 } 63 }
@@ -89,56 +90,27 @@ public class UserController { @@ -89,56 +90,27 @@ public class UserController {
89 @GetMapping("/page") 90 @GetMapping("/page")
90 @Operation(summary = "获得用户分页列表") 91 @Operation(summary = "获得用户分页列表")
91 @PreAuthorize("@ss.hasPermission('system:user:list')") 92 @PreAuthorize("@ss.hasPermission('system:user:list')")
92 - public CommonResult<PageResult<UserPageItemRespVO>> getUserPage(@Valid UserPageReqVO reqVO) { 93 + public CommonResult<PageResult<UserRespVO>> getUserPage(@Valid UserPageReqVO pageReqVO) {
93 // 获得用户分页列表 94 // 获得用户分页列表
94 - PageResult<AdminUserDO> pageResult = userService.getUserPage(reqVO); 95 + PageResult<AdminUserDO> pageResult = userService.getUserPage(pageReqVO);
95 if (CollUtil.isEmpty(pageResult.getList())) { 96 if (CollUtil.isEmpty(pageResult.getList())) {
96 - return success(new PageResult<>(pageResult.getTotal())); // 返回空 97 + return success(new PageResult<>(pageResult.getTotal()));
97 } 98 }
98 -  
99 - // 获得拼接需要的数据  
100 - Collection<Long> deptIds = convertList(pageResult.getList(), AdminUserDO::getDeptId);  
101 - Map<Long, DeptDO> deptMap = deptService.getDeptMap(deptIds);  
102 - // 拼接结果返回  
103 - List<UserPageItemRespVO> userList = new ArrayList<>(pageResult.getList().size());  
104 - pageResult.getList().forEach(user -> {  
105 - UserPageItemRespVO respVO = UserConvert.INSTANCE.convert(user);  
106 - respVO.setDept(UserConvert.INSTANCE.convert(deptMap.get(user.getDeptId())));  
107 - userList.add(respVO);  
108 - });  
109 - return success(new PageResult<>(userList, pageResult.getTotal()));  
110 - }  
111 -  
112 - // TODO @芋艿:看看这里怎么统一调整下;客户的选择组件;  
113 - @GetMapping("/all")  
114 - @Operation(summary = "查询所有用户列表")  
115 - public CommonResult<List<UserPageItemRespVO>> getAllUser() {  
116 - // 获得用户分页列表  
117 - List<AdminUserDO> pageResult = userService.getUserList();  
118 - if (CollUtil.isEmpty(pageResult)) {  
119 - return success(Collections.emptyList()); // 返回空  
120 - }  
121 -  
122 - // 获得拼接需要的数据  
123 - Collection<Long> deptIds = convertList(pageResult, AdminUserDO::getDeptId);  
124 - Map<Long, DeptDO> deptMap = deptService.getDeptMap(deptIds);  
125 - // 拼接结果返回  
126 - List<UserPageItemRespVO> userList = new ArrayList<>(pageResult.size());  
127 - pageResult.forEach(user -> {  
128 - UserPageItemRespVO respVO = UserConvert.INSTANCE.convert(user);  
129 - respVO.setDept(UserConvert.INSTANCE.convert(deptMap.get(user.getDeptId())));  
130 - userList.add(respVO);  
131 - });  
132 - return success(userList); 99 + // 拼接数据
  100 + Map<Long, DeptDO> deptMap = deptService.getDeptMap(
  101 + convertList(pageResult.getList(), AdminUserDO::getDeptId));
  102 + return success(new PageResult<>(UserConvert.INSTANCE.convertList(pageResult.getList(), deptMap),
  103 + pageResult.getTotal()));
133 } 104 }
134 105
135 - @GetMapping("/list-all-simple") 106 + @GetMapping({"/list-all-simple", "/simple-list"})
136 @Operation(summary = "获取用户精简信息列表", description = "只包含被开启的用户,主要用于前端的下拉选项") 107 @Operation(summary = "获取用户精简信息列表", description = "只包含被开启的用户,主要用于前端的下拉选项")
137 public CommonResult<List<UserSimpleRespVO>> getSimpleUserList() { 108 public CommonResult<List<UserSimpleRespVO>> getSimpleUserList() {
138 - // 获用户列表,只要开启状态的  
139 List<AdminUserDO> list = userService.getUserListByStatus(CommonStatusEnum.ENABLE.getStatus()); 109 List<AdminUserDO> list = userService.getUserListByStatus(CommonStatusEnum.ENABLE.getStatus());
140 - // 排序后,返回给前端  
141 - return success(UserConvert.INSTANCE.convertList04(list)); 110 + // 拼接数据
  111 + Map<Long, DeptDO> deptMap = deptService.getDeptMap(
  112 + convertList(list, AdminUserDO::getDeptId));
  113 + return success(UserConvert.INSTANCE.convertSimpleList(list, deptMap));
142 } 114 }
143 115
144 @GetMapping("/get") 116 @GetMapping("/get")
@@ -147,41 +119,24 @@ public class UserController { @@ -147,41 +119,24 @@ public class UserController {
147 @PreAuthorize("@ss.hasPermission('system:user:query')") 119 @PreAuthorize("@ss.hasPermission('system:user:query')")
148 public CommonResult<UserRespVO> getUser(@RequestParam("id") Long id) { 120 public CommonResult<UserRespVO> getUser(@RequestParam("id") Long id) {
149 AdminUserDO user = userService.getUser(id); 121 AdminUserDO user = userService.getUser(id);
150 - // 获得部门数据 122 + // 拼接数据
151 DeptDO dept = deptService.getDept(user.getDeptId()); 123 DeptDO dept = deptService.getDept(user.getDeptId());
152 - return success(UserConvert.INSTANCE.convert(user).setDept(UserConvert.INSTANCE.convert(dept))); 124 + return success(UserConvert.INSTANCE.convert(user, dept));
153 } 125 }
154 126
155 @GetMapping("/export") 127 @GetMapping("/export")
156 @Operation(summary = "导出用户") 128 @Operation(summary = "导出用户")
157 @PreAuthorize("@ss.hasPermission('system:user:export')") 129 @PreAuthorize("@ss.hasPermission('system:user:export')")
158 @OperateLog(type = EXPORT) 130 @OperateLog(type = EXPORT)
159 - public void exportUserList(@Validated UserExportReqVO reqVO, 131 + public void exportUserList(@Validated UserPageReqVO exportReqVO,
160 HttpServletResponse response) throws IOException { 132 HttpServletResponse response) throws IOException {
161 - // 获得用户列表  
162 - List<AdminUserDO> users = userService.getUserList(reqVO);  
163 -  
164 - // 获得拼接需要的数据  
165 - Collection<Long> deptIds = convertList(users, AdminUserDO::getDeptId);  
166 - Map<Long, DeptDO> deptMap = deptService.getDeptMap(deptIds);  
167 - Map<Long, AdminUserDO> deptLeaderUserMap = userService.getUserMap(  
168 - convertSet(deptMap.values(), DeptDO::getLeaderUserId));  
169 - // 拼接数据  
170 - List<UserExcelVO> excelUsers = new ArrayList<>(users.size());  
171 - users.forEach(user -> {  
172 - UserExcelVO excelVO = UserConvert.INSTANCE.convert02(user);  
173 - // 设置部门  
174 - MapUtils.findAndThen(deptMap, user.getDeptId(), dept -> {  
175 - excelVO.setDeptName(dept.getName());  
176 - // 设置部门负责人的名字  
177 - MapUtils.findAndThen(deptLeaderUserMap, dept.getLeaderUserId(),  
178 - deptLeaderUser -> excelVO.setDeptLeaderNickname(deptLeaderUser.getNickname()));  
179 - });  
180 - excelUsers.add(excelVO);  
181 - });  
182 -  
183 - // 输出  
184 - ExcelUtils.write(response, "用户数据.xls", "用户列表", UserExcelVO.class, excelUsers); 133 + exportReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
  134 + List<AdminUserDO> list = userService.getUserPage(exportReqVO).getList();
  135 + // 输出 Excel
  136 + Map<Long, DeptDO> deptMap = deptService.getDeptMap(
  137 + convertList(list, AdminUserDO::getDeptId));
  138 + ExcelUtils.write(response, "用户数据.xls", "数据", UserRespVO.class,
  139 + UserConvert.INSTANCE.convertList(list, deptMap));
185 } 140 }
186 141
187 @GetMapping("/get-import-template") 142 @GetMapping("/get-import-template")
@@ -194,7 +149,6 @@ public class UserController { @@ -194,7 +149,6 @@ public class UserController {
194 UserImportExcelVO.builder().username("yuanma").deptId(2L).email("yuanma@iocoder.cn").mobile("15601701300") 149 UserImportExcelVO.builder().username("yuanma").deptId(2L).email("yuanma@iocoder.cn").mobile("15601701300")
195 .nickname("源码").status(CommonStatusEnum.DISABLE.getStatus()).sex(SexEnum.FEMALE.getSex()).build() 150 .nickname("源码").status(CommonStatusEnum.DISABLE.getStatus()).sex(SexEnum.FEMALE.getSex()).build()
196 ); 151 );
197 -  
198 // 输出 152 // 输出
199 ExcelUtils.write(response, "用户导入模板.xls", "用户列表", UserImportExcelVO.class, list); 153 ExcelUtils.write(response, "用户导入模板.xls", "用户列表", UserImportExcelVO.class, list);
200 } 154 }
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserProfileController.java
@@ -58,27 +58,18 @@ public class UserProfileController { @@ -58,27 +58,18 @@ public class UserProfileController {
58 @GetMapping("/get") 58 @GetMapping("/get")
59 @Operation(summary = "获得登录用户信息") 59 @Operation(summary = "获得登录用户信息")
60 @DataPermission(enable = false) // 关闭数据权限,避免只查看自己时,查询不到部门。 60 @DataPermission(enable = false) // 关闭数据权限,避免只查看自己时,查询不到部门。
61 - public CommonResult<UserProfileRespVO> profile() { 61 + public CommonResult<UserProfileRespVO> getUserProfile() {
62 // 获得用户基本信息 62 // 获得用户基本信息
63 AdminUserDO user = userService.getUser(getLoginUserId()); 63 AdminUserDO user = userService.getUser(getLoginUserId());
64 - UserProfileRespVO resp = UserConvert.INSTANCE.convert03(user);  
65 // 获得用户角色 64 // 获得用户角色
66 List<RoleDO> userRoles = roleService.getRoleListFromCache(permissionService.getUserRoleIdListByUserId(user.getId())); 65 List<RoleDO> userRoles = roleService.getRoleListFromCache(permissionService.getUserRoleIdListByUserId(user.getId()));
67 - resp.setRoles(UserConvert.INSTANCE.convertList(userRoles));  
68 // 获得部门信息 66 // 获得部门信息
69 - if (user.getDeptId() != null) {  
70 - DeptDO dept = deptService.getDept(user.getDeptId());  
71 - resp.setDept(UserConvert.INSTANCE.convert02(dept));  
72 - } 67 + DeptDO dept = user.getDeptId() != null ? deptService.getDept(user.getDeptId()) : null;
73 // 获得岗位信息 68 // 获得岗位信息
74 - if (CollUtil.isNotEmpty(user.getPostIds())) {  
75 - List<PostDO> posts = postService.getPostList(user.getPostIds());  
76 - resp.setPosts(UserConvert.INSTANCE.convertList02(posts));  
77 - } 69 + List<PostDO> posts = CollUtil.isNotEmpty(user.getPostIds()) ? postService.getPostList(user.getPostIds()) : null;
78 // 获得社交用户信息 70 // 获得社交用户信息
79 List<SocialUserDO> socialUsers = socialService.getSocialUserList(user.getId(), UserTypeEnum.ADMIN.getValue()); 71 List<SocialUserDO> socialUsers = socialService.getSocialUserList(user.getId(), UserTypeEnum.ADMIN.getValue());
80 - resp.setSocialUsers(UserConvert.INSTANCE.convertList03(socialUsers));  
81 - return success(resp); 72 + return success(UserConvert.INSTANCE.convert(user, userRoles, dept, posts, socialUsers));
82 } 73 }
83 74
84 @PutMapping("/update") 75 @PutMapping("/update")
@@ -95,7 +86,8 @@ public class UserProfileController { @@ -95,7 +86,8 @@ public class UserProfileController {
95 return success(true); 86 return success(true);
96 } 87 }
97 88
98 - @RequestMapping(value = "/update-avatar", method = {RequestMethod.POST, RequestMethod.PUT}) // 解决 uni-app 不支持 Put 上传文件的问题 89 + @RequestMapping(value = "/update-avatar",
  90 + method = {RequestMethod.POST, RequestMethod.PUT}) // 解决 uni-app 不支持 Put 上传文件的问题
99 @Operation(summary = "上传用户个人头像") 91 @Operation(summary = "上传用户个人头像")
100 public CommonResult<String> updateUserAvatar(@RequestParam("avatarFile") MultipartFile file) throws Exception { 92 public CommonResult<String> updateUserAvatar(@RequestParam("avatarFile") MultipartFile file) throws Exception {
101 if (file.isEmpty()) { 93 if (file.isEmpty()) {
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/profile/UserProfileRespVO.java
1 package cn.iocoder.yudao.module.system.controller.admin.user.vo.profile; 1 package cn.iocoder.yudao.module.system.controller.admin.user.vo.profile;
2 2
3 -import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserBaseVO; 3 +import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptSimpleRespVO;
  4 +import cn.iocoder.yudao.module.system.controller.admin.dept.vo.post.PostSimpleRespVO;
  5 +import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.RoleSimpleRespVO;
4 import io.swagger.v3.oas.annotations.media.Schema; 6 import io.swagger.v3.oas.annotations.media.Schema;
5 -import lombok.AllArgsConstructor;  
6 import lombok.Data; 7 import lombok.Data;
7 -import lombok.EqualsAndHashCode;  
8 -import lombok.NoArgsConstructor;  
9 8
10 import java.time.LocalDateTime; 9 import java.time.LocalDateTime;
11 import java.util.List; 10 import java.util.List;
12 11
13 -  
14 @Data 12 @Data
15 -@EqualsAndHashCode(callSuper = true)  
16 -@NoArgsConstructor  
17 -@AllArgsConstructor  
18 @Schema(description = "管理后台 - 用户个人中心信息 Response VO") 13 @Schema(description = "管理后台 - 用户个人中心信息 Response VO")
19 -public class UserProfileRespVO extends UserBaseVO { 14 +public class UserProfileRespVO {
20 15
21 @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") 16 @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
22 private Long id; 17 private Long id;
23 18
24 - @Schema(description = "状态,参见 CommonStatusEnum 枚举类", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")  
25 - private Integer status; 19 + @Schema(description = "用户账号", requiredMode = Schema.RequiredMode.REQUIRED, example = "yudao")
  20 + private String username;
  21 +
  22 + @Schema(description = "用户昵称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
  23 + private String nickname;
  24 +
  25 + @Schema(description = "用户邮箱", example = "yudao@iocoder.cn")
  26 + private String email;
  27 +
  28 + @Schema(description = "手机号码", example = "15601691300")
  29 + private String mobile;
  30 +
  31 + @Schema(description = "用户性别,参见 SexEnum 枚举类", example = "1")
  32 + private Integer sex;
  33 +
  34 + @Schema(description = "用户头像", example = "https://www.iocoder.cn/xxx.png")
  35 + private String avatar;
26 36
27 @Schema(description = "最后登录 IP", requiredMode = Schema.RequiredMode.REQUIRED, example = "192.168.1.1") 37 @Schema(description = "最后登录 IP", requiredMode = Schema.RequiredMode.REQUIRED, example = "192.168.1.1")
28 private String loginIp; 38 private String loginIp;
@@ -36,58 +46,20 @@ public class UserProfileRespVO extends UserBaseVO { @@ -36,58 +46,20 @@ public class UserProfileRespVO extends UserBaseVO {
36 /** 46 /**
37 * 所属角色 47 * 所属角色
38 */ 48 */
39 - private List<Role> roles;  
40 - 49 + private List<RoleSimpleRespVO> roles;
41 /** 50 /**
42 * 所在部门 51 * 所在部门
43 */ 52 */
44 - private Dept dept;  
45 - 53 + private DeptSimpleRespVO dept;
46 /** 54 /**
47 * 所属岗位数组 55 * 所属岗位数组
48 */ 56 */
49 - private List<Post> posts; 57 + private List<PostSimpleRespVO> posts;
50 /** 58 /**
51 * 社交用户数组 59 * 社交用户数组
52 */ 60 */
53 private List<SocialUser> socialUsers; 61 private List<SocialUser> socialUsers;
54 62
55 - @Schema(description = "角色")  
56 - @Data  
57 - public static class Role {  
58 -  
59 - @Schema(description = "角色编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")  
60 - private Long id;  
61 -  
62 - @Schema(description = "角色名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "普通角色")  
63 - private String name;  
64 -  
65 - }  
66 -  
67 - @Schema(description = "部门")  
68 - @Data  
69 - public static class Dept {  
70 -  
71 - @Schema(description = "部门编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")  
72 - private Long id;  
73 -  
74 - @Schema(description = "部门名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "研发部")  
75 - private String name;  
76 -  
77 - }  
78 -  
79 - @Schema(description = "岗位")  
80 - @Data  
81 - public static class Post {  
82 -  
83 - @Schema(description = "岗位编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")  
84 - private Long id;  
85 -  
86 - @Schema(description = "岗位名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "开发")  
87 - private String name;  
88 -  
89 - }  
90 -  
91 @Schema(description = "社交用户") 63 @Schema(description = "社交用户")
92 @Data 64 @Data
93 public static class SocialUser { 65 public static class SocialUser {
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserCreateReqVO.java deleted
1 -package cn.iocoder.yudao.module.system.controller.admin.user.vo.user;  
2 -  
3 -import io.swagger.v3.oas.annotations.media.Schema;  
4 -import lombok.Data;  
5 -import lombok.EqualsAndHashCode;  
6 -import org.hibernate.validator.constraints.Length;  
7 -  
8 -import javax.validation.constraints.NotEmpty;  
9 -  
10 -@Schema(description = "管理后台 - 用户创建 Request VO")  
11 -@Data  
12 -@EqualsAndHashCode(callSuper = true)  
13 -public class UserCreateReqVO extends UserBaseVO {  
14 -  
15 - @Schema(description = "密码", requiredMode = Schema.RequiredMode.REQUIRED, example = "123456")  
16 - @NotEmpty(message = "密码不能为空")  
17 - @Length(min = 4, max = 16, message = "密码长度为 4-16 位")  
18 - private String password;  
19 -  
20 -}  
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserExcelVO.java deleted
1 -package cn.iocoder.yudao.module.system.controller.admin.user.vo.user;  
2 -  
3 -import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;  
4 -import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;  
5 -import cn.iocoder.yudao.module.system.enums.DictTypeConstants;  
6 -import com.alibaba.excel.annotation.ExcelProperty;  
7 -import lombok.Data;  
8 -  
9 -import java.time.LocalDateTime;  
10 -  
11 -/**  
12 - * 用户 Excel 导出 VO  
13 - */  
14 -@Data  
15 -public class UserExcelVO {  
16 -  
17 - @ExcelProperty("用户编号")  
18 - private Long id;  
19 -  
20 - @ExcelProperty("用户名称")  
21 - private String username;  
22 -  
23 - @ExcelProperty("用户昵称")  
24 - private String nickname;  
25 -  
26 - @ExcelProperty("用户邮箱")  
27 - private String email;  
28 -  
29 - @ExcelProperty("手机号码")  
30 - private String mobile;  
31 -  
32 - @ExcelProperty(value = "用户性别", converter = DictConvert.class)  
33 - @DictFormat(DictTypeConstants.USER_SEX)  
34 - private Integer sex;  
35 -  
36 - @ExcelProperty(value = "帐号状态", converter = DictConvert.class)  
37 - @DictFormat(DictTypeConstants.COMMON_STATUS)  
38 - private Integer status;  
39 -  
40 - @ExcelProperty("最后登录IP")  
41 - private String loginIp;  
42 -  
43 - @ExcelProperty("最后登录时间")  
44 - private LocalDateTime loginDate;  
45 -  
46 - @ExcelProperty("部门名称")  
47 - private String deptName;  
48 -  
49 - @ExcelProperty("部门负责人")  
50 - private String deptLeaderNickname;  
51 -  
52 -}  
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserExportReqVO.java deleted
1 -package cn.iocoder.yudao.module.system.controller.admin.user.vo.user;  
2 -  
3 -import io.swagger.v3.oas.annotations.media.Schema;  
4 -import lombok.AllArgsConstructor;  
5 -import lombok.Data;  
6 -import lombok.NoArgsConstructor;  
7 -import org.springframework.format.annotation.DateTimeFormat;  
8 -  
9 -import java.time.LocalDateTime;  
10 -  
11 -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;  
12 -  
13 -@Schema(description = "管理后台 - 用户导出 Request VO,参数和 UserPageReqVO 是一致的")  
14 -@Data  
15 -@NoArgsConstructor  
16 -@AllArgsConstructor  
17 -public class UserExportReqVO {  
18 -  
19 - @Schema(description = "用户账号,模糊匹配", example = "yudao")  
20 - private String username;  
21 -  
22 - @Schema(description = "手机号码,模糊匹配", example = "yudao")  
23 - private String mobile;  
24 -  
25 - @Schema(description = "展示状态,参见 CommonStatusEnum 枚举类", example = "1")  
26 - private Integer status;  
27 -  
28 - @Schema(description = "创建时间", example = "[2022-07-01 00:00:00,2022-07-01 23:59:59]")  
29 - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)  
30 - private LocalDateTime[] createTime;  
31 -  
32 - @Schema(description = "部门编号,同时筛选子部门", example = "1024")  
33 - private Long deptId;  
34 -  
35 -}  
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserPageItemRespVO.java deleted
1 -package cn.iocoder.yudao.module.system.controller.admin.user.vo.user;  
2 -  
3 -import io.swagger.v3.oas.annotations.media.Schema;  
4 -import lombok.AllArgsConstructor;  
5 -import lombok.Data;  
6 -import lombok.EqualsAndHashCode;  
7 -import lombok.NoArgsConstructor;  
8 -  
9 -@Schema(description = "管理后台 - 用户分页时的信息 Response VO,相比用户基本信息来说,会多部门信息")  
10 -@Data  
11 -@NoArgsConstructor  
12 -@AllArgsConstructor  
13 -@EqualsAndHashCode(callSuper = true)  
14 -public class UserPageItemRespVO extends UserRespVO {  
15 -  
16 - /**  
17 - * 所在部门  
18 - */  
19 - private Dept dept;  
20 -  
21 - @Schema(description = "部门")  
22 - @Data  
23 - public static class Dept {  
24 -  
25 - @Schema(description = "部门编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")  
26 - private Long id;  
27 -  
28 - @Schema(description = "部门名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "研发部")  
29 - private String name;  
30 -  
31 - }  
32 -  
33 -}  
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserRespVO.java
1 package cn.iocoder.yudao.module.system.controller.admin.user.vo.user; 1 package cn.iocoder.yudao.module.system.controller.admin.user.vo.user;
2 2
  3 +import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
  4 +import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
  5 +import cn.iocoder.yudao.module.system.enums.DictTypeConstants;
  6 +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
  7 +import com.alibaba.excel.annotation.ExcelProperty;
3 import io.swagger.v3.oas.annotations.media.Schema; 8 import io.swagger.v3.oas.annotations.media.Schema;
4 -import lombok.*; 9 +import lombok.Data;
5 10
6 import java.time.LocalDateTime; 11 import java.time.LocalDateTime;
7 - 12 +import java.util.Set;
8 13
9 @Schema(description = "管理后台 - 用户信息 Response VO") 14 @Schema(description = "管理后台 - 用户信息 Response VO")
10 @Data 15 @Data
11 -@NoArgsConstructor  
12 -@AllArgsConstructor  
13 -@EqualsAndHashCode(callSuper = true)  
14 -public class UserRespVO extends UserBaseVO { 16 +@ExcelIgnoreUnannotated
  17 +public class UserRespVO{
15 18
16 @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") 19 @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  20 + @ExcelProperty("用户编号")
17 private Long id; 21 private Long id;
18 22
  23 + @Schema(description = "用户账号", requiredMode = Schema.RequiredMode.REQUIRED, example = "yudao")
  24 + @ExcelProperty("用户名称")
  25 + private String username;
  26 +
  27 + @Schema(description = "用户昵称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
  28 + @ExcelProperty("用户昵称")
  29 + private String nickname;
  30 +
  31 + @Schema(description = "备注", example = "我是一个用户")
  32 + private String remark;
  33 +
  34 + @Schema(description = "部门ID", example = "我是一个用户")
  35 + private Long deptId;
  36 + @Schema(description = "部门名称", example = "IT 部")
  37 + @ExcelProperty("部门名称")
  38 + private String deptName;
  39 +
  40 + @Schema(description = "岗位编号数组", example = "1")
  41 + private Set<Long> postIds;
  42 +
  43 + @Schema(description = "用户邮箱", example = "yudao@iocoder.cn")
  44 + @ExcelProperty("用户邮箱")
  45 + private String email;
  46 +
  47 + @Schema(description = "手机号码", example = "15601691300")
  48 + @ExcelProperty("手机号码")
  49 + private String mobile;
  50 +
  51 + @Schema(description = "用户性别,参见 SexEnum 枚举类", example = "1")
  52 + @ExcelProperty(value = "用户性别", converter = DictConvert.class)
  53 + @DictFormat(DictTypeConstants.USER_SEX)
  54 + private Integer sex;
  55 +
  56 + @Schema(description = "用户头像", example = "https://www.iocoder.cn/xxx.png")
  57 + private String avatar;
  58 +
19 @Schema(description = "状态,参见 CommonStatusEnum 枚举类", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") 59 @Schema(description = "状态,参见 CommonStatusEnum 枚举类", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  60 + @ExcelProperty(value = "帐号状态", converter = DictConvert.class)
  61 + @DictFormat(DictTypeConstants.COMMON_STATUS)
20 private Integer status; 62 private Integer status;
21 63
22 @Schema(description = "最后登录 IP", requiredMode = Schema.RequiredMode.REQUIRED, example = "192.168.1.1") 64 @Schema(description = "最后登录 IP", requiredMode = Schema.RequiredMode.REQUIRED, example = "192.168.1.1")
  65 + @ExcelProperty("最后登录IP")
23 private String loginIp; 66 private String loginIp;
24 67
25 @Schema(description = "最后登录时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "时间戳格式") 68 @Schema(description = "最后登录时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "时间戳格式")
  69 + @ExcelProperty("最后登录时间")
26 private LocalDateTime loginDate; 70 private LocalDateTime loginDate;
27 71
28 @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "时间戳格式") 72 @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "时间戳格式")
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserBaseVO.java renamed to yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserSaveReqVO.java
1 package cn.iocoder.yudao.module.system.controller.admin.user.vo.user; 1 package cn.iocoder.yudao.module.system.controller.admin.user.vo.user;
2 2
  3 +import cn.hutool.core.util.ObjectUtil;
3 import cn.iocoder.yudao.framework.common.validation.Mobile; 4 import cn.iocoder.yudao.framework.common.validation.Mobile;
  5 +import com.fasterxml.jackson.annotation.JsonIgnore;
4 import io.swagger.v3.oas.annotations.media.Schema; 6 import io.swagger.v3.oas.annotations.media.Schema;
5 import lombok.Data; 7 import lombok.Data;
  8 +import org.hibernate.validator.constraints.Length;
6 9
7 -import javax.validation.constraints.Email;  
8 -import javax.validation.constraints.NotBlank;  
9 -import javax.validation.constraints.Pattern;  
10 -import javax.validation.constraints.Size; 10 +import javax.validation.constraints.*;
11 import java.util.Set; 11 import java.util.Set;
12 12
13 -/**  
14 - * 用户 Base VO,提供给添加、修改、详细的子 VO 使用  
15 - * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成  
16 - */ 13 +@Schema(description = "管理后台 - 用户创建/修改 Request VO")
17 @Data 14 @Data
18 -public class UserBaseVO { 15 +public class UserSaveReqVO {
  16 +
  17 + @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
  18 + @NotNull(message = "用户编号不能为空")
  19 + private Long id;
19 20
20 @Schema(description = "用户账号", requiredMode = Schema.RequiredMode.REQUIRED, example = "yudao") 21 @Schema(description = "用户账号", requiredMode = Schema.RequiredMode.REQUIRED, example = "yudao")
21 @NotBlank(message = "用户账号不能为空") 22 @NotBlank(message = "用户账号不能为空")
@@ -51,4 +52,17 @@ public class UserBaseVO { @@ -51,4 +52,17 @@ public class UserBaseVO {
51 @Schema(description = "用户头像", example = "https://www.iocoder.cn/xxx.png") 52 @Schema(description = "用户头像", example = "https://www.iocoder.cn/xxx.png")
52 private String avatar; 53 private String avatar;
53 54
  55 + // ========== 仅【创建】时,需要传递的字段 ==========
  56 +
  57 + @Schema(description = "密码", requiredMode = Schema.RequiredMode.REQUIRED, example = "123456")
  58 + @Length(min = 4, max = 16, message = "密码长度为 4-16 位")
  59 + private String password;
  60 +
  61 + @AssertTrue(message = "密码不能为空")
  62 + @JsonIgnore
  63 + public boolean isPasswordValid() {
  64 + return id != null // 修改时,不需要传递
  65 + || (ObjectUtil.isAllNotEmpty(password)); // 新增时,必须都传递 password
  66 + }
  67 +
54 } 68 }
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserSimpleRespVO.java
@@ -17,4 +17,9 @@ public class UserSimpleRespVO { @@ -17,4 +17,9 @@ public class UserSimpleRespVO {
17 @Schema(description = "用户昵称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道") 17 @Schema(description = "用户昵称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道")
18 private String nickname; 18 private String nickname;
19 19
  20 + @Schema(description = "部门ID", example = "我是一个用户")
  21 + private Long deptId;
  22 + @Schema(description = "部门名称", example = "IT 部")
  23 + private String deptName;
  24 +
20 } 25 }
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserUpdateReqVO.java deleted
1 -package cn.iocoder.yudao.module.system.controller.admin.user.vo.user;  
2 -  
3 -import io.swagger.v3.oas.annotations.media.Schema;  
4 -import lombok.Data;  
5 -import lombok.EqualsAndHashCode;  
6 -  
7 -import javax.validation.constraints.NotNull;  
8 -  
9 -@Schema(description = "管理后台 - 用户更新 Request VO")  
10 -@Data  
11 -@EqualsAndHashCode(callSuper = true)  
12 -public class UserUpdateReqVO extends UserBaseVO {  
13 -  
14 - @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")  
15 - @NotNull(message = "用户编号不能为空")  
16 - private Long id;  
17 -  
18 -}  
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/tenant/TenantConvert.java
1 package cn.iocoder.yudao.module.system.convert.tenant; 1 package cn.iocoder.yudao.module.system.convert.tenant;
2 2
3 import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant.TenantSaveReqVO; 3 import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant.TenantSaveReqVO;
4 -import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserCreateReqVO; 4 +import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserSaveReqVO;
5 import org.mapstruct.Mapper; 5 import org.mapstruct.Mapper;
6 import org.mapstruct.factory.Mappers; 6 import org.mapstruct.factory.Mappers;
7 7
@@ -15,8 +15,8 @@ public interface TenantConvert { @@ -15,8 +15,8 @@ public interface TenantConvert {
15 15
16 TenantConvert INSTANCE = Mappers.getMapper(TenantConvert.class); 16 TenantConvert INSTANCE = Mappers.getMapper(TenantConvert.class);
17 17
18 - default UserCreateReqVO convert02(TenantSaveReqVO bean) {  
19 - UserCreateReqVO reqVO = new UserCreateReqVO(); 18 + default UserSaveReqVO convert02(TenantSaveReqVO bean) {
  19 + UserSaveReqVO reqVO = new UserSaveReqVO();
20 reqVO.setUsername(bean.getUsername()); 20 reqVO.setUsername(bean.getUsername());
21 reqVO.setPassword(bean.getPassword()); 21 reqVO.setPassword(bean.getPassword());
22 reqVO.setNickname(bean.getContactName()).setMobile(bean.getContactMobile()); 22 reqVO.setNickname(bean.getContactName()).setMobile(bean.getContactMobile());
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/user/UserConvert.java
1 package cn.iocoder.yudao.module.system.convert.user; 1 package cn.iocoder.yudao.module.system.convert.user;
2 2
3 -import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; 3 +import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
  4 +import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
  5 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
  6 +import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptSimpleRespVO;
  7 +import cn.iocoder.yudao.module.system.controller.admin.dept.vo.post.PostSimpleRespVO;
  8 +import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.RoleSimpleRespVO;
4 import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileRespVO; 9 import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileRespVO;
5 -import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdatePasswordReqVO;  
6 -import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdateReqVO;  
7 -import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.*; 10 +import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserRespVO;
  11 +import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserSimpleRespVO;
8 import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO; 12 import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
9 import cn.iocoder.yudao.module.system.dal.dataobject.dept.PostDO; 13 import cn.iocoder.yudao.module.system.dal.dataobject.dept.PostDO;
10 import cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO; 14 import cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO;
@@ -14,42 +18,41 @@ import org.mapstruct.Mapper; @@ -14,42 +18,41 @@ import org.mapstruct.Mapper;
14 import org.mapstruct.factory.Mappers; 18 import org.mapstruct.factory.Mappers;
15 19
16 import java.util.List; 20 import java.util.List;
  21 +import java.util.Map;
17 22
18 @Mapper 23 @Mapper
19 public interface UserConvert { 24 public interface UserConvert {
20 25
21 UserConvert INSTANCE = Mappers.getMapper(UserConvert.class); 26 UserConvert INSTANCE = Mappers.getMapper(UserConvert.class);
22 27
23 - UserPageItemRespVO convert(AdminUserDO bean);  
24 -  
25 - UserPageItemRespVO.Dept convert(DeptDO bean);  
26 -  
27 - AdminUserDO convert(UserCreateReqVO bean);  
28 -  
29 - AdminUserDO convert(UserUpdateReqVO bean);  
30 -  
31 - UserExcelVO convert02(AdminUserDO bean);  
32 -  
33 - AdminUserDO convert(UserImportExcelVO bean);  
34 -  
35 - UserProfileRespVO convert03(AdminUserDO bean);  
36 -  
37 - List<UserProfileRespVO.Role> convertList(List<RoleDO> list);  
38 -  
39 - UserProfileRespVO.Dept convert02(DeptDO bean);  
40 -  
41 - AdminUserDO convert(UserProfileUpdateReqVO bean);  
42 -  
43 - AdminUserDO convert(UserProfileUpdatePasswordReqVO bean);  
44 -  
45 - List<UserProfileRespVO.Post> convertList02(List<PostDO> list);  
46 -  
47 - List<UserProfileRespVO.SocialUser> convertList03(List<SocialUserDO> list);  
48 -  
49 - List<UserSimpleRespVO> convertList04(List<AdminUserDO> list);  
50 -  
51 - AdminUserRespDTO convert4(AdminUserDO bean);  
52 -  
53 - List<AdminUserRespDTO> convertList4(List<AdminUserDO> users); 28 + default List<UserRespVO> convertList(List<AdminUserDO> list, Map<Long, DeptDO> deptMap) {
  29 + return CollectionUtils.convertList(list, user -> convert(user, deptMap.get(user.getDeptId())));
  30 + }
  31 +
  32 + default UserRespVO convert(AdminUserDO user, DeptDO dept) {
  33 + UserRespVO userVO = BeanUtils.toBean(user, UserRespVO.class);
  34 + if (dept != null) {
  35 + userVO.setDeptName(dept.getName());
  36 + }
  37 + return userVO;
  38 + }
  39 +
  40 + default List<UserSimpleRespVO> convertSimpleList(List<AdminUserDO> list, Map<Long, DeptDO> deptMap) {
  41 + return CollectionUtils.convertList(list, user -> {
  42 + UserSimpleRespVO userVO = BeanUtils.toBean(user, UserSimpleRespVO.class);
  43 + MapUtils.findAndThen(deptMap, user.getDeptId(), dept -> userVO.setDeptName(dept.getName()));
  44 + return userVO;
  45 + });
  46 + }
  47 +
  48 + default UserProfileRespVO convert(AdminUserDO user, List<RoleDO> userRoles,
  49 + DeptDO dept, List<PostDO> posts, List<SocialUserDO> socialUsers) {
  50 + UserProfileRespVO userVO = BeanUtils.toBean(user, UserProfileRespVO.class);
  51 + userVO.setRoles(BeanUtils.toBean(userRoles, RoleSimpleRespVO.class));
  52 + userVO.setDept(BeanUtils.toBean(dept, DeptSimpleRespVO.class));
  53 + userVO.setPosts(BeanUtils.toBean(posts, PostSimpleRespVO.class));
  54 + userVO.setSocialUsers(BeanUtils.toBean(socialUsers, UserProfileRespVO.SocialUser.class));
  55 + return userVO;
  56 + }
54 57
55 } 58 }
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/AdminUserMapper.java
@@ -3,7 +3,6 @@ package cn.iocoder.yudao.module.system.dal.mysql.user; @@ -3,7 +3,6 @@ package cn.iocoder.yudao.module.system.dal.mysql.user;
3 import cn.iocoder.yudao.framework.common.pojo.PageResult; 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; 4 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
5 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; 5 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
6 -import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserExportReqVO;  
7 import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserPageReqVO; 6 import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserPageReqVO;
8 import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO; 7 import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
9 import org.apache.ibatis.annotations.Mapper; 8 import org.apache.ibatis.annotations.Mapper;
@@ -36,15 +35,6 @@ public interface AdminUserMapper extends BaseMapperX&lt;AdminUserDO&gt; { @@ -36,15 +35,6 @@ public interface AdminUserMapper extends BaseMapperX&lt;AdminUserDO&gt; {
36 .orderByDesc(AdminUserDO::getId)); 35 .orderByDesc(AdminUserDO::getId));
37 } 36 }
38 37
39 - default List<AdminUserDO> selectList(UserExportReqVO reqVO, Collection<Long> deptIds) {  
40 - return selectList(new LambdaQueryWrapperX<AdminUserDO>()  
41 - .likeIfPresent(AdminUserDO::getUsername, reqVO.getUsername())  
42 - .likeIfPresent(AdminUserDO::getMobile, reqVO.getMobile())  
43 - .eqIfPresent(AdminUserDO::getStatus, reqVO.getStatus())  
44 - .betweenIfPresent(AdminUserDO::getCreateTime, reqVO.getCreateTime())  
45 - .inIfPresent(AdminUserDO::getDeptId, deptIds));  
46 - }  
47 -  
48 default List<AdminUserDO> selectListByNickname(String nickname) { 38 default List<AdminUserDO> selectListByNickname(String nickname) {
49 return selectList(new LambdaQueryWrapperX<AdminUserDO>().like(AdminUserDO::getNickname, nickname)); 39 return selectList(new LambdaQueryWrapperX<AdminUserDO>().like(AdminUserDO::getNickname, nickname));
50 } 40 }
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserService.java
@@ -22,17 +22,17 @@ public interface AdminUserService { @@ -22,17 +22,17 @@ public interface AdminUserService {
22 /** 22 /**
23 * 创建用户 23 * 创建用户
24 * 24 *
25 - * @param reqVO 用户信息 25 + * @param createReqVO 用户信息
26 * @return 用户编号 26 * @return 用户编号
27 */ 27 */
28 - Long createUser(@Valid UserCreateReqVO reqVO); 28 + Long createUser(@Valid UserSaveReqVO createReqVO);
29 29
30 /** 30 /**
31 * 修改用户 31 * 修改用户
32 * 32 *
33 - * @param reqVO 用户信息 33 + * @param updateReqVO 用户信息
34 */ 34 */
35 - void updateUser(@Valid UserUpdateReqVO reqVO); 35 + void updateUser(@Valid UserSaveReqVO updateReqVO);
36 36
37 /** 37 /**
38 * 更新用户的最后登陆信息 38 * 更新用户的最后登陆信息
@@ -168,14 +168,6 @@ public interface AdminUserService { @@ -168,14 +168,6 @@ public interface AdminUserService {
168 } 168 }
169 169
170 /** 170 /**
171 - * 获得用户列表  
172 - *  
173 - * @param reqVO 列表请求  
174 - * @return 用户列表  
175 - */  
176 - List<AdminUserDO> getUserList(UserExportReqVO reqVO);  
177 -  
178 - /**  
179 * 获得用户列表,基于昵称模糊匹配 171 * 获得用户列表,基于昵称模糊匹配
180 * 172 *
181 * @param nickname 昵称 173 * @param nickname 昵称
@@ -209,10 +201,4 @@ public interface AdminUserService { @@ -209,10 +201,4 @@ public interface AdminUserService {
209 */ 201 */
210 boolean isPasswordMatch(String rawPassword, String encodedPassword); 202 boolean isPasswordMatch(String rawPassword, String encodedPassword);
211 203
212 - /**  
213 - * 获取所有用户列表  
214 - *  
215 - * @return 用户列表  
216 - */  
217 - List<AdminUserDO> getUserList();  
218 } 204 }
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java
@@ -8,12 +8,15 @@ import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; @@ -8,12 +8,15 @@ import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
8 import cn.iocoder.yudao.framework.common.exception.ServiceException; 8 import cn.iocoder.yudao.framework.common.exception.ServiceException;
9 import cn.iocoder.yudao.framework.common.pojo.PageResult; 9 import cn.iocoder.yudao.framework.common.pojo.PageResult;
10 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; 10 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
  11 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
11 import cn.iocoder.yudao.framework.datapermission.core.util.DataPermissionUtils; 12 import cn.iocoder.yudao.framework.datapermission.core.util.DataPermissionUtils;
12 import cn.iocoder.yudao.module.infra.api.file.FileApi; 13 import cn.iocoder.yudao.module.infra.api.file.FileApi;
13 import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdatePasswordReqVO; 14 import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdatePasswordReqVO;
14 import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdateReqVO; 15 import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdateReqVO;
15 -import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.*;  
16 -import cn.iocoder.yudao.module.system.convert.user.UserConvert; 16 +import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserImportExcelVO;
  17 +import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserImportRespVO;
  18 +import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserPageReqVO;
  19 +import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserSaveReqVO;
17 import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO; 20 import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
18 import cn.iocoder.yudao.module.system.dal.dataobject.dept.UserPostDO; 21 import cn.iocoder.yudao.module.system.dal.dataobject.dept.UserPostDO;
19 import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO; 22 import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
@@ -76,7 +79,7 @@ public class AdminUserServiceImpl implements AdminUserService { @@ -76,7 +79,7 @@ public class AdminUserServiceImpl implements AdminUserService {
76 79
77 @Override 80 @Override
78 @Transactional(rollbackFor = Exception.class) 81 @Transactional(rollbackFor = Exception.class)
79 - public Long createUser(UserCreateReqVO reqVO) { 82 + public Long createUser(UserSaveReqVO createReqVO) {
80 // 校验账户配合 83 // 校验账户配合
81 tenantService.handleTenantInfo(tenant -> { 84 tenantService.handleTenantInfo(tenant -> {
82 long count = userMapper.selectCount(); 85 long count = userMapper.selectCount();
@@ -85,12 +88,12 @@ public class AdminUserServiceImpl implements AdminUserService { @@ -85,12 +88,12 @@ public class AdminUserServiceImpl implements AdminUserService {
85 } 88 }
86 }); 89 });
87 // 校验正确性 90 // 校验正确性
88 - validateUserForCreateOrUpdate(null, reqVO.getUsername(), reqVO.getMobile(), reqVO.getEmail(),  
89 - reqVO.getDeptId(), reqVO.getPostIds()); 91 + validateUserForCreateOrUpdate(null, createReqVO.getUsername(),
  92 + createReqVO.getMobile(), createReqVO.getEmail(), createReqVO.getDeptId(), createReqVO.getPostIds());
90 // 插入用户 93 // 插入用户
91 - AdminUserDO user = UserConvert.INSTANCE.convert(reqVO); 94 + AdminUserDO user = BeanUtils.toBean(createReqVO, AdminUserDO.class);
92 user.setStatus(CommonStatusEnum.ENABLE.getStatus()); // 默认开启 95 user.setStatus(CommonStatusEnum.ENABLE.getStatus()); // 默认开启
93 - user.setPassword(encodePassword(reqVO.getPassword())); // 加密密码 96 + user.setPassword(encodePassword(createReqVO.getPassword())); // 加密密码
94 userMapper.insert(user); 97 userMapper.insert(user);
95 // 插入关联岗位 98 // 插入关联岗位
96 if (CollectionUtil.isNotEmpty(user.getPostIds())) { 99 if (CollectionUtil.isNotEmpty(user.getPostIds())) {
@@ -102,18 +105,19 @@ public class AdminUserServiceImpl implements AdminUserService { @@ -102,18 +105,19 @@ public class AdminUserServiceImpl implements AdminUserService {
102 105
103 @Override 106 @Override
104 @Transactional(rollbackFor = Exception.class) 107 @Transactional(rollbackFor = Exception.class)
105 - public void updateUser(UserUpdateReqVO reqVO) { 108 + public void updateUser(UserSaveReqVO updateReqVO) {
  109 + updateReqVO.setPassword(null); // 特殊:此处不更新密码
106 // 校验正确性 110 // 校验正确性
107 - validateUserForCreateOrUpdate(reqVO.getId(), reqVO.getUsername(), reqVO.getMobile(), reqVO.getEmail(),  
108 - reqVO.getDeptId(), reqVO.getPostIds()); 111 + validateUserForCreateOrUpdate(updateReqVO.getId(), updateReqVO.getUsername(),
  112 + updateReqVO.getMobile(), updateReqVO.getEmail(), updateReqVO.getDeptId(), updateReqVO.getPostIds());
109 // 更新用户 113 // 更新用户
110 - AdminUserDO updateObj = UserConvert.INSTANCE.convert(reqVO); 114 + AdminUserDO updateObj = BeanUtils.toBean(updateReqVO, AdminUserDO.class);
111 userMapper.updateById(updateObj); 115 userMapper.updateById(updateObj);
112 // 更新岗位 116 // 更新岗位
113 - updateUserPost(reqVO, updateObj); 117 + updateUserPost(updateReqVO, updateObj);
114 } 118 }
115 119
116 - private void updateUserPost(UserUpdateReqVO reqVO, AdminUserDO updateObj) { 120 + private void updateUserPost(UserSaveReqVO reqVO, AdminUserDO updateObj) {
117 Long userId = reqVO.getId(); 121 Long userId = reqVO.getId();
118 Set<Long> dbPostIds = convertSet(userPostMapper.selectListByUserId(userId), UserPostDO::getPostId); 122 Set<Long> dbPostIds = convertSet(userPostMapper.selectListByUserId(userId), UserPostDO::getPostId);
119 // 计算新增和删除的岗位编号 123 // 计算新增和删除的岗位编号
@@ -142,7 +146,7 @@ public class AdminUserServiceImpl implements AdminUserService { @@ -142,7 +146,7 @@ public class AdminUserServiceImpl implements AdminUserService {
142 validateEmailUnique(id, reqVO.getEmail()); 146 validateEmailUnique(id, reqVO.getEmail());
143 validateMobileUnique(id, reqVO.getMobile()); 147 validateMobileUnique(id, reqVO.getMobile());
144 // 执行更新 148 // 执行更新
145 - userMapper.updateById(UserConvert.INSTANCE.convert(reqVO).setId(id)); 149 + userMapper.updateById(BeanUtils.toBean(reqVO, AdminUserDO.class).setId(id));
146 } 150 }
147 151
148 @Override 152 @Override
@@ -156,7 +160,7 @@ public class AdminUserServiceImpl implements AdminUserService { @@ -156,7 +160,7 @@ public class AdminUserServiceImpl implements AdminUserService {
156 } 160 }
157 161
158 @Override 162 @Override
159 - public String updateUserAvatar(Long id, InputStream avatarFile) throws Exception { 163 + public String updateUserAvatar(Long id, InputStream avatarFile) {
160 validateUserExists(id); 164 validateUserExists(id);
161 // 存储文件 165 // 存储文件
162 String avatar = fileApi.createFile(IoUtil.readBytes(avatarFile)); 166 String avatar = fileApi.createFile(IoUtil.readBytes(avatarFile));
@@ -272,11 +276,6 @@ public class AdminUserServiceImpl implements AdminUserService { @@ -272,11 +276,6 @@ public class AdminUserServiceImpl implements AdminUserService {
272 } 276 }
273 277
274 @Override 278 @Override
275 - public List<AdminUserDO> getUserList(UserExportReqVO reqVO) {  
276 - return userMapper.selectList(reqVO, getDeptCondition(reqVO.getDeptId()));  
277 - }  
278 -  
279 - @Override  
280 public List<AdminUserDO> getUserListByNickname(String nickname) { 279 public List<AdminUserDO> getUserListByNickname(String nickname) {
281 return userMapper.selectListByNickname(nickname); 280 return userMapper.selectListByNickname(nickname);
282 } 281 }
@@ -415,7 +414,7 @@ public class AdminUserServiceImpl implements AdminUserService { @@ -415,7 +414,7 @@ public class AdminUserServiceImpl implements AdminUserService {
415 // 判断如果不存在,在进行插入 414 // 判断如果不存在,在进行插入
416 AdminUserDO existUser = userMapper.selectByUsername(importUser.getUsername()); 415 AdminUserDO existUser = userMapper.selectByUsername(importUser.getUsername());
417 if (existUser == null) { 416 if (existUser == null) {
418 - userMapper.insert(UserConvert.INSTANCE.convert(importUser) 417 + userMapper.insert(BeanUtils.toBean(importUser, AdminUserDO.class)
419 .setPassword(encodePassword(userInitPassword)).setPostIds(new HashSet<>())); // 设置默认密码及空岗位编号数组 418 .setPassword(encodePassword(userInitPassword)).setPostIds(new HashSet<>())); // 设置默认密码及空岗位编号数组
420 respVO.getCreateUsernames().add(importUser.getUsername()); 419 respVO.getCreateUsernames().add(importUser.getUsername());
421 return; 420 return;
@@ -425,7 +424,7 @@ public class AdminUserServiceImpl implements AdminUserService { @@ -425,7 +424,7 @@ public class AdminUserServiceImpl implements AdminUserService {
425 respVO.getFailureUsernames().put(importUser.getUsername(), USER_USERNAME_EXISTS.getMsg()); 424 respVO.getFailureUsernames().put(importUser.getUsername(), USER_USERNAME_EXISTS.getMsg());
426 return; 425 return;
427 } 426 }
428 - AdminUserDO updateUser = UserConvert.INSTANCE.convert(importUser); 427 + AdminUserDO updateUser = BeanUtils.toBean(importUser, AdminUserDO.class);
429 updateUser.setId(existUser.getId()); 428 updateUser.setId(existUser.getId());
430 userMapper.updateById(updateUser); 429 userMapper.updateById(updateUser);
431 respVO.getUpdateUsernames().add(importUser.getUsername()); 430 respVO.getUpdateUsernames().add(importUser.getUsername());
@@ -444,16 +443,6 @@ public class AdminUserServiceImpl implements AdminUserService { @@ -444,16 +443,6 @@ public class AdminUserServiceImpl implements AdminUserService {
444 } 443 }
445 444
446 /** 445 /**
447 - * 获取所有用户列表  
448 - *  
449 - * @return 用户列表  
450 - */  
451 - @Override  
452 - public List<AdminUserDO> getUserList() {  
453 - return userMapper.selectList();  
454 - }  
455 -  
456 - /**  
457 * 对密码进行加密 446 * 对密码进行加密
458 * 447 *
459 * @param password 密码 448 * @param password 密码
yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImplTest.java
@@ -80,11 +80,11 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest { @@ -80,11 +80,11 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
80 @Test 80 @Test
81 public void testCreatUser_success() { 81 public void testCreatUser_success() {
82 // 准备参数 82 // 准备参数
83 - UserCreateReqVO reqVO = randomPojo(UserCreateReqVO.class, o -> { 83 + UserSaveReqVO reqVO = randomPojo(UserSaveReqVO.class, o -> {
84 o.setSex(RandomUtil.randomEle(SexEnum.values()).getSex()); 84 o.setSex(RandomUtil.randomEle(SexEnum.values()).getSex());
85 o.setMobile(randomString()); 85 o.setMobile(randomString());
86 o.setPostIds(asSet(1L, 2L)); 86 o.setPostIds(asSet(1L, 2L));
87 - }); 87 + }).setId(null); // 避免 id 被赋值
88 // mock 账户额度充足 88 // mock 账户额度充足
89 TenantDO tenant = randomPojo(TenantDO.class, o -> o.setAccountCount(1)); 89 TenantDO tenant = randomPojo(TenantDO.class, o -> o.setAccountCount(1));
90 doNothing().when(tenantService).handleTenantInfo(argThat(handler -> { 90 doNothing().when(tenantService).handleTenantInfo(argThat(handler -> {
@@ -111,7 +111,7 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest { @@ -111,7 +111,7 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
111 Long userId = userService.createUser(reqVO); 111 Long userId = userService.createUser(reqVO);
112 // 断言 112 // 断言
113 AdminUserDO user = userMapper.selectById(userId); 113 AdminUserDO user = userMapper.selectById(userId);
114 - assertPojoEquals(reqVO, user, "password"); 114 + assertPojoEquals(reqVO, user, "password", "id");
115 assertEquals("yudaoyuanma", user.getPassword()); 115 assertEquals("yudaoyuanma", user.getPassword());
116 assertEquals(CommonStatusEnum.ENABLE.getStatus(), user.getStatus()); 116 assertEquals(CommonStatusEnum.ENABLE.getStatus(), user.getStatus());
117 // 断言关联岗位 117 // 断言关联岗位
@@ -123,7 +123,7 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest { @@ -123,7 +123,7 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
123 @Test 123 @Test
124 public void testCreatUser_max() { 124 public void testCreatUser_max() {
125 // 准备参数 125 // 准备参数
126 - UserCreateReqVO reqVO = randomPojo(UserCreateReqVO.class); 126 + UserSaveReqVO reqVO = randomPojo(UserSaveReqVO.class);
127 // mock 账户额度不足 127 // mock 账户额度不足
128 TenantDO tenant = randomPojo(TenantDO.class, o -> o.setAccountCount(-1)); 128 TenantDO tenant = randomPojo(TenantDO.class, o -> o.setAccountCount(-1));
129 doNothing().when(tenantService).handleTenantInfo(argThat(handler -> { 129 doNothing().when(tenantService).handleTenantInfo(argThat(handler -> {
@@ -143,7 +143,7 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest { @@ -143,7 +143,7 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
143 userPostMapper.insert(new UserPostDO().setUserId(dbUser.getId()).setPostId(1L)); 143 userPostMapper.insert(new UserPostDO().setUserId(dbUser.getId()).setPostId(1L));
144 userPostMapper.insert(new UserPostDO().setUserId(dbUser.getId()).setPostId(2L)); 144 userPostMapper.insert(new UserPostDO().setUserId(dbUser.getId()).setPostId(2L));
145 // 准备参数 145 // 准备参数
146 - UserUpdateReqVO reqVO = randomPojo(UserUpdateReqVO.class, o -> { 146 + UserSaveReqVO reqVO = randomPojo(UserSaveReqVO.class, o -> {
147 o.setId(dbUser.getId()); 147 o.setId(dbUser.getId());
148 o.setSex(RandomUtil.randomEle(SexEnum.values()).getSex()); 148 o.setSex(RandomUtil.randomEle(SexEnum.values()).getSex());
149 o.setMobile(randomString()); 149 o.setMobile(randomString());
@@ -167,7 +167,7 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest { @@ -167,7 +167,7 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
167 userService.updateUser(reqVO); 167 userService.updateUser(reqVO);
168 // 断言 168 // 断言
169 AdminUserDO user = userMapper.selectById(reqVO.getId()); 169 AdminUserDO user = userMapper.selectById(reqVO.getId());
170 - assertPojoEquals(reqVO, user); 170 + assertPojoEquals(reqVO, user, "password");
171 // 断言关联岗位 171 // 断言关联岗位
172 List<UserPostDO> userPosts = userPostMapper.selectListByUserId(user.getId()); 172 List<UserPostDO> userPosts = userPostMapper.selectListByUserId(user.getId());
173 assertEquals(2L, userPosts.get(0).getPostId()); 173 assertEquals(2L, userPosts.get(0).getPostId());
@@ -355,28 +355,6 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest { @@ -355,28 +355,6 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
355 assertPojoEquals(dbUser, pageResult.getList().get(0)); 355 assertPojoEquals(dbUser, pageResult.getList().get(0));
356 } 356 }
357 357
358 - @Test  
359 - public void testGetUserList_export() {  
360 - // mock 数据  
361 - AdminUserDO dbUser = initGetUserPageData();  
362 - // 准备参数  
363 - UserExportReqVO reqVO = new UserExportReqVO();  
364 - reqVO.setUsername("tu");  
365 - reqVO.setMobile("1560");  
366 - reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus());  
367 - reqVO.setCreateTime(buildBetweenTime(2020, 12, 1, 2020, 12, 24));  
368 - reqVO.setDeptId(1L); // 其中,1L 是 2L 的父部门  
369 - // mock 方法  
370 - List<DeptDO> deptList = newArrayList(randomPojo(DeptDO.class, o -> o.setId(2L)));  
371 - when(deptService.getChildDeptList(eq(reqVO.getDeptId()))).thenReturn(deptList);  
372 -  
373 - // 调用  
374 - List<AdminUserDO> list = userService.getUserList(reqVO);  
375 - // 断言  
376 - assertEquals(1, list.size());  
377 - assertPojoEquals(dbUser, list.get(0));  
378 - }  
379 -  
380 /** 358 /**
381 * 初始化 getUserPage 方法的测试数据 359 * 初始化 getUserPage 方法的测试数据
382 */ 360 */