|
|
@@ -88,6 +88,9 @@ private FamilyInvitationService familyInvitationService;
|
|
|
@Resource
|
|
|
private ConsigneeMapper consigneeMapper;
|
|
|
|
|
|
+ @Resource
|
|
|
+ private RealNameBackfillService realNameBackfillService;
|
|
|
+
|
|
|
public LoginResultDTO wechatLogin(WechatLoginDTO dto) {
|
|
|
// 1. 通过code获取openid
|
|
|
Map<String, String> sessionData = wechatService.code2Session(dto.getCode());
|
|
|
@@ -499,6 +502,11 @@ private FamilyInvitationService familyInvitationService;
|
|
|
case "realName":
|
|
|
if (value.length() > 20) throw new RuntimeException("真实姓名不能超过20字");
|
|
|
user.setRealName(value);
|
|
|
+ realNameBackfillService.backfillRealNameAndNickname(user.getId(), value);
|
|
|
+ // 同步内存:helper 可能补写了 nickname,保证外层 updateById 不覆盖
|
|
|
+ if (user.getNickname() == null || user.getNickname().trim().isEmpty()) {
|
|
|
+ user.setNickname(value.trim());
|
|
|
+ }
|
|
|
break;
|
|
|
default:
|
|
|
break;
|
|
|
@@ -1014,11 +1022,14 @@ private FamilyInvitationService familyInvitationService;
|
|
|
user.setNickname(dto.getNickname());
|
|
|
user.setAvatar(dto.getAvatar());
|
|
|
user.setIdCard(dto.getIdCard());
|
|
|
- user.setRealName(dto.getRealName());
|
|
|
user.setPassword(""); // 初始密码为空,需要后续设置
|
|
|
user.setCreatedAt(new Date());
|
|
|
user.setUpdatedAt(new Date());
|
|
|
createUserAndFamily(user);
|
|
|
+ // 新用户创建后:若 dto 提供了真实姓名且用户表 realName 尚未填写,同时回填 realName + nickname(nickname 仅空时补)
|
|
|
+ if (dto.getRealName() != null && !dto.getRealName().trim().isEmpty()) {
|
|
|
+ realNameBackfillService.backfillRealNameAndNickname(user.getId(), dto.getRealName().trim());
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
ensureUserHasFamily(user);
|
|
|
@@ -1199,6 +1210,11 @@ FamilyMember child = familyMemberMapper.selectById(memberId);
|
|
|
}
|
|
|
if (dto.getRealName() != null) {
|
|
|
user.setRealName(dto.getRealName());
|
|
|
+ realNameBackfillService.backfillRealNameAndNickname(userId, dto.getRealName());
|
|
|
+ // 同步内存:helper 可能补写了 nickname,保证外层 updateById 不覆盖(nickname 仅空时补)
|
|
|
+ if (user.getNickname() == null || user.getNickname().trim().isEmpty()) {
|
|
|
+ user.setNickname(dto.getRealName().trim());
|
|
|
+ }
|
|
|
}
|
|
|
// 更新角色
|
|
|
if (dto.getRole() != null) {
|