将查询用户个人信息与更新用户信息迁移至gym-member模块

This commit is contained in:
2026-05-10 20:40:25 +08:00
parent 538c1e0ad5
commit 3d284c8d3a
7 changed files with 116 additions and 4 deletions
@@ -0,0 +1,30 @@
package cn.novalon.gym.manage.member.dto;
import lombok.Data;
import java.util.Date;
/**
* 更新会员信息Dto
*
* @author 付嘉
* @date 2026-05-10
*/
@Data
public class UpdateMemberInfoDto {
// 昵称
private String nickname;
// 性别
private Integer gender;
// 生日
private Date birthday;
// 头像
private String avatar;
// 地址
private String address;
}
@@ -1,6 +1,7 @@
package cn.novalon.gym.manage.member.handler;
import cn.novalon.gym.manage.member.dto.AdminUpdatePhoneDto;
import cn.novalon.gym.manage.member.dto.UpdateMemberInfoDto;
import cn.novalon.gym.manage.member.service.MemberService;
import cn.novalon.gym.manage.member.service.WechatAuthService;
import cn.novalon.gym.manage.member.service.WechatOfficialService;
@@ -52,6 +53,35 @@ public class MemberHandler {
});
}
/**
* 更新会员信息
*
* PUT /api/member/info
* Header: X-Member-Id: 123
* Body: {
* "nickname": "新昵称",
* "gender": 1,
* "birthday": "2000-01-01",
* "avatar": "https://example.com/avatar.jpg",
* "address": "北京市朝阳区"
* }
*/
public Mono<ServerResponse> updateMemberInfo(ServerRequest request) {
String memberIdStr = request.headers().firstHeader("X-Member-Id");
long memberId = NumberUtils.toLong(memberIdStr, 0L);
if (memberId <= 0) throw new IllegalArgumentException("更新会员信息失败: memberId 无效");
log.info("更新会员信息, memberId: {}", memberId);
return request.bodyToMono(UpdateMemberInfoDto.class)
.flatMap(updateDto -> memberService.updateMemberInfo(memberId, updateDto))
.flatMap(info -> ServerResponse.ok()
.contentType(MediaType.APPLICATION_JSON)
.bodyValue(info));
}
/**
* 绑定手机号(微信小程序)
*
@@ -1,5 +1,6 @@
package cn.novalon.gym.manage.member.service;
import cn.novalon.gym.manage.member.dto.UpdateMemberInfoDto;
import cn.novalon.gym.manage.member.vo.MemberInfoVO;
import reactor.core.publisher.Mono;
@@ -19,6 +20,15 @@ public interface MemberService {
*/
Mono<MemberInfoVO> getMemberInfo(Long memberId);
/**
* 会员更新个人信息
*
* @param memberId 会员ID
* @param updateDto 更新信息DTO
* @return 更新后的会员信息
*/
Mono<MemberInfoVO> updateMemberInfo(Long memberId, UpdateMemberInfoDto updateDto);
/**
* 管理端更新会员手机号
*
@@ -1,5 +1,6 @@
package cn.novalon.gym.manage.member.service.impl;
import cn.novalon.gym.manage.member.dto.UpdateMemberInfoDto;
import cn.novalon.gym.manage.member.vo.MemberInfoVO;
import cn.novalon.gym.manage.member.entity.Member;
import cn.novalon.gym.manage.member.repository.MemberRepository;
@@ -40,6 +41,40 @@ public class MemberServiceImpl implements MemberService {
.map(this::buildMemberInfoResponse);
}
@Override
public Mono<MemberInfoVO> updateMemberInfo(Long memberId, UpdateMemberInfoDto updateDto) {
log.info("会员更新个人信息, memberId: {}", memberId);
return memberRepository.findById(memberId)
.switchIfEmpty(Mono.defer(() -> {
log.error("会员不存在: memberId={}", memberId);
return Mono.error(new ResponseStatusException(HttpStatus.NOT_FOUND, "会员不存在"));
}))
.flatMap(member -> {
if (updateDto.getNickname() != null) {
member.setNickname(updateDto.getNickname());
}
if (updateDto.getGender() != null) {
member.setGender(updateDto.getGender());
}
if (updateDto.getBirthday() != null) {
member.setBirthday(updateDto.getBirthday());
}
if (updateDto.getAvatar() != null) {
member.setAvatar(updateDto.getAvatar());
}
if (updateDto.getAddress() != null) {
member.setAddress(updateDto.getAddress());
}
return memberRepository.save(member);
})
.map(savedMember -> {
log.info("会员信息更新成功, memberId: {}", savedMember.getId());
return buildMemberInfoResponse(savedMember);
});
}
// 会员信息响应
private MemberInfoVO buildMemberInfoResponse(Member member) {
String phone = member.getPhone();