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 2 GET {{appApi}}/member/user/get
3 3 Authorization: Bearer test245
4 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 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
4 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 7 import cn.iocoder.yudao.module.member.controller.app.user.vo.AppUserUpdateMobileReqVO;
7 8 import cn.iocoder.yudao.module.member.convert.user.MemberUserConvert;
8 9 import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO;
9 10 import cn.iocoder.yudao.module.member.service.user.MemberUserService;
10   -import io.swagger.v3.oas.annotations.tags.Tag;
11 11 import io.swagger.v3.oas.annotations.Operation;
  12 +import io.swagger.v3.oas.annotations.tags.Tag;
12 13 import lombok.extern.slf4j.Slf4j;
13 14 import org.springframework.validation.annotation.Validated;
14 15 import org.springframework.web.bind.annotation.*;
15   -import org.springframework.web.multipart.MultipartFile;
16 16  
17 17 import javax.annotation.Resource;
18 18 import javax.validation.Valid;
19 19  
20   -import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
21 20 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
22 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 23 @Tag(name = "用户 APP - 用户个人中心")
26 24 @RestController
... ... @@ -32,29 +30,18 @@ public class AppMemberUserController {
32 30 @Resource
33 31 private MemberUserService userService;
34 32  
35   - @PutMapping("/update-nickname")
36   - @Operation(summary = "修改用户昵称")
  33 + @PutMapping("/update")
  34 + @Operation(summary = "修改基本信息")
37 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 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 41 @GetMapping("/get")
55 42 @Operation(summary = "获得基本信息")
56 43 @PreAuthenticated
57   - public CommonResult<AppUserInfoRespVO> getUserInfo() {
  44 + public CommonResult<AppMemberUserInfoRespVO> getUserInfo() {
58 45 MemberUserDO user = userService.getUser(getLoginUserId());
59 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 9 @Data
10 10 @NoArgsConstructor
11 11 @AllArgsConstructor
12   -public class AppUserInfoRespVO {
  12 +public class AppMemberUserInfoRespVO {
13 13  
14 14 @Schema(description = "用户昵称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
15 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 4 import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO;
5 5 import cn.iocoder.yudao.module.member.controller.admin.user.vo.MemberUserRespVO;
6 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 8 import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO;
9 9 import org.mapstruct.Mapper;
10 10 import org.mapstruct.factory.Mappers;
... ... @@ -16,7 +16,7 @@ public interface MemberUserConvert {
16 16  
17 17 MemberUserConvert INSTANCE = Mappers.getMapper(MemberUserConvert.class);
18 18  
19   - AppUserInfoRespVO convert(MemberUserDO bean);
  19 + AppMemberUserInfoRespVO convert(MemberUserDO bean);
20 20  
21 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 4 import cn.iocoder.yudao.framework.common.validation.Mobile;
5 5 import cn.iocoder.yudao.module.member.controller.admin.user.vo.MemberUserPageReqVO;
6 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 8 import cn.iocoder.yudao.module.member.controller.app.user.vo.AppUserUpdateMobileReqVO;
8 9 import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO;
9 10  
10 11 import javax.validation.Valid;
11   -import java.io.InputStream;
12 12 import java.util.Collection;
13 13 import java.util.List;
14 14  
... ... @@ -70,26 +70,17 @@ public interface MemberUserService {
70 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 84 * @param reqVO 请求实体
94 85 */
95 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 1 package cn.iocoder.yudao.module.member.service.user;
2 2  
3   -import cn.hutool.core.io.IoUtil;
4 3 import cn.hutool.core.util.IdUtil;
5 4 import cn.hutool.core.util.StrUtil;
6 5 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
... ... @@ -8,6 +7,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
8 7 import cn.iocoder.yudao.module.infra.api.file.FileApi;
9 8 import cn.iocoder.yudao.module.member.controller.admin.user.vo.MemberUserPageReqVO;
10 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 11 import cn.iocoder.yudao.module.member.controller.app.user.vo.AppUserUpdateMobileReqVO;
12 12 import cn.iocoder.yudao.module.member.convert.user.MemberUserConvert;
13 13 import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO;
... ... @@ -23,7 +23,6 @@ import org.springframework.transaction.annotation.Transactional;
23 23  
24 24 import javax.annotation.Resource;
25 25 import javax.validation.Valid;
26   -import java.io.InputStream;
27 26 import java.time.LocalDateTime;
28 27 import java.util.Collection;
29 28 import java.util.List;
... ... @@ -105,26 +104,9 @@ public class MemberUserServiceImpl implements MemberUserService {
105 104 }
106 105  
107 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 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 67 String newNickName = randomString();
68 68  
69 69 // 调用接口修改昵称
70   - memberUserService.updateUserNickname(userDO.getId(),newNickName);
  70 + memberUserService.updateUser(userDO.getId(),newNickName);
71 71 // 查询新修改后的昵称
72 72 String nickname = memberUserService.getUser(userDO.getId()).getNickname();
73 73 // 断言
... ...