From 185f5dc7c3c49f565da51cd9c2f7750f30990d4a Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期一, 11 十一月 2024 13:28:29 +0800 Subject: [PATCH] 代码提交 --- xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/service/impl/AppUserServiceImpl.java | 159 ++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 109 insertions(+), 50 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 09bad30..dca7cd9 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,21 +16,19 @@ 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.user.api.domain.AppUser; +import com.xinquan.system.api.model.*; +import com.xinquan.system.api.domain.AppUser; import com.xinquan.user.api.domain.dto.AppUserDTO; -import com.xinquan.user.domain.AppUserQuestion; -import com.xinquan.user.domain.AppUserTree; -import com.xinquan.user.domain.Tag; +import com.xinquan.system.api.domain.AppUserQuestion; +import com.xinquan.system.api.domain.AppUserTree; +import com.xinquan.system.api.domain.Tag; import com.xinquan.user.domain.dto.UserAnswerDTO; -import com.xinquan.user.domain.vo.AppUserVO; +import com.xinquan.system.api.domain.vo.AppUserVO; import com.xinquan.user.domain.vo.TagVO; import com.xinquan.user.mapper.AppUserMapper; import com.xinquan.user.service.AppUserQuestionService; @@ -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,7 +92,13 @@ @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); + initUserTree(appUser.getId()); return appUser; } @@ -114,6 +122,12 @@ throw new ServiceException("账号已被冻结"); } sysUser = sysUserClient.getSysUser(appUser.getUserId()).getData(); + appUser.setAvatar(body.getHeadImgUrl()); + appUser.setWxName(body.getNickname()); + if (appUser.getCellPhone()!=null){ + appLoginUser.setBindStatus(DisabledEnum.NO.getCode()); + appLoginUser.setCellPhone(appUser.getCellPhone()); + } } else { // 不存在账户,创建账户 // 注册用户信息 @@ -130,10 +144,18 @@ 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.setNickname(nickname); + appUser.setWxName(body.getNickname()); appUser.setAvatar(body.getHeadImgUrl()); - appUser.setGender(body.getSex()); + appUser.setGender(3); appUser.setBalance(BigDecimal.ZERO); appUser.setSanskritFlag(DisabledEnum.NO.getCode()); appUser.setBalance(BigDecimal.ZERO); @@ -141,6 +163,7 @@ appUser.setTotalEnergyValue(0); appUser.setRegisterTime(LocalDateTime.now()); appUser.setLevelSettingId(TreeLevelEnum.SEED.getCode()); + appLoginUser.setBindStatus(DisabledEnum.YES.getCode()); this.save(appUser); // 初始化用户树苗 initUserTree(appUser.getId()); @@ -149,10 +172,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()); - } + this.updateById(appUser); +// if (Objects.nonNull(sysUser.getUserName())) { +// appLoginUser.setCellPhone(appUser.getCellPhone()); +// } return appLoginUser; } @@ -166,14 +189,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 +213,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 +224,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 +237,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 +266,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 +282,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 +290,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,7 +319,7 @@ appUserTree.setTreeLevelType(TreeLevelEnum.SEED.getCode()); appUserTree.setGrowthValue(0); appUserTree.setSowAgain(2); - appUserTree.setCurrentEnergyValue(0); + appUserTree.setTime(LocalDateTime.now()); appUserTreeService.save(appUserTree); } @@ -300,11 +341,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)) { @@ -312,7 +374,6 @@ } } else { Optional<AppUser> userOptional = getAppUserByThirdId(loginType, wxOrAppleId); - if (loginType.equals(1)) { // 微信登录 handleUserNotPresent(userOptional, "该用户不存在,请重新进行微信授权登录"); @@ -322,6 +383,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)) { @@ -329,10 +392,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); } @@ -374,8 +435,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); // 查询用户已填写的答案 @@ -385,31 +446,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); } @@ -451,15 +505,20 @@ this.updateById(appUser); } + @Autowired + private TokenService tokenService; /** * 获取当前登录用户信息 * * @return 用户信息 - * @see com.xinquan.user.domain.vo.AppUserVO + * @see AppUserVO */ @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