cloudroam
2025-03-29 5997dc8acfa81a6c867c28810d1c3c9714efc46c
src/main/java/com/mzl/flower/service/system/UserService.java
@@ -8,6 +8,8 @@
import com.mzl.flower.constant.Constants;
import com.mzl.flower.dto.request.BindWechatDTO;
import com.mzl.flower.dto.request.CreateWechatUserDTO;
import com.mzl.flower.dto.request.UserLoginDTO;
import com.mzl.flower.dto.request.UserPhoneLoginDTO;
import com.mzl.flower.dto.request.customer.UpdateCustomerDTO;
import com.mzl.flower.dto.request.system.*;
import com.mzl.flower.dto.response.current.CurrentUserDTO;
@@ -586,4 +588,55 @@
    }
    public User registPhoneUser(UserPhoneLoginDTO dto) {
        String RETISTER_KEY = "%s_%s";
        RLock lock = redissonClient.getLock(String.format(RETISTER_KEY, dto.getUsername(), dto.getUserType()));
        try {
            // 获取锁,最多等待 10 秒,锁自动释放时间 30 秒
            if (lock.tryLock(10, 30, TimeUnit.SECONDS)) {
                try {
                    // 其次查找当前loginName是prephonenume的,userType是customer的用户存在不存在
                    if (StringUtils.isEmpty(dto.getUsername()) && StringUtils.isEmpty(dto.getUsername())) {
                        throw new ValidationException("电话号码为空!无法注册");
                    }
                    // 1:查看用户存在不存在
                    List<String> userTypes = new ArrayList<>();
                    userTypes.add(dto.getUserType());
                    User user = findByLoginName(dto.getUsername(), userTypes);
                    if (ObjectUtils.isEmpty(user)) {
                        // 是新用户,需要注册
                        user = new User();
                        user.setId(UUIDGenerator.getUUID());
                        user.setLoginName(dto.getUsername());
                        user.setTel(dto.getUsername());
                        user.setNickName(dto.getUsername());
                        user.setPassword(passwordEncoder.encode("12345678"));
                        user.setType(dto.getUserType());
                        user.setStatus(Constants.STATUS_ACTIVE);
                        user.setIsSys(Constants.N);
                        user.create();
                        userMapper.insert(user);
                        // 注册商户信息
                        UpdateCustomerDTO updateCustomerDTO = new UpdateCustomerDTO();
                        updateCustomerDTO.setUserId(user.getId());
                        if (StringUtils.isNotBlank(dto.getUsername())) {
                            updateCustomerDTO.setName("智信-" + dto.getUsername().substring(dto.getUsername().length() - 4));
                        }
                        customerService.addOrUpdateCustomer(updateCustomerDTO);
                        return user;
                    }
                } finally {
                    lock.unlock();
                }
            }
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
        return null;
    }
}