From dd663d0ac783755d889e270eee57ee58630c88c8 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期五, 28 二月 2025 17:46:52 +0800 Subject: [PATCH] 冥想2.0新增代码 --- xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/service/impl/AppUserServiceImpl.java | 266 ++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 191 insertions(+), 75 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 b80cdde..d74ba59 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 @@ -18,6 +18,7 @@ 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.meditation.api.feign.RemoteMeditationService; import com.xinquan.system.api.RemoteUserService; import com.xinquan.system.api.domain.SysUser; import com.xinquan.system.api.feignClient.SysUserClient; @@ -46,6 +47,8 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; +import javax.annotation.Resource; + /** * <p> * 用户信息表 服务实现类 @@ -63,6 +66,8 @@ private final AppUserTreeService appUserTreeService; private final AppUserQuestionService appUserQuestionService; private final TagService tagService; + @Resource + private RemoteMeditationService remoteMeditationService; /** * 获取用户信息 * @@ -76,21 +81,32 @@ Optional<AppUser> one = this.lambdaQuery() .eq(AppUser::getDevice, device) .isNull(AppUser::getCellPhone).oneOpt(); - if (one.isPresent()) { - initUserTree(one.get().getId()); - this.updateById(one.get()); - return one; - } else { - - return this.lambdaQuery() - .eq(Objects.nonNull(dto.getId()), AppUser::getId, dto.getId()) - .eq(com.alibaba.nacos.common.utils.StringUtils.isNotBlank(dto.getAppleId()), AppUser::getAppleId, dto.getAppleId()) - .eq(com.alibaba.nacos.common.utils.StringUtils.isNotBlank(dto.getCellPhone()), AppUser::getCellPhone, - dto.getCellPhone()) - .eq(com.alibaba.nacos.common.utils.StringUtils.isNotBlank(dto.getWxOpenId()), AppUser::getWxOpenId, - dto.getWxOpenId()) - .ne(AppUser::getUserStatus, AppUserStatusEnum.LOGOUT.getCode()).oneOpt(); + Optional<AppUser> appUser = this.lambdaQuery() + .eq(Objects.nonNull(dto.getId()), AppUser::getId, dto.getId()) + .eq(com.alibaba.nacos.common.utils.StringUtils.isNotBlank(dto.getAppleId()), AppUser::getAppleId, dto.getAppleId()) + .eq(com.alibaba.nacos.common.utils.StringUtils.isNotBlank(dto.getCellPhone()), AppUser::getCellPhone, + dto.getCellPhone()) + .eq(com.alibaba.nacos.common.utils.StringUtils.isNotBlank(dto.getWxOpenId()), AppUser::getWxOpenId, + dto.getWxOpenId()) + .ne(AppUser::getUserStatus, AppUserStatusEnum.LOGOUT.getCode()).oneOpt(); + // 如果不存在 + if (!appUser.isPresent()){ + if (one.isPresent()) { + initUserTree(one.get().getId()); + this.updateById(one.get()); + return one; + } else { + return this.lambdaQuery() + .eq(Objects.nonNull(dto.getId()), AppUser::getId, dto.getId()) + .eq(com.alibaba.nacos.common.utils.StringUtils.isNotBlank(dto.getAppleId()), AppUser::getAppleId, dto.getAppleId()) + .eq(com.alibaba.nacos.common.utils.StringUtils.isNotBlank(dto.getCellPhone()), AppUser::getCellPhone, + dto.getCellPhone()) + .eq(com.alibaba.nacos.common.utils.StringUtils.isNotBlank(dto.getWxOpenId()), AppUser::getWxOpenId, + dto.getWxOpenId()) + .ne(AppUser::getUserStatus, AppUserStatusEnum.LOGOUT.getCode()).oneOpt(); + } } + } return this.lambdaQuery() .eq(Objects.nonNull(dto.getId()), AppUser::getId, dto.getId()) @@ -108,6 +124,7 @@ .ne(AppUser::getUserStatus,3).oneOpt(); } + /** * app用户注册 * @param appUserDTO @@ -115,6 +132,31 @@ */ @Override public AppUser registerAppUser(AppUserDTO appUserDTO) { + if (StringUtils.hasLength(appUserDTO.getDevice())){ + AppUser one = this.lambdaQuery().eq(AppUser::getDevice, appUserDTO.getDevice()) + .isNull(AppUser::getCellPhone).one(); + if (one == null){ + 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); + remoteMeditationService.addHomeBackgroundMusicDefault(appUser.getId()); + initUserTree(appUser.getId()); + return appUser; + }else{ + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); + String format = simpleDateFormat.format(new Date()); + // 生成四位随机数字 + String randomCode = String.valueOf((int) ((Math.random() * 9 + 1) * 1000)); + one.setCode("YH"+format+randomCode); + this.updateById(one); + initUserTree(one.getId()); + return one; + } + } AppUser appUser = BeanUtils.copyBean(appUserDTO, AppUser.class); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); String format = simpleDateFormat.format(new Date()); @@ -122,6 +164,8 @@ String randomCode = String.valueOf((int) ((Math.random() * 9 + 1) * 1000)); appUser.setCode("YH"+format+randomCode); this.save(appUser); + remoteMeditationService.addHomeBackgroundMusicDefault(appUser.getId()); + initUserTree(appUser.getId()); return appUser; } @@ -136,7 +180,7 @@ public AppLoginUser wxLogin(AppWXLoginBody body) { AppLoginUser appLoginUser = new AppLoginUser(); Optional<AppUser> optionalAppUser = this.getUserByCondition( - AppUserDTO.builder().wxOpenId(body.getWxOpenId()).build()); + AppUserDTO.builder().wxOpenId(body.getWxOpenId()).device(body.getDevice()).build()); AppUser appUser = new AppUser(); SysUser sysUser = new SysUser(); // 存在账户,查询关联系统用户 @@ -151,6 +195,8 @@ if (appUser.getCellPhone()!=null){ appLoginUser.setBindStatus(DisabledEnum.NO.getCode()); appLoginUser.setCellPhone(appUser.getCellPhone()); + }else{ + appLoginUser.setBindStatus(DisabledEnum.YES.getCode()); } } else { if (org.springframework.util.StringUtils.hasLength(body.getDevice())){ @@ -185,6 +231,7 @@ String nickname = "用户" + IdUtil.fastSimpleUUID().substring(0, 6); sysUser.setNickName(nickname); appUser.setNickname(nickname); + appUser.setDevice(body.getDevice()); appUser.setWxName(body.getNickname()); appUser.setAvatar(body.getHeadImgUrl()); appUser.setGender(3); @@ -197,6 +244,8 @@ appUser.setLevelSettingId(TreeLevelEnum.SEED.getCode()); appLoginUser.setBindStatus(DisabledEnum.YES.getCode()); this.save(appUser); + remoteMeditationService.addHomeBackgroundMusicDefault(appUser.getId()); + // 初始化用户树苗 initUserTree(appUser.getId()); } @@ -227,6 +276,7 @@ appUser.setNickname(nickname); appUser.setWxName(body.getNickname()); appUser.setAvatar(body.getHeadImgUrl()); + appUser.setDevice(body.getDevice()); appUser.setGender(3); appUser.setBalance(BigDecimal.ZERO); appUser.setSanskritFlag(DisabledEnum.NO.getCode()); @@ -237,6 +287,8 @@ appUser.setLevelSettingId(TreeLevelEnum.SEED.getCode()); appLoginUser.setBindStatus(DisabledEnum.YES.getCode()); this.save(appUser); + remoteMeditationService.addHomeBackgroundMusicDefault(appUser.getId()); + // 初始化用户树苗 initUserTree(appUser.getId()); } @@ -256,7 +308,7 @@ public AppLoginUser appleLogin(String appleId,String device) { AppLoginUser appLoginUser = new AppLoginUser(); Optional<AppUser> optionalAppUser = this.getUserByCondition( - AppUserDTO.builder().appleId(appleId).build()); + AppUserDTO.builder().appleId(appleId).device(device).build()); SysUser sysUser = new SysUser(); AppUser appUser = new AppUser(); // 存在账户,查询关联系统用户 @@ -305,17 +357,61 @@ appUser.setBalance(BigDecimal.ZERO); appUser.setIncome(BigDecimal.ZERO); appUser.setTotalEnergyValue(0); + appUser.setDevice(device); appUser.setRegisterTime(LocalDateTime.now()); appUser.setLevelSettingId(TreeLevelEnum.SEED.getCode()); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); String format = simpleDateFormat.format(new Date()); + appLoginUser.setBindStatus(DisabledEnum.YES.getCode()); // 生成四位随机数字 String randomCode = String.valueOf((int) ((Math.random() * 9 + 1) * 1000)); appUser.setCode("YH" + format + randomCode); this.save(appUser); + remoteMeditationService.addHomeBackgroundMusicDefault(appUser.getId()); + // 初始化用户树苗 initUserTree(appUser.getId()); } + }else{ + // 不存在账户,创建账户 + // 注册用户信息 + sysUser = new SysUser(); + String nickname = "用户" + IdUtil.fastSimpleUUID().substring(0, 6); + sysUser.setNickName(nickname); + 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, + SecurityConstants.INNER); + if (registerResult.getCode() == Constants.FAIL) { + throw new ServiceException(registerResult.getMsg()); + } + SysUser sysUserRes = registerResult.getData(); + appUser = new AppUser(); + appUser.setAppleId(appleId); + appUser.setUserId(sysUserRes.getUserId()); + appUser.setNickname(nickname); + 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); + appUser.setIncome(BigDecimal.ZERO); + appUser.setTotalEnergyValue(0); + appUser.setDevice(device); + + appUser.setRegisterTime(LocalDateTime.now()); + appUser.setLevelSettingId(TreeLevelEnum.SEED.getCode()); + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); + String format = simpleDateFormat.format(new Date()); + appLoginUser.setBindStatus(DisabledEnum.YES.getCode()); + // 生成四位随机数字 + String randomCode = String.valueOf((int) ((Math.random() * 9 + 1) * 1000)); + appUser.setCode("YH" + format + randomCode); + this.save(appUser); + remoteMeditationService.addHomeBackgroundMusicDefault(appUser.getId()); + + // 初始化用户树苗 + initUserTree(appUser.getId()); } } appLoginUser.setUserid(sysUser.getUserId()); @@ -336,7 +432,7 @@ public AppLoginUser appCaptchaLogin (AppCaptchaBody body){ AppLoginUser appLoginUser = new AppLoginUser(); Optional<AppUser> optionalAppUser = this.getUserByCondition( - AppUserDTO.builder().cellPhone(body.getCellPhone()).build()); + AppUserDTO.builder().device(body.getDevice()).cellPhone(body.getCellPhone()).build()); AppUser appUser = new AppUser(); SysUser sysUser = new SysUser(); if (optionalAppUser.isPresent()) { @@ -385,6 +481,7 @@ String randomCode = String.valueOf((int) ((Math.random() * 9 + 1) * 1000)); appUser.setCode("YH" + format + randomCode); this.save(appUser); + remoteMeditationService.addHomeBackgroundMusicDefault(appUser.getId()); // 初始化用户树苗 initUserTree(appUser.getId()); } @@ -423,6 +520,8 @@ String randomCode = String.valueOf((int) ((Math.random() * 9 + 1) * 1000)); appUser.setCode("YH" + format + randomCode); this.save(appUser); + remoteMeditationService.addHomeBackgroundMusicDefault(appUser.getId()); + // 初始化用户树苗 initUserTree(appUser.getId()); } @@ -441,6 +540,9 @@ * @param appUserId 用户id */ private void initUserTree(Long appUserId) { + if (appUserTreeService.lambdaQuery().eq(AppUserTree::getSowAgain,2).eq(AppUserTree::getAppUserId,appUserId).one()!=null){ + return; + } AppUserTree appUserTree = new AppUserTree(); appUserTree.setAppUserId(appUserId); appUserTree.setTreeLevelType(TreeLevelEnum.SEED.getCode()); @@ -501,12 +603,14 @@ } } else { Optional<AppUser> userOptional = getAppUserByThirdId(loginType, wxOrAppleId); - if (loginType.equals(1)) { - // 微信登录 - handleUserNotPresent(userOptional, "该用户不存在,请重新进行微信授权登录"); - } else { - // 苹果登录 - handleUserNotPresent(userOptional, "该用户不存在,请重新进行苹果授权登录"); + if (!userOptional.isPresent()) { + if (loginType.equals(1)) { + // 微信登录 + handleUserNotPresent(userOptional, "该用户不存在,请重新进行微信授权登录"); + } else { + // 苹果登录 + handleUserNotPresent(userOptional, "该用户不存在,请重新进行苹果授权登录"); + } } appUser = userOptional.get(); appUser.setCellPhone(body.getCellPhone()); @@ -527,6 +631,7 @@ // 更新用户信息 this.updateById(appUser); AppLoginUser appLoginUser = new AppLoginUser(); + appLoginUser.setAppUserId(appUser.getId()); appLoginUser.setBindStatus(1); appLoginUser.setCellPhone(body.getCellPhone()); appLoginUser.setSysUser(sysUser); @@ -564,41 +669,45 @@ if (tokenService.getLoginUser()==null){ // 获取当前登录用户 if (org.springframework.util.StringUtils.hasLength(dto.getDevice())){ - SysUser sysUser = new SysUser(); - AppUser appUser = new AppUser(); - // 注册用户信息 - sysUser = new SysUser(); - String nickname = "用户" + IdUtil.fastSimpleUUID().substring(0, 6); - sysUser.setNickName(nickname); - 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(dto.getDevice()); - sysUser.setUserType("01"); // app用户 - // 设置默认密码123456 - sysUser.setPassword(SecurityUtils.encryptPassword(Constants.DEFAULT_PASSWORD)); + AppUser one = this.lambdaQuery().eq(AppUser::getDevice, dto.getDevice()) + .isNull(AppUser::getCellPhone).one(); + if (one==null){ + SysUser sysUser = new SysUser(); + AppUser appUser = new AppUser(); + // 注册用户信息 + sysUser = new SysUser(); + String nickname = "用户" + IdUtil.fastSimpleUUID().substring(0, 6); + sysUser.setNickName(nickname); + 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用户 + // 设置默认密码123456 + sysUser.setPassword(SecurityUtils.encryptPassword(Constants.DEFAULT_PASSWORD)); - R<SysUser> registerResult = remoteUserService.registerAppUserInfo(sysUser, - SecurityConstants.INNER); - if (registerResult.getCode() == Constants.FAIL) { - throw new ServiceException(registerResult.getMsg()); - } - SysUser sysUserRes = registerResult.getData(); - appUser = new AppUser(); - appUser.setUserId(sysUserRes.getUserId()); - appUser.setNickname(nickname); - 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); - appUser.setIncome(BigDecimal.ZERO); - 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); + R<SysUser> registerResult = remoteUserService.registerAppUserInfo(sysUser, + SecurityConstants.INNER); + if (registerResult.getCode() == Constants.FAIL) { + throw new ServiceException(registerResult.getMsg()); + } + SysUser sysUserRes = registerResult.getData(); + appUser = new AppUser(); + appUser.setUserId(sysUserRes.getUserId()); + appUser.setNickname(nickname); + 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); + appUser.setIncome(BigDecimal.ZERO); + appUser.setTotalEnergyValue(0); + appUser.setRegisterTime(LocalDateTime.now()); + appUser.setLevelSettingId(TreeLevelEnum.SEED.getCode()); + appUser.setDevice(dto.getDevice()); + 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); Long userId = appUser.getId(); List<AppUserQuestion> appUserQuestionList = BeanUtils.copyList( dto.getUserAnswerOneDTOList(), AppUserQuestion.class); @@ -628,6 +737,26 @@ || appUserQuestion.getAnswer().equals("3")).collect(Collectors.toList()); appUser.setTagId(dto.getTagIds()); this.updateById(appUser); + }else{ + List<AppUserQuestion> appUserQuestionList = BeanUtils.copyList( + dto.getUserAnswerOneDTOList(), AppUserQuestion.class); + // 查询用户已填写的答案 + // 删除之前答案 + appUserQuestionService.lambdaUpdate().eq(AppUserQuestion::getAppUserId,one.getId()).remove(); + + // 根据类型更新答案 + for (AppUserQuestion appUserQuestion : appUserQuestionList) { + appUserQuestion.setAppUserId(one.getId()); + } + appUserQuestionService.saveBatch(appUserQuestionList); + // 筛选答案为是和偶尔有的问题,为用户设置对应的标签 + List<AppUserQuestion> appUserQuestionYesList = appUserQuestionList.stream() + .filter(appUserQuestion -> appUserQuestion.getAnswer().equals("1") + || appUserQuestion.getAnswer().equals("3")).collect(Collectors.toList()); + one.setTagId(dto.getTagIds()); + this.updateById(one); + } + } }else{ Long userId = tokenService.getLoginUser().getUserid(); @@ -635,25 +764,14 @@ List<AppUserQuestion> appUserQuestionList = BeanUtils.copyList( dto.getUserAnswerOneDTOList(), AppUserQuestion.class); // 查询用户已填写的答案 - List<AppUserQuestion> baseAppUserQuestionList = appUserQuestionService.lambdaQuery() - .eq(AppUserQuestion::getAppUserId, appUser.getUserId()) - .list(); - if (CollUtils.isNotEmpty(baseAppUserQuestionList)) { - // 根据类型更新答案 - for (AppUserQuestion appUserQuestion : appUserQuestionList) { + // 删除之前答案 + appUserQuestionService.lambdaUpdate().eq(AppUserQuestion::getAppUserId,userId).remove(); - 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); + appUserQuestion.setAppUserId(userId); } - appUserQuestionService.saveOrUpdateBatch(appUserQuestionList); + appUserQuestionService.saveBatch(appUserQuestionList); // 筛选答案为是和偶尔有的问题,为用户设置对应的标签 List<AppUserQuestion> appUserQuestionYesList = appUserQuestionList.stream() .filter(appUserQuestion -> appUserQuestion.getAnswer().equals("1") @@ -661,8 +779,6 @@ appUser.setTagId(dto.getTagIds()); this.updateById(appUser); } - - } /** -- Gitblit v1.7.1