From f060439c675cb9185252cfc8f034853290863c62 Mon Sep 17 00:00:00 2001
From: cloudroam <cloudroam>
Date: 星期一, 31 三月 2025 09:45:39 +0800
Subject: [PATCH] fix 登录
---
src/main/java/com/mzl/flower/service/system/UserService.java | 119 +++++++++++++++++++++++++++++++++++++++++++----------------
1 files changed, 86 insertions(+), 33 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..8325c73 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;
@@ -534,41 +536,41 @@
// 获取锁,最多等待 10 秒,锁自动释放时间 30 秒
if (lock.tryLock(10, 30, TimeUnit.SECONDS)) {
try{
- // 其次查找当前loginName是prephonenume的,userType是customer的用户存在不存在
- if (StringUtils.isEmpty(dto.getPurePhoneNumber()) && StringUtils.isEmpty(dto.getPhoneNumber())) {
- throw new ValidationException("微信获取的电话号码为空!无法注册");
- }
- // 1:查看用户存在不存在
- List<String> userTypes = new ArrayList<>();
- userTypes.add(dto.getUserType());
- User user = findByLoginName(dto.getPurePhoneNumber(), userTypes);
- if (ObjectUtils.isEmpty(user)) {
- // 是新用户,需要注册
- user = new User();
- user.setId(UUIDGenerator.getUUID());
- user.setLoginName(dto.getPurePhoneNumber());
- user.setTel(dto.getPurePhoneNumber());
- user.setNickName(dto.getPurePhoneNumber());
- 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.getPurePhoneNumber())) {
- updateCustomerDTO.setName("花满芫-" + dto.getPurePhoneNumber().substring(dto.getPurePhoneNumber().length() - 4));
-
+ // 其次查找当前loginName是prephonenume的,userType是customer的用户存在不存在
+ if (StringUtils.isEmpty(dto.getPurePhoneNumber()) && StringUtils.isEmpty(dto.getPhoneNumber())) {
+ throw new ValidationException("微信获取的电话号码为空!无法注册");
}
- customerService.addOrUpdateCustomer(updateCustomerDTO);
- }
+ // 1:查看用户存在不存在
+ List<String> userTypes = new ArrayList<>();
+ userTypes.add(dto.getUserType());
+ User user = findByLoginName(dto.getPurePhoneNumber(), userTypes);
+ if (ObjectUtils.isEmpty(user)) {
+ // 是新用户,需要注册
+ user = new User();
+ user.setId(UUIDGenerator.getUUID());
+ user.setLoginName(dto.getPurePhoneNumber());
+ user.setTel(dto.getPurePhoneNumber());
+ user.setNickName(dto.getPurePhoneNumber());
+ user.setPassword(passwordEncoder.encode("12345678"));
+ user.setType(dto.getUserType());
+ user.setStatus(Constants.STATUS_ACTIVE);
+ user.setIsSys(Constants.N);
+ user.create();
+ userMapper.insert(user);
- BindWechatDTO wechatDTO = new BindWechatDTO();
- wechatDTO.setRealName(dto.getPurePhoneNumber());
- bindWechat(user.getId(), dto.getOpenId(), dto.getUnionId(), dto.getSessionKey(), wechatDTO);
+ // 注册商户信息
+ UpdateCustomerDTO updateCustomerDTO = new UpdateCustomerDTO();
+ updateCustomerDTO.setUserId(user.getId());
+ if (StringUtils.isNotBlank(dto.getPurePhoneNumber())) {
+ updateCustomerDTO.setName("花满芫-" + dto.getPurePhoneNumber().substring(dto.getPurePhoneNumber().length() - 4));
+
+ }
+ customerService.addOrUpdateCustomer(updateCustomerDTO);
+ }
+
+ BindWechatDTO wechatDTO = new BindWechatDTO();
+ wechatDTO.setRealName(dto.getPurePhoneNumber());
+ bindWechat(user.getId(), dto.getOpenId(), dto.getUnionId(), dto.getSessionKey(), wechatDTO);
}finally {
lock.unlock();
}
@@ -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