Commit 415333153564a9c3c06b1fc09bac7e3796281d9e

Authored by YunaiV
1 parent 94a32d34

1. 合并 member 修改昵称和头像接口,统一成修改基本信息 API

yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/user/AppMemberUserController.http
@@ -2,13 +2,3 @@ @@ -2,13 +2,3 @@
2 GET {{appApi}}/member/user/get 2 GET {{appApi}}/member/user/get
3 Authorization: Bearer test245 3 Authorization: Bearer test245
4 tenant-id: {{appTenentId}} 4 tenant-id: {{appTenentId}}
5 -  
6 -### 请求 /member/user/profile/revise-nickname 接口 成功  
7 -PUT {{appApi}}/member/user/update-nickname?nickname=yunai222  
8 -Authorization: Bearer test245  
9 -tenant-id: {{appTenentId}}  
10 -  
11 -### 请求 /member/user/get-user-info 接口 成功  
12 -GET {{appApi}}/member/user/get-user-info?id=245  
13 -Authorization: Bearer test245  
14 -tenant-id: {{appTenentId}}  
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/user/AppMemberUserController.java
@@ -2,25 +2,23 @@ package cn.iocoder.yudao.module.member.controller.app.user; @@ -2,25 +2,23 @@ package cn.iocoder.yudao.module.member.controller.app.user;
2 2
3 import cn.iocoder.yudao.framework.common.pojo.CommonResult; 3 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
4 import cn.iocoder.yudao.framework.security.core.annotations.PreAuthenticated; 4 import cn.iocoder.yudao.framework.security.core.annotations.PreAuthenticated;
5 -import cn.iocoder.yudao.module.member.controller.app.user.vo.AppUserInfoRespVO; 5 +import cn.iocoder.yudao.module.member.controller.app.user.vo.AppMemberUserInfoRespVO;
  6 +import cn.iocoder.yudao.module.member.controller.app.user.vo.AppMemberUserUpdateReqVO;
6 import cn.iocoder.yudao.module.member.controller.app.user.vo.AppUserUpdateMobileReqVO; 7 import cn.iocoder.yudao.module.member.controller.app.user.vo.AppUserUpdateMobileReqVO;
7 import cn.iocoder.yudao.module.member.convert.user.MemberUserConvert; 8 import cn.iocoder.yudao.module.member.convert.user.MemberUserConvert;
8 import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO; 9 import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO;
9 import cn.iocoder.yudao.module.member.service.user.MemberUserService; 10 import cn.iocoder.yudao.module.member.service.user.MemberUserService;
10 -import io.swagger.v3.oas.annotations.tags.Tag;  
11 import io.swagger.v3.oas.annotations.Operation; 11 import io.swagger.v3.oas.annotations.Operation;
  12 +import io.swagger.v3.oas.annotations.tags.Tag;
12 import lombok.extern.slf4j.Slf4j; 13 import lombok.extern.slf4j.Slf4j;
13 import org.springframework.validation.annotation.Validated; 14 import org.springframework.validation.annotation.Validated;
14 import org.springframework.web.bind.annotation.*; 15 import org.springframework.web.bind.annotation.*;
15 -import org.springframework.web.multipart.MultipartFile;  
16 16
17 import javax.annotation.Resource; 17 import javax.annotation.Resource;
18 import javax.validation.Valid; 18 import javax.validation.Valid;
19 19
20 -import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;  
21 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; 20 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
22 import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; 21 import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
23 -import static cn.iocoder.yudao.module.infra.enums.ErrorCodeConstants.FILE_IS_EMPTY;  
24 22
25 @Tag(name = "用户 APP - 用户个人中心") 23 @Tag(name = "用户 APP - 用户个人中心")
26 @RestController 24 @RestController
@@ -32,29 +30,18 @@ public class AppMemberUserController { @@ -32,29 +30,18 @@ public class AppMemberUserController {
32 @Resource 30 @Resource
33 private MemberUserService userService; 31 private MemberUserService userService;
34 32
35 - @PutMapping("/update-nickname")  
36 - @Operation(summary = "修改用户昵称") 33 + @PutMapping("/update")
  34 + @Operation(summary = "修改基本信息")
37 @PreAuthenticated 35 @PreAuthenticated
38 - public CommonResult<Boolean> updateUserNickname(@RequestParam("nickname") String nickname) {  
39 - userService.updateUserNickname(getLoginUserId(), nickname); 36 + public CommonResult<Boolean> updateUser(@RequestBody @Valid AppMemberUserUpdateReqVO reqVO) {
  37 + userService.updateUser(getLoginUserId(), reqVO);
40 return success(true); 38 return success(true);
41 } 39 }
42 40
43 - @PostMapping("/update-avatar")  
44 - @Operation(summary = "修改用户头像")  
45 - @PreAuthenticated  
46 - public CommonResult<String> updateUserAvatar(@RequestParam("avatarFile") MultipartFile file) throws Exception {  
47 - if (file.isEmpty()) {  
48 - throw exception(FILE_IS_EMPTY);  
49 - }  
50 - String avatar = userService.updateUserAvatar(getLoginUserId(), file.getInputStream());  
51 - return success(avatar);  
52 - }  
53 -  
54 @GetMapping("/get") 41 @GetMapping("/get")
55 @Operation(summary = "获得基本信息") 42 @Operation(summary = "获得基本信息")
56 @PreAuthenticated 43 @PreAuthenticated
57 - public CommonResult<AppUserInfoRespVO> getUserInfo() { 44 + public CommonResult<AppMemberUserInfoRespVO> getUserInfo() {
58 MemberUserDO user = userService.getUser(getLoginUserId()); 45 MemberUserDO user = userService.getUser(getLoginUserId());
59 return success(MemberUserConvert.INSTANCE.convert(user)); 46 return success(MemberUserConvert.INSTANCE.convert(user));
60 } 47 }
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/user/vo/AppUserInfoRespVO.java renamed to yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/user/vo/AppMemberUserInfoRespVO.java
@@ -9,7 +9,7 @@ import lombok.NoArgsConstructor; @@ -9,7 +9,7 @@ import lombok.NoArgsConstructor;
9 @Data 9 @Data
10 @NoArgsConstructor 10 @NoArgsConstructor
11 @AllArgsConstructor 11 @AllArgsConstructor
12 -public class AppUserInfoRespVO { 12 +public class AppMemberUserInfoRespVO {
13 13
14 @Schema(description = "用户昵称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") 14 @Schema(description = "用户昵称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
15 private String nickname; 15 private String nickname;
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/user/vo/AppMemberUserUpdateReqVO.java 0 → 100644
  1 +package cn.iocoder.yudao.module.member.controller.app.user.vo;
  2 +
  3 +import io.swagger.v3.oas.annotations.media.Schema;
  4 +import lombok.Data;
  5 +import org.hibernate.validator.constraints.URL;
  6 +
  7 +@Schema(description = "用户 App - 会员用户更新 Request VO")
  8 +@Data
  9 +public class AppMemberUserUpdateReqVO {
  10 +
  11 + @Schema(description = "用户昵称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
  12 + private String nickname;
  13 +
  14 + @Schema(description = "头像", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/x.png")
  15 + @URL(message = "头像必须是 URL 格式")
  16 + private String avatar;
  17 +
  18 +}
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/convert/user/MemberUserConvert.java
@@ -4,7 +4,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; @@ -4,7 +4,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO; 4 import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO;
5 import cn.iocoder.yudao.module.member.controller.admin.user.vo.MemberUserRespVO; 5 import cn.iocoder.yudao.module.member.controller.admin.user.vo.MemberUserRespVO;
6 import cn.iocoder.yudao.module.member.controller.admin.user.vo.MemberUserUpdateReqVO; 6 import cn.iocoder.yudao.module.member.controller.admin.user.vo.MemberUserUpdateReqVO;
7 -import cn.iocoder.yudao.module.member.controller.app.user.vo.AppUserInfoRespVO; 7 +import cn.iocoder.yudao.module.member.controller.app.user.vo.AppMemberUserInfoRespVO;
8 import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO; 8 import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO;
9 import org.mapstruct.Mapper; 9 import org.mapstruct.Mapper;
10 import org.mapstruct.factory.Mappers; 10 import org.mapstruct.factory.Mappers;
@@ -16,7 +16,7 @@ public interface MemberUserConvert { @@ -16,7 +16,7 @@ public interface MemberUserConvert {
16 16
17 MemberUserConvert INSTANCE = Mappers.getMapper(MemberUserConvert.class); 17 MemberUserConvert INSTANCE = Mappers.getMapper(MemberUserConvert.class);
18 18
19 - AppUserInfoRespVO convert(MemberUserDO bean); 19 + AppMemberUserInfoRespVO convert(MemberUserDO bean);
20 20
21 MemberUserRespDTO convert2(MemberUserDO bean); 21 MemberUserRespDTO convert2(MemberUserDO bean);
22 22
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/user/MemberUserService.java
@@ -4,11 +4,11 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; @@ -4,11 +4,11 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 import cn.iocoder.yudao.framework.common.validation.Mobile; 4 import cn.iocoder.yudao.framework.common.validation.Mobile;
5 import cn.iocoder.yudao.module.member.controller.admin.user.vo.MemberUserPageReqVO; 5 import cn.iocoder.yudao.module.member.controller.admin.user.vo.MemberUserPageReqVO;
6 import cn.iocoder.yudao.module.member.controller.admin.user.vo.MemberUserUpdateReqVO; 6 import cn.iocoder.yudao.module.member.controller.admin.user.vo.MemberUserUpdateReqVO;
  7 +import cn.iocoder.yudao.module.member.controller.app.user.vo.AppMemberUserUpdateReqVO;
7 import cn.iocoder.yudao.module.member.controller.app.user.vo.AppUserUpdateMobileReqVO; 8 import cn.iocoder.yudao.module.member.controller.app.user.vo.AppUserUpdateMobileReqVO;
8 import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO; 9 import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO;
9 10
10 import javax.validation.Valid; 11 import javax.validation.Valid;
11 -import java.io.InputStream;  
12 import java.util.Collection; 12 import java.util.Collection;
13 import java.util.List; 13 import java.util.List;
14 14
@@ -70,26 +70,17 @@ public interface MemberUserService { @@ -70,26 +70,17 @@ public interface MemberUserService {
70 List<MemberUserDO> getUserList(Collection<Long> ids); 70 List<MemberUserDO> getUserList(Collection<Long> ids);
71 71
72 /** 72 /**
73 - * 【会员】修改用户昵称 73 + * 【会员】修改基本信息
74 * 74 *
75 - * @param userId 用户id  
76 - * @param nickname 用户新昵称 75 + * @param userId 用户编号
  76 + * @param reqVO 基本信息
77 */ 77 */
78 - void updateUserNickname(Long userId, String nickname);  
79 -  
80 - /**  
81 - * 【会员】修改用户头像  
82 - *  
83 - * @param userId 用户id  
84 - * @param inputStream 头像文件  
85 - * @return 头像url  
86 - */  
87 - String updateUserAvatar(Long userId, InputStream inputStream) throws Exception; 78 + void updateUser(Long userId, AppMemberUserUpdateReqVO reqVO);
88 79
89 /** 80 /**
90 * 【会员】修改手机 81 * 【会员】修改手机
91 * 82 *
92 - * @param userId 用户id 83 + * @param userId 用户编号
93 * @param reqVO 请求实体 84 * @param reqVO 请求实体
94 */ 85 */
95 void updateUserMobile(Long userId, AppUserUpdateMobileReqVO reqVO); 86 void updateUserMobile(Long userId, AppUserUpdateMobileReqVO reqVO);
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/user/MemberUserServiceImpl.java
1 package cn.iocoder.yudao.module.member.service.user; 1 package cn.iocoder.yudao.module.member.service.user;
2 2
3 -import cn.hutool.core.io.IoUtil;  
4 import cn.hutool.core.util.IdUtil; 3 import cn.hutool.core.util.IdUtil;
5 import cn.hutool.core.util.StrUtil; 4 import cn.hutool.core.util.StrUtil;
6 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; 5 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
@@ -8,6 +7,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; @@ -8,6 +7,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
8 import cn.iocoder.yudao.module.infra.api.file.FileApi; 7 import cn.iocoder.yudao.module.infra.api.file.FileApi;
9 import cn.iocoder.yudao.module.member.controller.admin.user.vo.MemberUserPageReqVO; 8 import cn.iocoder.yudao.module.member.controller.admin.user.vo.MemberUserPageReqVO;
10 import cn.iocoder.yudao.module.member.controller.admin.user.vo.MemberUserUpdateReqVO; 9 import cn.iocoder.yudao.module.member.controller.admin.user.vo.MemberUserUpdateReqVO;
  10 +import cn.iocoder.yudao.module.member.controller.app.user.vo.AppMemberUserUpdateReqVO;
11 import cn.iocoder.yudao.module.member.controller.app.user.vo.AppUserUpdateMobileReqVO; 11 import cn.iocoder.yudao.module.member.controller.app.user.vo.AppUserUpdateMobileReqVO;
12 import cn.iocoder.yudao.module.member.convert.user.MemberUserConvert; 12 import cn.iocoder.yudao.module.member.convert.user.MemberUserConvert;
13 import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO; 13 import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO;
@@ -23,7 +23,6 @@ import org.springframework.transaction.annotation.Transactional; @@ -23,7 +23,6 @@ import org.springframework.transaction.annotation.Transactional;
23 23
24 import javax.annotation.Resource; 24 import javax.annotation.Resource;
25 import javax.validation.Valid; 25 import javax.validation.Valid;
26 -import java.io.InputStream;  
27 import java.time.LocalDateTime; 26 import java.time.LocalDateTime;
28 import java.util.Collection; 27 import java.util.Collection;
29 import java.util.List; 28 import java.util.List;
@@ -105,26 +104,9 @@ public class MemberUserServiceImpl implements MemberUserService { @@ -105,26 +104,9 @@ public class MemberUserServiceImpl implements MemberUserService {
105 } 104 }
106 105
107 @Override 106 @Override
108 - public void updateUserNickname(Long userId, String nickname) {  
109 - MemberUserDO user = this.validateUserExists(userId);  
110 - // 仅当新昵称不等于旧昵称时进行修改  
111 - if (nickname.equals(user.getNickname())){  
112 - return;  
113 - }  
114 - MemberUserDO userDO = new MemberUserDO();  
115 - userDO.setId(user.getId());  
116 - userDO.setNickname(nickname);  
117 - memberUserMapper.updateById(userDO);  
118 - }  
119 -  
120 - @Override  
121 - public String updateUserAvatar(Long userId, InputStream avatarFile) {  
122 - validateUserExists(userId);  
123 - // 创建文件  
124 - String avatar = fileApi.createFile(IoUtil.readBytes(avatarFile));  
125 - // 更新头像路径  
126 - memberUserMapper.updateById(MemberUserDO.builder().id(userId).avatar(avatar).build());  
127 - return avatar; 107 + public void updateUser(Long userId, AppMemberUserUpdateReqVO reqVO) {
  108 + memberUserMapper.updateById(new MemberUserDO().setId(userId)
  109 + .setNickname(reqVO.getNickname()).setAvatar(reqVO.getAvatar()));
128 } 110 }
129 111
130 @Override 112 @Override
yudao-module-member/yudao-module-member-biz/src/test/java/cn/iocoder/yudao/module/member/service/user/MemberUserServiceImplTest.java
@@ -67,7 +67,7 @@ public class MemberUserServiceImplTest extends BaseDbAndRedisUnitTest { @@ -67,7 +67,7 @@ public class MemberUserServiceImplTest extends BaseDbAndRedisUnitTest {
67 String newNickName = randomString(); 67 String newNickName = randomString();
68 68
69 // 调用接口修改昵称 69 // 调用接口修改昵称
70 - memberUserService.updateUserNickname(userDO.getId(),newNickName); 70 + memberUserService.updateUser(userDO.getId(),newNickName);
71 // 查询新修改后的昵称 71 // 查询新修改后的昵称
72 String nickname = memberUserService.getUser(userDO.getId()).getNickname(); 72 String nickname = memberUserService.getUser(userDO.getId()).getNickname();
73 // 断言 73 // 断言