From 9e5d3f634b52333c076eb443a64de873c5ddceed Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期六, 09 十一月 2024 14:39:46 +0800
Subject: [PATCH] 代码提交
---
xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/service/impl/AppUserServiceImpl.java | 142 +++++++++++++++++++++++++++++++++--------------
1 files changed, 99 insertions(+), 43 deletions(-)
diff --git a/xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/service/impl/AppUserServiceImpl.java b/xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/service/impl/AppUserServiceImpl.java
index ac83773..d09696b 100644
--- a/xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/service/impl/AppUserServiceImpl.java
+++ b/xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/service/impl/AppUserServiceImpl.java
@@ -3,6 +3,7 @@
import cn.hutool.core.util.IdUtil;
import cn.hutool.crypto.SecureUtil;
import com.alibaba.nacos.common.utils.StringUtils;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xinquan.common.core.constant.Constants;
@@ -15,14 +16,12 @@
import com.xinquan.common.core.exception.ServiceException;
import com.xinquan.common.core.utils.page.BeanUtils;
import com.xinquan.common.core.utils.page.CollUtils;
+import com.xinquan.common.security.service.TokenService;
import com.xinquan.common.security.utils.SecurityUtils;
import com.xinquan.system.api.RemoteUserService;
import com.xinquan.system.api.domain.SysUser;
import com.xinquan.system.api.feignClient.SysUserClient;
-import com.xinquan.system.api.model.AppCaptchaBody;
-import com.xinquan.system.api.model.AppLoginUser;
-import com.xinquan.system.api.model.AppVerifyCellPhoneBody;
-import com.xinquan.system.api.model.AppWXLoginBody;
+import com.xinquan.system.api.model.*;
import com.xinquan.system.api.domain.AppUser;
import com.xinquan.user.api.domain.dto.AppUserDTO;
import com.xinquan.system.api.domain.AppUserQuestion;
@@ -37,13 +36,12 @@
import com.xinquan.user.service.AppUserTreeService;
import com.xinquan.user.service.TagService;
import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
-import java.util.List;
-import java.util.Locale;
-import java.util.Objects;
-import java.util.Optional;
+import java.util.*;
import java.util.stream.Collectors;
import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -82,6 +80,10 @@
.ne(AppUser::getUserStatus, AppUserStatusEnum.LOGOUT.getCode()).oneOpt();
}
+ public static void main(String[] args) {
+ String randomCode = String.valueOf((int) ((Math.random() * 9 + 1) * 1000));
+ System.err.println(randomCode);
+ }
/**
* app用户注册
* @param appUserDTO
@@ -90,6 +92,11 @@
@Override
public AppUser registerAppUser(AppUserDTO appUserDTO) {
AppUser appUser = BeanUtils.copyBean(appUserDTO, AppUser.class);
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
+ String format = simpleDateFormat.format(new Date());
+ // 生成四位随机数字
+ String randomCode = String.valueOf((int) ((Math.random() * 9 + 1) * 1000));
+ appUser.setCode("YH"+format+randomCode);
this.save(appUser);
return appUser;
}
@@ -114,6 +121,12 @@
throw new ServiceException("账号已被冻结");
}
sysUser = sysUserClient.getSysUser(appUser.getUserId()).getData();
+ appUser.setAvatar(body.getHeadImgUrl());
+ appUser.setNickname(body.getNickname());
+ if (appUser.getCellPhone()!=null){
+ appLoginUser.setBindStatus(DisabledEnum.NO.getCode());
+ appLoginUser.setCellPhone(appUser.getCellPhone());
+ }
} else {
// 不存在账户,创建账户
// 注册用户信息
@@ -130,10 +143,16 @@
SysUser sysUserRes = registerResult.getData();
appUser = new AppUser();
appUser.setUserId(sysUserRes.getUserId());
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
+ String format = simpleDateFormat.format(new Date());
+ // 生成四位随机数字
+ String randomCode = String.valueOf((int) ((Math.random() * 9 + 1) * 1000));
+ appUser.setCode("YH"+format+randomCode);
appUser.setWxOpenId(body.getWxOpenId());
- appUser.setNickname(body.getNickname());
+ String nickname = "用户" + IdUtil.fastSimpleUUID().substring(0, 6);
+ sysUser.setNickName(nickname);
appUser.setAvatar(body.getHeadImgUrl());
- appUser.setGender(body.getSex());
+ appUser.setGender(3);
appUser.setBalance(BigDecimal.ZERO);
appUser.setSanskritFlag(DisabledEnum.NO.getCode());
appUser.setBalance(BigDecimal.ZERO);
@@ -149,10 +168,10 @@
appLoginUser.setUsername(appUser.getNickname());
appLoginUser.setAppUserId(appUser.getId());
appLoginUser.setSysUser(sysUser);
- if (Objects.nonNull(sysUser.getUserName())) {
- appLoginUser.setBindStatus(DisabledEnum.YES.getCode());
- appLoginUser.setCellPhone(appUser.getCellPhone());
- }
+// if (Objects.nonNull(sysUser.getUserName())) {
+// appLoginUser.setBindStatus(DisabledEnum.YES.getCode());
+// appLoginUser.setCellPhone(appUser.getCellPhone());
+// }
return appLoginUser;
}
@@ -166,14 +185,21 @@
// 存在账户,查询关联系统用户
if (optionalAppUser.isPresent()) {
appUser = optionalAppUser.get();
+ if (appUser.getUserStatus().equals(AppUserStatusEnum.FROZEN.getCode())) {
+ throw new ServiceException("账号已被冻结");
+ }
sysUser = sysUserClient.getSysUser(appUser.getUserId()).getData();
+ if (appUser.getCellPhone()!=null){
+ appLoginUser.setBindStatus(DisabledEnum.NO.getCode());
+ appLoginUser.setCellPhone(appUser.getCellPhone());
+ }
} else {
// 不存在账户,创建账户
// 注册用户信息
sysUser = new SysUser();
String nickname = "用户" + IdUtil.fastSimpleUUID().substring(0, 6);
sysUser.setNickName(nickname);
- sysUser.setAvatar("qwer");
+ sysUser.setAvatar("https://xqgwzh.obs.cn-south-1.myhuaweicloud.com/Logo%E7%A1%AE%E8%AE%A4%E7%89%88%281%29.jpg");
sysUser.setUserName(nickname);
sysUser.setUserType("01"); // app用户
R<SysUser> registerResult = remoteUserService.registerAppUserInfo(sysUser,
@@ -183,9 +209,10 @@
}
SysUser sysUserRes = registerResult.getData();
appUser = new AppUser();
+ appUser.setAppleId(appleId);
appUser.setUserId(sysUserRes.getUserId());
appUser.setNickname(nickname);
- appUser.setAvatar("qwer"); // TODO 待完善默认头像
+ appUser.setAvatar("https://xqgwzh.obs.cn-south-1.myhuaweicloud.com/Logo%E7%A1%AE%E8%AE%A4%E7%89%88%281%29.jpg"); // TODO 待完善默认头像
appUser.setBalance(BigDecimal.ZERO);
appUser.setSanskritFlag(DisabledEnum.NO.getCode());
appUser.setBalance(BigDecimal.ZERO);
@@ -193,6 +220,11 @@
appUser.setTotalEnergyValue(0);
appUser.setRegisterTime(LocalDateTime.now());
appUser.setLevelSettingId(TreeLevelEnum.SEED.getCode());
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
+ String format = simpleDateFormat.format(new Date());
+ // 生成四位随机数字
+ String randomCode = String.valueOf((int) ((Math.random() * 9 + 1) * 1000));
+ appUser.setCode("YH"+format+randomCode);
this.save(appUser);
// 初始化用户树苗
initUserTree(appUser.getId());
@@ -201,10 +233,10 @@
appLoginUser.setUsername(appUser.getNickname());
appLoginUser.setAppUserId(appUser.getId());
appLoginUser.setSysUser(sysUser);
- if (Objects.nonNull(sysUser.getUserName())) {
- appLoginUser.setBindStatus(DisabledEnum.YES.getCode());
- appLoginUser.setCellPhone(appUser.getCellPhone());
- }
+// if (Objects.nonNull(sysUser.getUserName())) {
+// appLoginUser.setBindStatus(DisabledEnum.YES.getCode());
+// appLoginUser.setCellPhone(appUser.getCellPhone());
+// }
return appLoginUser;
}
@@ -230,7 +262,7 @@
sysUser = new SysUser();
String nickname = "用户" + IdUtil.fastSimpleUUID().substring(0, 6);
sysUser.setNickName(nickname);
- sysUser.setAvatar("qwer");
+ sysUser.setAvatar("https://xqgwzh.obs.cn-south-1.myhuaweicloud.com/Logo%E7%A1%AE%E8%AE%A4%E7%89%88%281%29.jpg");
sysUser.setUserName(body.getCellPhone());
sysUser.setUserType("01"); // app用户
// 设置默认密码123456
@@ -246,7 +278,7 @@
appUser.setUserId(sysUserRes.getUserId());
appUser.setNickname(nickname);
appUser.setCellPhone(body.getCellPhone());
- appUser.setAvatar("qwer"); // TODO 待完善默认头像
+ appUser.setAvatar("https://xqgwzh.obs.cn-south-1.myhuaweicloud.com/Logo%E7%A1%AE%E8%AE%A4%E7%89%88%281%29.jpg"); // TODO 待完善默认头像
appUser.setBalance(BigDecimal.ZERO);
appUser.setSanskritFlag(DisabledEnum.NO.getCode());
appUser.setBalance(BigDecimal.ZERO);
@@ -254,6 +286,11 @@
appUser.setTotalEnergyValue(0);
appUser.setRegisterTime(LocalDateTime.now());
appUser.setLevelSettingId(TreeLevelEnum.SEED.getCode());
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
+ String format = simpleDateFormat.format(new Date());
+ // 生成四位随机数字
+ String randomCode = String.valueOf((int) ((Math.random() * 9 + 1) * 1000));
+ appUser.setCode("YH"+format+randomCode);
this.save(appUser);
// 初始化用户树苗
initUserTree(appUser.getId());
@@ -278,6 +315,7 @@
appUserTree.setTreeLevelType(TreeLevelEnum.SEED.getCode());
appUserTree.setGrowthValue(0);
appUserTree.setSowAgain(2);
+ appUserTree.setTime(LocalDateTime.now());
appUserTreeService.save(appUserTree);
}
@@ -299,11 +337,32 @@
// 如果存在 更新wxOpenId 或appleId
if (baseOptionalAppUser.isPresent()) {
appUser = baseOptionalAppUser.get();
+ if (appUser.getWxOpenId() !=null){
+ throw new ServiceException("该手机号已绑定其他微信号,请更换手机号重新绑定");
+ }
+ if (appUser.getAppleId() !=null){
+ throw new ServiceException("该手机号已绑定其他苹果号,请更换手机号重新绑定");
+ }
+ switch (body.getLoginType()){
+ case 1:
+ this.remove(new LambdaQueryWrapper<AppUser>()
+ .eq(AppUser::getWxOpenId,body.getWxOrAppleId())
+ .ne(AppUser::getId,appUser.getId()));
+ break;
+ case 2:
+ this.remove(new LambdaQueryWrapper<AppUser>()
+ .eq(AppUser::getAppleId,body.getWxOrAppleId())
+ .ne(AppUser::getId,appUser.getId()));
+ break;
+ }
+
if (loginType.equals(1)) {
appUser.setWxOpenId(wxOrAppleId);
} else {
appUser.setAppleId(wxOrAppleId);
}
+ appUser.setEmail(body.getEmail());
+ appUser.setNickname(body.getName());
// 查询系统用户
sysUser = sysUserClient.getSysUser(appUser.getUserId()).getData();
if (Objects.isNull(sysUser)) {
@@ -311,7 +370,6 @@
}
} else {
Optional<AppUser> userOptional = getAppUserByThirdId(loginType, wxOrAppleId);
-
if (loginType.equals(1)) {
// 微信登录
handleUserNotPresent(userOptional, "该用户不存在,请重新进行微信授权登录");
@@ -321,6 +379,8 @@
}
appUser = userOptional.get();
appUser.setCellPhone(body.getCellPhone());
+ appUser.setEmail(body.getEmail());
+ appUser.setNickname(body.getName());
// 更新系统用户
sysUser = sysUserClient.getSysUser(appUser.getUserId()).getData();
if (Objects.isNull(sysUser)) {
@@ -328,10 +388,8 @@
}
sysUser.setUserName(body.getCellPhone());
sysUser.setPassword(
- SecurityUtils.encryptPassword(
- SecureUtil.md5(Constants.DEFAULT_PASSWORD).toUpperCase(
- Locale.ROOT)))
- ; // 默认密码为123456
+ SecurityUtils.encryptPassword(Constants.DEFAULT_PASSWORD))
+ ; // 默认密码为a12345678
sysUser.setPhonenumber(body.getCellPhone());
sysUserClient.updateSysUser(sysUser);
}
@@ -373,8 +431,8 @@
@Override
public void saveUserAnswers(UserAnswerDTO dto) {
// 获取当前登录用户
- Long userId = SecurityUtils.getUserId();
- AppUser appUser = this.getUserBySysUserId(userId);
+ Long userId = tokenService.getLoginUser().getUserid();
+ AppUser appUser = this.getById(userId);
List<AppUserQuestion> appUserQuestionList = BeanUtils.copyList(
dto.getUserAnswerOneDTOList(), AppUserQuestion.class);
// 查询用户已填写的答案
@@ -384,31 +442,24 @@
if (CollUtils.isNotEmpty(baseAppUserQuestionList)) {
// 根据类型更新答案
for (AppUserQuestion appUserQuestion : appUserQuestionList) {
+
Optional<AppUserQuestion> baseAppUserQuestionOptional = baseAppUserQuestionList.stream()
.filter(baseAppUserQuestion -> baseAppUserQuestion.getType()
.equals(appUserQuestion.getType())).findFirst();
baseAppUserQuestionOptional.ifPresent(
userQuestion -> appUserQuestion.setId(userQuestion.getId()));
+ appUserQuestion.setAppUserId(userId);
}
+ }
+ for (AppUserQuestion appUserQuestion : appUserQuestionList) {
+ appUserQuestion.setAppUserId(userId);
}
appUserQuestionService.saveOrUpdateBatch(appUserQuestionList);
// 筛选答案为是和偶尔有的问题,为用户设置对应的标签
List<AppUserQuestion> appUserQuestionYesList = appUserQuestionList.stream()
.filter(appUserQuestion -> appUserQuestion.getAnswer().equals("1")
|| appUserQuestion.getAnswer().equals("3")).collect(Collectors.toList());
- StringBuilder sb = new StringBuilder();
- // 使用 StringBuilder 提高字符串拼接效率
- if (CollUtils.isNotEmpty(appUserQuestionYesList)) {
- List<Long> tagIdList = appUserQuestionYesList.stream()
- .map(appUserQuestion -> AnswerTagEnum.getEnumByCode(appUserQuestion.getType())
- .getTagId()).collect(Collectors.toList());
- if (CollUtils.isNotEmpty(tagIdList)) {
- sb.append(CollUtils.join(tagIdList, ","));
- }
- }
- sb.append(",");
- sb.append(dto.getTagIds());
- appUser.setTagId(sb.toString());
+ appUser.setTagId(dto.getTagIds());
this.updateById(appUser);
}
@@ -450,6 +501,8 @@
this.updateById(appUser);
}
+ @Autowired
+ private TokenService tokenService;
/**
* 获取当前登录用户信息
*
@@ -458,7 +511,10 @@
*/
@Override
public AppUserVO getCurrentUser() {
- AppUser appUser = this.getById(SecurityUtils.getUserId());
+ LoginUser loginUser = tokenService.getLoginUser();
+
+ Long userId = loginUser.getUserid();
+ AppUser appUser = this.getById(userId);
return BeanUtils.copyBean(appUser, AppUserVO.class);
}
}
--
Gitblit v1.7.1