xinquan-api/xinquan-api-system/src/main/java/com/xinquan/system/api/domain/AppUser.java
@@ -109,6 +109,9 @@ @ApiModelProperty(value = "微信名称") @TableField("wxName") private String wxName; @ApiModelProperty(value = "设备码") @TableField("device") private String device; @ApiModelProperty(value = "会员到期时间") @TableField(value = "vip_expire_time",updateStrategy = FieldStrategy.IGNORED) xinquan-api/xinquan-api-system/src/main/java/com/xinquan/system/api/model/AppCaptchaBody.java
@@ -27,4 +27,6 @@ private String email; @ApiModelProperty(value = "姓名", required = false) private String name; @ApiModelProperty(value = "设备码", required = false) private String device; } xinquan-api/xinquan-api-system/src/main/java/com/xinquan/system/api/model/AppWXLoginBody.java
@@ -41,5 +41,7 @@ */ @ApiModelProperty(value = "用户性别 1男2女3保密") private Integer sex; @ApiModelProperty(value = "设备码") private String device; } xinquan-api/xinquan-api-user/src/main/java/com/xinquan/user/api/domain/dto/AppUserDTO.java
@@ -82,6 +82,8 @@ @ApiModelProperty(value = "冻结原因") private String freezingReason; @ApiModelProperty(value = "设备码") private String device; @ApiModelProperty(value = "冻结操作人") private String freezingOperator; xinquan-api/xinquan-api-user/src/main/java/com/xinquan/user/api/factory/RemoteAppUserFallbackFactory.java
@@ -181,7 +181,7 @@ } @Override public R<AppLoginUser> appleLogin(String appleId, String source) { public R<AppLoginUser> appleLogin(String appleId, String device, String source) { return R.fail("APP用户苹果登录失败。"); } xinquan-api/xinquan-api-user/src/main/java/com/xinquan/user/api/feign/RemoteAppUserService.java
@@ -147,7 +147,7 @@ * @return */ @PostMapping("/inner/app-user/appleLogin") R<AppLoginUser> appleLogin(@RequestParam("appleId") String appleId, R<AppLoginUser> appleLogin(@RequestParam("appleId") String appleId,@RequestParam("appleId") String device, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); /** xinquan-auth/src/main/java/com/xinquan/auth/controller/TokenController.java
@@ -191,11 +191,14 @@ @PostMapping("/app/appleLogin") @ApiImplicitParams({ @ApiImplicitParam(name = "appleId", value = "苹果ID", required = true, dataType = "String", paramType = "query"), @ApiImplicitParam(name = "device", value = "设备码", required = true, dataType = "String", paramType = "query"), } ) public R<AppLoginUser> appleLogin( @RequestParam(value = "appleId", required = true) String appleId) { AppLoginUser appLoginUser = sysLoginService.appleLogin(appleId); @RequestParam(value = "appleId", required = true) String appleId, @RequestParam(value = "device", required = true) String device ) { AppLoginUser appLoginUser = sysLoginService.appleLogin(appleId,device); return R.ok(tokenService.createToken4AppLoginUser(appLoginUser)); } xinquan-auth/src/main/java/com/xinquan/auth/form/AppLoginBody.java
@@ -30,5 +30,7 @@ @ApiModelProperty(value = "用户密码", required = true) @NotBlank(message = "密码不能为空") private String password; @ApiModelProperty(value = "设备码", required = false) private String device; } xinquan-auth/src/main/java/com/xinquan/auth/service/SysLoginService.java
@@ -322,7 +322,7 @@ } // 查询用户信息 AppUser appUser = remoteAppUserService.getUserByCondition( AppUserDTO.builder().cellPhone(body.getCellPhone()).build(), AppUserDTO.builder().cellPhone(body.getCellPhone()).device(body.getDevice()).build(), SecurityConstants.INNER).getData(); if (StringUtils.isNull(appUser)) { recordLogService.recordLogininfor(body.getCellPhone(), Constants.LOGIN_FAIL, @@ -403,8 +403,8 @@ * @param appleId 苹果id * @return */ public AppLoginUser appleLogin(String appleId) { R<AppLoginUser> userResult = remoteAppUserService.appleLogin(appleId, public AppLoginUser appleLogin(String appleId,String device) { R<AppLoginUser> userResult = remoteAppUserService.appleLogin(appleId,device, SecurityConstants.INNER); if (R.FAIL == userResult.getCode()) { throw new ServiceException(userResult.getMsg()); xinquan-modules/xinquan-course/src/main/java/com/xinquan/course/controller/client/ClientCourseController.java
@@ -45,6 +45,7 @@ import io.swagger.annotations.ApiOperation; import java.io.IOException; import java.math.BigDecimal; import java.net.URLEncoder; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; @@ -737,8 +738,11 @@ List<AppUser> data3 = remoteAppUserService.getUserByCourseId(id).getData(); cours.setCount(data3.size()); } clientCourseVO.setList2(courses); clientCourseVO.setList2(courses); if (byId.getChargeType() == 1){ byId.setGeneralPrice(new BigDecimal("0")); } return R.ok(clientCourseVO); } /** @@ -802,6 +806,9 @@ cours.setCount(data1.size()); } clientCourseVO.setList2(courses); if (byId.getChargeType() == 1){ byId.setGeneralPrice(new BigDecimal("0")); } return R.ok(clientCourseVO); } @@ -1043,6 +1050,7 @@ for (Long l : data1) { CourseChapter byId1 = courseChapterService.getById(l); Course byId = courseService.getById(byId1.getCourseId()); if (byId!=null){ CourseVO courseVO = new CourseVO(); BeanUtils.copyProperties(byId, courseVO); List<CourseChapter> list1 = courseChapterService.lambdaQuery().eq(CourseChapter::getCourseId, byId1.getCourseId()).list(); @@ -1056,7 +1064,10 @@ courseVO.setCount(a+b); courseVO.setRealLearnedNum(a+b); courseVO.setVirtualLearnedNum(0); courseVO.setId(byId.getId()); courseVO.setCoverUrl(byId.getCoverUrl()); courseVOS.add(courseVO); } } studyPageVO.setCourseList(courseVOS); return R.ok(studyPageVO); @@ -1082,7 +1093,6 @@ studyPageVO.setFreeCourseList(courses); } studyPageVO.setCourseList(courseVOS); return R.ok(studyPageVO); } xinquan-modules/xinquan-order/src/main/java/com/xinquan/order/controller/client/ClientOrderController.java
@@ -179,11 +179,13 @@ if (order.getAppUserId().equals(userId) && order.getGiveUserId() == null){ OrderCourseVO orderCourseVO = new OrderCourseVO(); BeanUtils.copyProperties(order, orderCourseVO); orderCourseVO.setBusinessId(order.getBusinessId()); res.add(orderCourseVO); } if (order.getGiveUserId()!=null&&order.getGiveUserId().equals(userId)){ OrderCourseVO orderCourseVO = new OrderCourseVO(); BeanUtils.copyProperties(order, orderCourseVO); orderCourseVO.setBusinessId(order.getBusinessId()); res.add(orderCourseVO); } } @@ -203,6 +205,7 @@ break; case 2: OrderCourseVO data = remoteCourseService.getCourseByIdAny(orderCourseVO).getData(); Course data4 = remoteCourseService.getCourseById(data.getBusinessId()).getData(); if (data==null)continue; BeanUtils.copyProperties(data, orderCourseVO); List<CourseChapter> data2 = remoteCourseService.getChapterByCourseId(orderCourseVO.getBusinessId() + "").getData(); @@ -212,6 +215,11 @@ } Integer data3 = remoteCourseService.getCountByCourseId(orderCourseVO.getBusinessId() + "").getData(); orderCourseVO.setCount(data3+temp); if (data4!=null){ orderCourseVO.setCourseTitle(data4.getCourseTitle()); orderCourseVO.setCoverUrl(data4.getCoverUrl()); orderCourseVO.setBusinessId(data4.getId()); } break; } } @@ -726,6 +734,9 @@ .eq(OrderPaymentRecord::getPayOrderNo, string).ne(OrderPaymentRecord::getPaymentStatus, 2).one(); if (two!=null){ Order one = orderService.getById(two.getOrderId()); if (one.getPaymentStatus()==2){ return; } one.setPaymentStatus(2); one.setPaymentTime(LocalDateTime.now()); OrderPaymentRecord one2 = orderPaymentRecordService.lambdaQuery().eq(OrderPaymentRecord::getOrderId, one.getId()) @@ -737,24 +748,35 @@ // 实际支付金额 BigDecimal realPayAmount = one.getRealPayAmount(); // 判断订单所属用户是否有上级 是否需要做分佣处理 AppUser data3 = remoteAppUserService.getAppUserById(one.getAppUserId() + "").getData(); if (data3.getInviteUserId()!=null){ AppUser data9 = remoteAppUserService.getAppUserById(one.getAppUserId() + "").getData(); if (one.getGiveUserId()!=null){ remoteAppUserService.addNotice(one.getGiveUserId() + "", one.getBusinessId() + "", one.getAppUserId() + "", one.getTotalAmount() + ""); } if (data9.getInviteUserId()!=null) { if (one.getOrderFrom() == 1 || one.getOrderFrom() == 2 || one.getOrderFrom() == 3) { // 查询实际支付价格 不包含余额抵扣价格 OrderPaymentRecord one1 = orderPaymentRecordService.lambdaQuery().eq(OrderPaymentRecord::getOrderId, one.getId()) .ne(OrderPaymentRecord::getPaymentType, 4).one(); // 分佣给上级 先远程查询分佣比例 CommissionRule data1 = sysUserClient.getCommission().getData(); if (data1!=null){ if (data1.getProportion()!=null){ BigDecimal bigDecimal = realPayAmount.multiply(data1.getProportion()) BigDecimal bigDecimal = one1.getPayAmount().multiply(data1.getProportion()).divide(new BigDecimal("100")) .setScale(2, BigDecimal.ROUND_HALF_DOWN); // 上级获取的分佣金额 AppUser appUserById = remoteAppUserService.getAppUserById(data3.getInviteUserId() + "").getData(); AppUser appUserById = remoteAppUserService.getAppUserById(data9.getInviteUserId() + "").getData(); // 更新用户余额 remoteAppUserService.updateAppUser( AppUserDTO.builder().balance( appUserById.getBalance().add(bigDecimal)) .build(), SecurityConstants.INNER); // remoteAppUserService.updateAppUser( // AppUserDTO.builder().balance( // appUserById.getBalance().add(bigDecimal)) // .build(), SecurityConstants.INNER); // 新增分佣流水明细 AppUserWalletRecord appUserWalletRecord = new AppUserWalletRecord(); appUserWalletRecord.setAppUserId(data3.getInviteUserId()); appUserWalletRecord.setAppUserId(data9.getInviteUserId()); appUserWalletRecord.setChangeType(1); appUserWalletRecord.setReason("分佣收益"); appUserWalletRecord.setAmount(bigDecimal); @@ -762,8 +784,9 @@ appUserWalletRecord.setOrderId(one.getId()); remoteAppUserService.addBalanceRecord(appUserWalletRecord); one.setCommissionAmount(bigDecimal); one.setCommissionId(data3.getInviteUserId()); one.setCommissionId(data9.getInviteUserId()); orderService.updateById(one); } } } } @@ -772,7 +795,7 @@ OrderPaymentRecord one1 = orderPaymentRecordService.lambdaQuery().eq(OrderPaymentRecord::getOrderId, one.getId()) .eq(OrderPaymentRecord::getPaymentType, 4).one(); AppUserWalletRecord appUserWalletRecord = new AppUserWalletRecord(); appUserWalletRecord.setAppUserId(data3.getInviteUserId()); appUserWalletRecord.setAppUserId(data9.getInviteUserId()); String reason=null; switch (one.getOrderFrom()){ case 1: @@ -797,35 +820,6 @@ // 会员 reason = "购买【"+one.getBuyContent()+"】"; appUserWalletRecord.setChangeType(2); if (data3.getInviteUserId()!=null){ // 分佣给上级 先远程查询分佣比例 CommissionRule data4 = sysUserClient.getCommission().getData(); if (data4!=null){ if (data4.getProportion()!=null){ BigDecimal bigDecimal = realPayAmount.multiply(data4.getProportion()) .divide(new BigDecimal(100),2, BigDecimal.ROUND_DOWN); // 上级获取的分佣金额 AppUser appUserById = remoteAppUserService.getAppUserById(data3.getInviteUserId() + "").getData(); // 更新用户余额 remoteAppUserService.updateAppUser( AppUserDTO.builder().balance( appUserById.getBalance().add(bigDecimal)) .build(), SecurityConstants.INNER); // 新增分佣流水明细 AppUserWalletRecord appUserWalletRecord1 = new AppUserWalletRecord(); appUserWalletRecord1.setAppUserId(data3.getInviteUserId()); appUserWalletRecord1.setChangeType(1); appUserWalletRecord1.setReason("分佣收益"); appUserWalletRecord1.setAmount(bigDecimal); appUserWalletRecord1.setChildAppUserId(one.getAppUserId()); appUserWalletRecord1.setOrderId(one.getId()); remoteAppUserService.addBalanceRecord(appUserWalletRecord1); one.setCommissionAmount(bigDecimal); one.setCommissionId(data3.getInviteUserId()); orderService.updateById(one); } } } break; case 4: // 充值 @@ -838,6 +832,41 @@ appUserWalletRecord.setChildAppUserId(one.getAppUserId()); appUserWalletRecord.setOrderId(one.getId()); remoteAppUserService.addBalanceRecord(appUserWalletRecord); }else{ switch (one.getOrderFrom()){ case 2: Course data2 = remoteCourseService.getCourseById(one.getBusinessId()).getData(); // 增加用户与课程的关系表 if (one.getGiveUserId()!=null){ remoteAppUserService.addAppUserCourse(one.getBusinessId(),one.getGiveUserId(),one.getId(),1); }else{ // 自己购买 remoteAppUserService.addAppUserCourse(one.getBusinessId(),one.getAppUserId(),one.getId(),2); } break; case 3: // 会员 if (one.getBuyContent().contains("月")){ remoteAppUserService.addVipExpireTime(one.getAppUserId(),1); }else if (one.getBuyContent().contains("季")){ remoteAppUserService.addVipExpireTime(one.getAppUserId(),2); }else if (one.getBuyContent().contains("年")){ remoteAppUserService.addVipExpireTime(one.getAppUserId(),3); } break; case 4: remoteAppUserService.addBalance(one.getAppUserId(),one.getRealPayAmount()); AppUserWalletRecord appUserWalletRecord = new AppUserWalletRecord(); appUserWalletRecord.setAppUserId(one.getAppUserId()); appUserWalletRecord.setChangeType(1); appUserWalletRecord.setReason("充值"); appUserWalletRecord.setAmount(one.getRealPayAmount()); appUserWalletRecord.setChildAppUserId(one.getAppUserId()); appUserWalletRecord.setOrderId(one.getId()); remoteAppUserService.addBalanceRecord(appUserWalletRecord); break; } } PrintWriter out = response.getWriter(); out.write("succeeded"); xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/controller/client/ClientAppUserController.java
@@ -1330,7 +1330,7 @@ consecutiveDays++; currentDate = currentDate.minusDays(1); } appUserInfoVO.setToday(consecutiveDays); appUserInfoVO.setContinuity(consecutiveDays); AppUserTree list1 = appUserTreeService.lambdaQuery().eq(AppUserTree::getAppUserId, userId) .eq(AppUserTree::getSowAgain,2) .one(); @@ -1408,7 +1408,6 @@ currentDate = currentDate.minusDays(1); } appUser.setContinuity(consecutiveDays); appUser.setToday(consecutiveDays); // 根据等级查询疗愈名称和图标 UserLevelSetting data = remoteBannerService.getIconNameByLevel(level).getData(); appUser.setLevelName(data.getLevelName()); @@ -1610,11 +1609,7 @@ @PostMapping("/saveUserAnswers") @ApiOperation(value = "保存计划引导页用户的答案", tags = {"用户端-计划引导相关接口"}) public R<?> saveUserAnswers(@Validated @RequestBody UserAnswerDTO dto) { LoginUser loginUser = tokenService.getLoginUser(); if (loginUser==null){ return R.tokenError("登录失效"); } Long userId = loginUser.getUserid(); appUserService.saveUserAnswers(dto); return R.ok(); } xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/controller/inner/InnerAppUserController.java
@@ -75,8 +75,8 @@ */ @InnerAuth @PostMapping("/appleLogin") R<AppLoginUser> appleLogin(@RequestParam("appleId") String appleId) { return R.ok(appUserService.appleLogin(appleId)); R<AppLoginUser> appleLogin(@RequestParam("appleId") String appleId,@RequestParam("device") String device) { return R.ok(appUserService.appleLogin(appleId,device)); } /** xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/service/AppUserService.java
@@ -56,7 +56,7 @@ * @param source * @return */ AppLoginUser appleLogin(String appleId); AppLoginUser appleLogin(String appleId,String device); /** * 验证码登录 xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/service/impl/AppUserServiceImpl.java
@@ -2,8 +2,8 @@ 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.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.xinquan.common.core.constant.Constants; @@ -44,6 +44,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; /** * <p> @@ -70,20 +71,37 @@ */ @Override public Optional<AppUser> getUserByCondition(AppUserDTO dto) { String device = dto.getDevice(); if (StringUtils.hasLength(dto.getDevice())) { 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(StringUtils.isNotBlank(dto.getAppleId()), AppUser::getAppleId, dto.getAppleId()) .eq(StringUtils.isNotBlank(dto.getCellPhone()), AppUser::getCellPhone, .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(StringUtils.isNotBlank(dto.getWxOpenId()), AppUser::getWxOpenId, .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()) .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(); } public static void main(String[] args) { String randomCode = String.valueOf((int) ((Math.random() * 9 + 1) * 1000)); System.err.println(randomCode); } /** * app用户注册 * @param appUserDTO @@ -113,8 +131,8 @@ AppLoginUser appLoginUser = new AppLoginUser(); Optional<AppUser> optionalAppUser = this.getUserByCondition( AppUserDTO.builder().wxOpenId(body.getWxOpenId()).build()); AppUser appUser; SysUser sysUser; AppUser appUser = new AppUser(); SysUser sysUser = new SysUser(); // 存在账户,查询关联系统用户 if (optionalAppUser.isPresent()) { appUser = optionalAppUser.get(); @@ -127,6 +145,54 @@ if (appUser.getCellPhone()!=null){ appLoginUser.setBindStatus(DisabledEnum.NO.getCode()); appLoginUser.setCellPhone(appUser.getCellPhone()); } } else { if (org.springframework.util.StringUtils.hasLength(body.getDevice())){ AppUser one = this.getOne(new LambdaQueryWrapper<>(AppUser.class) .eq(AppUser::getDevice, body.getDevice()) .isNull(AppUser::getCellPhone)); if (one!=null){ initUserTree(appUser.getId()); appUser = one; }else{ // 不存在账户,创建账户 // 注册用户信息 sysUser = new SysUser(); sysUser.setNickName(body.getNickname()); sysUser.setAvatar(body.getHeadImgUrl()); sysUser.setUserName(body.getNickname()); 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.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()); String nickname = "用户" + IdUtil.fastSimpleUUID().substring(0, 6); sysUser.setNickName(nickname); appUser.setNickname(nickname); appUser.setWxName(body.getNickname()); appUser.setAvatar(body.getHeadImgUrl()); appUser.setGender(3); 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()); appLoginUser.setBindStatus(DisabledEnum.YES.getCode()); this.save(appUser); // 初始化用户树苗 initUserTree(appUser.getId()); } } else { // 不存在账户,创建账户 @@ -168,6 +234,7 @@ // 初始化用户树苗 initUserTree(appUser.getId()); } } appLoginUser.setUserid(sysUser.getUserId()); appLoginUser.setUsername(appUser.getNickname()); appLoginUser.setAppUserId(appUser.getId()); @@ -180,12 +247,12 @@ } @Override public AppLoginUser appleLogin(String appleId) { public AppLoginUser appleLogin(String appleId,String device) { AppLoginUser appLoginUser = new AppLoginUser(); Optional<AppUser> optionalAppUser = this.getUserByCondition( AppUserDTO.builder().appleId(appleId).build()); SysUser sysUser; AppUser appUser; SysUser sysUser = new SysUser(); AppUser appUser = new AppUser(); // 存在账户,查询关联系统用户 if (optionalAppUser.isPresent()) { appUser = optionalAppUser.get(); @@ -197,6 +264,16 @@ appLoginUser.setBindStatus(DisabledEnum.NO.getCode()); appLoginUser.setCellPhone(appUser.getCellPhone()); } } else { if (org.springframework.util.StringUtils.hasLength(device)) { AppUser one = this.getOne(new LambdaQueryWrapper<>(AppUser.class) .eq(AppUser::getDevice, device) .isNull(AppUser::getCellPhone)); if (one != null) { initUserTree(one.getId()); appUser.setAppleId(appleId); appUser = one; this.updateById(appUser); } else { // 不存在账户,创建账户 // 注册用户信息 @@ -233,14 +310,12 @@ // 初始化用户树苗 initUserTree(appUser.getId()); } } } appLoginUser.setUserid(sysUser.getUserId()); 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()); // } return appLoginUser; } @@ -256,11 +331,19 @@ AppLoginUser appLoginUser = new AppLoginUser(); Optional<AppUser> optionalAppUser = this.getUserByCondition( AppUserDTO.builder().cellPhone(body.getCellPhone()).build()); AppUser appUser; SysUser sysUser; AppUser appUser = new AppUser(); SysUser sysUser = new SysUser(); if (optionalAppUser.isPresent()) { appUser = optionalAppUser.get(); sysUser = sysUserClient.getSysUser(appUser.getUserId()).getData(); } else { if (org.springframework.util.StringUtils.hasLength(body.getDevice())) { AppUser one = this.getOne(new LambdaQueryWrapper<>(AppUser.class) .eq(AppUser::getDevice, body.getDevice()) .isNull(AppUser::getCellPhone)); if (one != null) { initUserTree(appUser.getId()); appUser = one; } else { // 注册用户信息 sysUser = new SysUser(); @@ -298,7 +381,45 @@ this.save(appUser); // 初始化用户树苗 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(body.getCellPhone()); 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.setCellPhone(body.getCellPhone()); 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); // 初始化用户树苗 initUserTree(appUser.getId()); } } appLoginUser.setUserid(sysUser.getUserId()); appLoginUser.setUsername(appUser.getNickname()); @@ -434,7 +555,75 @@ */ @Override public void saveUserAnswers(UserAnswerDTO dto) { 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)); 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); Long userId = appUser.getId(); 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) { 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()); appUser.setTagId(dto.getTagIds()); this.updateById(appUser); } }else{ Long userId = tokenService.getLoginUser().getUserid(); AppUser appUser = this.getById(userId); List<AppUserQuestion> appUserQuestionList = BeanUtils.copyList( @@ -467,6 +656,9 @@ this.updateById(appUser); } } /** * 获取AppUser *