Commit 415333153564a9c3c06b1fc09bac7e3796281d9e
1 parent
94a32d34
1. 合并 member 修改昵称和头像接口,统一成修改基本信息 API
Showing
8 changed files
with
40 additions
and
72 deletions
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 | // 断言 | ... | ... |