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