From 5997dc8acfa81a6c867c28810d1c3c9714efc46c Mon Sep 17 00:00:00 2001 From: cloudroam <cloudroam> Date: 星期六, 29 三月 2025 14:55:42 +0800 Subject: [PATCH] fix: 登录 --- src/main/java/com/mzl/flower/service/system/UserService.java | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 53 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/mzl/flower/service/system/UserService.java b/src/main/java/com/mzl/flower/service/system/UserService.java index 2f0febf..62a34f5 100644 --- a/src/main/java/com/mzl/flower/service/system/UserService.java +++ b/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; + } + + } -- Gitblit v1.9.3