|
|
@@ -127,20 +127,52 @@ public class FamilyMemberService {
|
|
|
member.setCreatedAt(new Date());
|
|
|
member.setUpdatedAt(new Date());
|
|
|
|
|
|
- // 手机号匹配:查找是否有同手机号的已注册用户
|
|
|
+ // 【重构】成员创建:同步创建 user 记录(无 openid = 不可登录)
|
|
|
+ // 1) 若填写了手机号且已存在同手机号用户 → 复用该 user(绑定 userId)
|
|
|
+ // 2) 若填写了手机号但不存在 → 创建无 openid 的 user,预留未来注册复用
|
|
|
+ // 3) 未填写手机号 → 创建无 openid 的 user
|
|
|
+ Long memberUserId = null;
|
|
|
if (dto.getPhone() != null && !dto.getPhone().isEmpty()) {
|
|
|
User matchedUser = userMapper.selectOne(
|
|
|
new LambdaQueryWrapper<User>().eq(User::getPhone, dto.getPhone()));
|
|
|
if (matchedUser != null) {
|
|
|
- member.setUserId(matchedUser.getId());
|
|
|
+ memberUserId = matchedUser.getId();
|
|
|
// 将匹配到的用户加入同一家庭(如果尚未加入)
|
|
|
if (matchedUser.getFamilyId() == null) {
|
|
|
matchedUser.setFamilyId(familyId);
|
|
|
matchedUser.setUpdatedAt(new Date());
|
|
|
userMapper.updateById(matchedUser);
|
|
|
}
|
|
|
+ } else {
|
|
|
+ // 创建预留用户(无 openid,后续同手机号注册时复用)
|
|
|
+ User newUser = new User();
|
|
|
+ newUser.setOpenid("");
|
|
|
+ newUser.setUnionid("");
|
|
|
+ newUser.setRole("parent"); // 无 child 角色,统一 parent 兜底(实际不可登录)
|
|
|
+ newUser.setNickname(dto.getNickname().trim());
|
|
|
+ newUser.setPhone(dto.getPhone());
|
|
|
+ newUser.setFamilyId(familyId);
|
|
|
+ newUser.setPassword(""); // 初始密码为空,切换保护密码后续由用户设置
|
|
|
+ newUser.setCreatedAt(new Date());
|
|
|
+ newUser.setUpdatedAt(new Date());
|
|
|
+ userMapper.insert(newUser);
|
|
|
+ memberUserId = newUser.getId();
|
|
|
}
|
|
|
- }
|
|
|
+ } else {
|
|
|
+ // 未填手机号:创建无 openid 的 user(昵称必须非空)
|
|
|
+ User newUser = new User();
|
|
|
+ newUser.setOpenid("");
|
|
|
+ newUser.setUnionid("");
|
|
|
+ newUser.setRole("parent");
|
|
|
+ newUser.setNickname(dto.getNickname().trim());
|
|
|
+ newUser.setFamilyId(familyId);
|
|
|
+ newUser.setPassword("");
|
|
|
+ newUser.setCreatedAt(new Date());
|
|
|
+ newUser.setUpdatedAt(new Date());
|
|
|
+ userMapper.insert(newUser);
|
|
|
+ memberUserId = newUser.getId();
|
|
|
+ }
|
|
|
+ member.setUserId(memberUserId);
|
|
|
|
|
|
familyMemberMapper.insert(member);
|
|
|
|