|
@@ -3,7 +3,10 @@ package cn.iocoder.yudao.module.member.service.user;
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
import cn.hutool.core.collection.ListUtil;
|
|
|
import cn.hutool.core.lang.Assert;
|
|
|
-import cn.hutool.core.util.*;
|
|
|
+import cn.hutool.core.util.IdUtil;
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
+import cn.hutool.core.util.RandomUtil;
|
|
|
+import cn.hutool.core.util.StrUtil;
|
|
|
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
|
|
|
import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
|
|
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
|
@@ -22,6 +25,8 @@ import cn.iocoder.yudao.module.system.api.social.SocialClientApi;
|
|
|
import cn.iocoder.yudao.module.system.api.social.dto.SocialWxPhoneNumberInfoRespDTO;
|
|
|
import cn.iocoder.yudao.module.system.enums.sms.SmsSceneEnum;
|
|
|
import com.google.common.annotations.VisibleForTesting;
|
|
|
+import jakarta.annotation.Resource;
|
|
|
+import jakarta.validation.Valid;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.security.crypto.password.PasswordEncoder;
|
|
|
import org.springframework.stereotype.Service;
|
|
@@ -29,8 +34,6 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.transaction.support.TransactionSynchronization;
|
|
|
import org.springframework.transaction.support.TransactionSynchronizationManager;
|
|
|
|
|
|
-import jakarta.annotation.Resource;
|
|
|
-import jakarta.validation.Valid;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.util.Collection;
|
|
|
import java.util.List;
|
|
@@ -83,17 +86,30 @@ public class MemberUserServiceImpl implements MemberUserService {
|
|
|
return user;
|
|
|
}
|
|
|
// 用户不存在,则进行创建
|
|
|
- return createUser(mobile, null, null, registerIp, terminal);
|
|
|
+ return createUser(mobile, null, null, registerIp, terminal, null);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public MemberUserDO createUserIfAbsent(String mobile, String registerIp, Integer terminal, String userNo) {
|
|
|
+ // 用户已经存在
|
|
|
+ MemberUserDO user = memberUserMapper.selectByMobile(mobile);
|
|
|
+ if (user != null) {
|
|
|
+ return user;
|
|
|
+ }
|
|
|
+ // 用户不存在,则进行创建
|
|
|
+ return createUser(mobile, null, null, registerIp, terminal, userNo);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public MemberUserDO createUser(String nickname, String avtar, String registerIp, Integer terminal) {
|
|
|
- return createUser(null, nickname, avtar, registerIp, terminal);
|
|
|
+ return createUser(null, nickname, avtar, registerIp, terminal, null);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
private MemberUserDO createUser(String mobile, String nickname, String avtar,
|
|
|
- String registerIp, Integer terminal) {
|
|
|
+ String registerIp, Integer terminal, String userNo) {
|
|
|
// 生成密码
|
|
|
String password = IdUtil.fastSimpleUUID();
|
|
|
// 插入用户
|
|
@@ -107,16 +123,17 @@ public class MemberUserServiceImpl implements MemberUserService {
|
|
|
// 昵称为空时,随机一个名字,避免一些依赖 nickname 的逻辑报错,或者有点丑。例如说,短信发送有昵称时~
|
|
|
user.setNickname("用户" + RandomUtil.randomNumbers(6));
|
|
|
}
|
|
|
+ user.setUserNo(userNo);
|
|
|
memberUserMapper.insert(user);
|
|
|
-
|
|
|
+
|
|
|
// 发送 MQ 消息:用户创建
|
|
|
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() {
|
|
|
-
|
|
|
+
|
|
|
@Override
|
|
|
public void afterCommit() {
|
|
|
memberUserProducer.sendUserCreateMessage(user.getId());
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
});
|
|
|
return user;
|
|
|
}
|