|
|
@@ -178,6 +178,23 @@ public class UserInfoServiceImpl extends ServiceImpl<UserInfoMapper, UserInfo> i
|
|
|
);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 根据openid获取用户信息
|
|
|
+ *
|
|
|
+ * @param phone 手机号
|
|
|
+ * @return 用户信息,不存在返回null
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public UserInfo getUserInfoByPhone(String phone) {
|
|
|
+ if (StrUtil.isBlank(phone)) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ return this.getOne(
|
|
|
+ new LambdaQueryWrapper<UserInfo>()
|
|
|
+ .eq(UserInfo::getPhone, phone)
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 根据手机号注册或更新用户(小程序用)
|
|
|
* <p>
|
|
|
@@ -201,7 +218,7 @@ public class UserInfoServiceImpl extends ServiceImpl<UserInfoMapper, UserInfo> i
|
|
|
log.info("用户已存在,ID: {}, 手机号: {},openid: {}", existingUser.getId(), phone,openId);
|
|
|
|
|
|
// 如果提供了phone且与现有phone不同,则更新
|
|
|
- if (StrUtil.isNotBlank(phone) && !openId.equals(existingUser.getOpenid())) {
|
|
|
+ if (StrUtil.isNotBlank(phone) && !phone.equals(existingUser.getPhone())) {
|
|
|
log.info("更新用户phone,ID: {}", existingUser.getId());
|
|
|
existingUser.setPhone(phone);
|
|
|
this.updateById(existingUser);
|
|
|
@@ -210,6 +227,21 @@ public class UserInfoServiceImpl extends ServiceImpl<UserInfoMapper, UserInfo> i
|
|
|
return existingUser;
|
|
|
}
|
|
|
|
|
|
+ UserInfo existingUser2 = getUserInfoByPhone(phone);
|
|
|
+
|
|
|
+ if (existingUser2 != null) {
|
|
|
+ log.info("用户已存在,ID: {}, 手机号: {},openid: {}", existingUser2.getId(), phone,openId);
|
|
|
+
|
|
|
+ // 如果提供了phone且与现有phone不同,则更新
|
|
|
+ if (StrUtil.isNotBlank(openId) && !openId.equals(existingUser2.getOpenid())) {
|
|
|
+ log.info("更新用户phone,ID: {}", existingUser2.getId());
|
|
|
+ existingUser2.setOpenid(openId);
|
|
|
+ this.updateById(existingUser2);
|
|
|
+ }
|
|
|
+
|
|
|
+ return existingUser2;
|
|
|
+ }
|
|
|
+
|
|
|
// 用户不存在,创建新用户
|
|
|
log.info("创建新用户,手机号: {}, openId: {}", phone, openId);
|
|
|
UserInfo newUser = new UserInfo();
|
|
|
@@ -234,4 +266,41 @@ public class UserInfoServiceImpl extends ServiceImpl<UserInfoMapper, UserInfo> i
|
|
|
return newUser;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 根据订单和账户数据恢复被物理删除的用户信息
|
|
|
+ * <p>
|
|
|
+ * 查找在 UserOrderInfo 或 UserAccount 中存在但在 UserInfo 中不存在的用户,并重新创建其数据
|
|
|
+ *
|
|
|
+ * @return 恢复的用户数量
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public int restoreDeletedUsersByOrderAndAccount() {
|
|
|
+ // 查询在订单或账户中存在但UserInfo表中不存在的用户信息
|
|
|
+ List<UserInfo> missingUsers = this.baseMapper.selectMissingUserInfoFromOrderAndAccount();
|
|
|
+
|
|
|
+ if (missingUsers == null || missingUsers.isEmpty()) {
|
|
|
+ log.info("没有需要恢复的用户数据");
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ log.info("找到 {} 个需要恢复的用户", missingUsers.size());
|
|
|
+
|
|
|
+ int restoredCount = 0;
|
|
|
+ for (UserInfo userInfo : missingUsers) {
|
|
|
+ try {
|
|
|
+ // 插入恢复的用户信息
|
|
|
+ int inserted = this.baseMapper.insertUserInfoWithId(userInfo);
|
|
|
+ if (inserted > 0) {
|
|
|
+ restoredCount++;
|
|
|
+ log.info("成功恢复用户,ID: {}, openid: {}", userInfo.getId(), userInfo.getOpenid());
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("恢复用户失败,ID: {}, 错误: {}", userInfo.getId(), e.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ log.info("成功恢复 {} 个用户数据", restoredCount);
|
|
|
+ return restoredCount;
|
|
|
+ }
|
|
|
+
|
|
|
}
|