| | |
| | | import java.time.temporal.TemporalAdjusters; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | import java.util.stream.Stream; |
| | | |
| | | import io.swagger.models.auth.In; |
| | | import lombok.RequiredArgsConstructor; |
| | |
| | | private RemoteUserService remoteUserService; |
| | | @Resource |
| | | private NoticeRecordService noticeRecordService; |
| | | @ApiOperation(value = "会员临期", tags = "会员临期") |
| | | @PostMapping("/testVip") |
| | | public void testVip() { |
| | | LocalDateTime now = LocalDateTime.now(); |
| | | List<AppUser> list = appUserService.lambdaQuery().ne(AppUser::getUserStatus, 3).list(); |
| | | for (AppUser appUser : list) { |
| | | if (appUser.getVipExpireTime()!=null && appUser.getVipExpireTime().isAfter(now)){ |
| | | // 计算两个now和time的天数差 |
| | | long between = ChronoUnit.DAYS.between(now,appUser.getVipExpireTime()); |
| | | if (between<=7 &&between>=0){ |
| | | NoticeRecord noticeRecord = new NoticeRecord(); |
| | | noticeRecord.setAppUserId(appUser.getId()); |
| | | noticeRecord.setReadStatus(1); |
| | | noticeRecord.setNoticeType(1); |
| | | noticeRecord.setTitle("【会员临期通知】"); |
| | | noticeRecord.setContent("尊敬的泉疗愈会员你好,你的会员即将在" |
| | | +appUser.getVipExpireTime().toLocalDate()+"到期,到期后将不再享受会员权益,请及时续费"); |
| | | noticeRecordService.save(noticeRecord); |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | @GetMapping("/deleteBalance/{id}/{amount}") |
| | | public R deleteBalance(@PathVariable("id")String id,@PathVariable("amount")String amount) { |
| | | AppUser byId = appUserService.getById(id); |
| | | if (byId!=null){ |
| | | BigDecimal subtract = byId.getBalance().subtract(new BigDecimal(amount)); |
| | | if (subtract.compareTo(BigDecimal.ZERO)<0){ |
| | | byId.setBalance(BigDecimal.ZERO); |
| | | } |
| | | } |
| | | return R.ok(); |
| | | } |
| | | @GetMapping("/testNotice") |
| | | @ApiOperation(value = "测试通知", tags = "测试通知") |
| | | public R testNotice() { |
| | |
| | | noticeRecord.setReadStatus(1); |
| | | noticeRecord.setNoticeType(1); |
| | | noticeRecord.setTitle("【会员临期通知】"); |
| | | noticeRecord.setContent("尊敬的心泉疗愈会员你好,你的会员即将在" |
| | | noticeRecord.setContent("尊敬的泉疗愈会员你好,你的会员即将在" |
| | | +appUser.getVipExpireTime().toLocalDate()+"到期,到期后将不再享受会员权益,请及时续费"); |
| | | noticeRecordService.save(noticeRecord); |
| | | } |
| | |
| | | byId.setFreezingTime(LocalDateTime.now()); |
| | | byId.setFreezingReason(dto.getFreezingReason()); |
| | | byId.setUserStatus(2); |
| | | byId.setFreezingOperator(tokenService.getLoginUser().getUserid()+""); |
| | | Long userid = tokenService.getLoginUser().getUserid(); |
| | | SysUser data = remoteUserService.getSysUserById(userid + "").getData(); |
| | | byId.setFreezingOperator(data.getNickName()+"("+data.getUserName()+")"); |
| | | appUserService.updateById(byId); |
| | | // 将被冻结的用户token清除 |
| | | return R.ok(); |
| | | } |
| | | @GetMapping("/detail") |
| | |
| | | String endTime = null; |
| | | if (org.springframework.util.StringUtils.hasLength(dto.getTime())){ |
| | | String[] split = dto.getTime().split(" - "); |
| | | startTime = split[0]+"00:00:00"; |
| | | endTime = split[1]+"23:59:59"; |
| | | startTime = split[0]+" 00:00:00"; |
| | | endTime = split[1]+" 23:59:59"; |
| | | } |
| | | String userId = dto.getUid(); |
| | | LambdaQueryWrapper<AppUser> appUserWalletRecordLambdaQueryWrapper = new LambdaQueryWrapper<>(); |
| | |
| | | String endTime = null; |
| | | if (org.springframework.util.StringUtils.hasLength(courseDTO.getVipExpireTime())){ |
| | | String[] split = courseDTO.getVipExpireTime().split(" - "); |
| | | startTime = split[0]+"00:00:00"; |
| | | endTime = split[1]+"23:59:59"; |
| | | startTime = split[0]+" 00:00:00"; |
| | | endTime = split[1]+" 23:59:59"; |
| | | } |
| | | String startTime1 = null; |
| | | String endTime1 = null; |
| | | if (org.springframework.util.StringUtils.hasLength(courseDTO.getRegisterTime())){ |
| | | String[] split = courseDTO.getRegisterTime().split(" - "); |
| | | startTime1 = split[0]+"00:00:00"; |
| | | endTime1 = split[1]+"23:59:59"; |
| | | startTime1 = split[0]+" 00:00:00"; |
| | | endTime1 = split[1]+" 23:59:59"; |
| | | } |
| | | List<Long> longs = new ArrayList<>(); |
| | | LambdaQueryWrapper<AppUser> courseLambdaQueryWrapper = new LambdaQueryWrapper<>(); |
| | |
| | | List<AppUser> list = appUserService.lambdaQuery().list(); |
| | | List<AppUser> appUsers = new ArrayList<>(); |
| | | for (AppUser appUser : list) { |
| | | List<AppUserTree> list1 = appUserTreeService.lambdaQuery().eq(AppUserTree::getAppUserId, appUser.getId()) |
| | | .list(); |
| | | // 查询用户等级最高的那颗树苗 |
| | | AppUserTree tree = list1.stream().max((o1, o2) -> { |
| | | if (o1.getTreeLevelType() > o2.getTreeLevelType()) { |
| | | return 1; |
| | | } else if (o1.getTreeLevelType() < o2.getTreeLevelType()) { |
| | | return -1; |
| | | } else { |
| | | return 0; |
| | | } |
| | | }).orElse(null); |
| | | AppUserTree list1 = appUserTreeService.lambdaQuery().eq(AppUserTree::getAppUserId, appUser.getId()) |
| | | .eq(AppUserTree::getSowAgain,2) |
| | | .one(); |
| | | // 查询疗愈等级 名称 图标 |
| | | int level = 1; |
| | | if (tree != null){ |
| | | level = tree.getTreeLevelType(); |
| | | } |
| | | int level = list1.getTreeLevelType(); |
| | | if (list2.contains(level+"")){ |
| | | appUsers.add(appUser); |
| | | } |
| | |
| | | } |
| | | courseLambdaQueryWrapper.in(AppUser::getId, collect); |
| | | } |
| | | courseLambdaQueryWrapper.isNotNull(AppUser::getCellPhone); |
| | | List<AppUser> page = appUserService.list(courseLambdaQueryWrapper); |
| | | List<UserExport> userExports = new ArrayList<>(); |
| | | for (AppUser record : page) { |
| | |
| | | }else{ |
| | | record.setIsVip(1); |
| | | } |
| | | List<AppUserTree> list1 = appUserTreeService.lambdaQuery().eq(AppUserTree::getAppUserId, record.getId()) |
| | | .list(); |
| | | // 查询用户等级最高的那颗树苗 |
| | | AppUserTree tree = list1.stream().max((o1, o2) -> { |
| | | if (o1.getTreeLevelType() > o2.getTreeLevelType()) { |
| | | return 1; |
| | | } else if (o1.getTreeLevelType() < o2.getTreeLevelType()) { |
| | | return -1; |
| | | } else { |
| | | return 0; |
| | | } |
| | | }).orElse(null); |
| | | AppUserTree list1 = appUserTreeService.lambdaQuery().eq(AppUserTree::getAppUserId, record.getId()) |
| | | .eq(AppUserTree::getSowAgain,2) |
| | | .one(); |
| | | // 查询疗愈等级 名称 图标 |
| | | int level = 1; |
| | | if (tree != null){ |
| | | level = tree.getTreeLevelType(); |
| | | } |
| | | int level = list1.getTreeLevelType(); |
| | | // 根据等级查询疗愈名称和图标 |
| | | UserLevelSetting data = remoteBannerService.getIconNameByLevel(level).getData(); |
| | | record.setLevel(level); |
| | |
| | | userExport.setUserStatus(record.getUserStatus()+""); |
| | | List<AppUserQuestion> list = appUserQuestionService.lambdaQuery() |
| | | .eq(AppUserQuestion::getAppUserId, record.getId()).list(); |
| | | userExport.setType1(""); |
| | | userExport.setType2(""); |
| | | userExport.setType3(""); |
| | | userExport.setType4(""); |
| | | userExport.setType5(""); |
| | | userExport.setType6(""); |
| | | userExport.setType6(""); |
| | | for (AppUserQuestion appUserQuestion : list) { |
| | | switch (appUserQuestion.getType()){ |
| | | case 1: |
| | |
| | | break; |
| | | } |
| | | } |
| | | List<Integer> collect = appUserTagService.lambdaQuery() |
| | | .eq(AppUserTag::getAppUserId, record.getId()).list().stream() |
| | | .map(AppUserTag::getTagId) |
| | | .collect(Collectors.toList()); |
| | | if (collect.isEmpty()){ |
| | | collect.add(-1); |
| | | List<String> collect = new ArrayList<>(); |
| | | if (org.springframework.util.StringUtils.hasLength(record.getTagId())) { |
| | | collect = tagService.lambdaQuery() |
| | | .in(Tag::getId, Arrays.stream(record.getTagId().split(",")).map(Long::parseLong).collect(Collectors.toList())).list().stream() |
| | | .map(Tag::getTagName).collect(Collectors.toList()); |
| | | } |
| | | List<Tag> list2 = tagService.lambdaQuery().in(Tag::getId, collect).list(); |
| | | StringBuilder stringBuilder = new StringBuilder(); |
| | | for (Tag tag : list2) { |
| | | stringBuilder.append(tag.getTagName()).append(";"); |
| | | for (String tag : collect) { |
| | | stringBuilder.append(tag).append(";"); |
| | | } |
| | | userExport.setType7(stringBuilder+""); |
| | | userExport.setSanskritFlag(record.getSanskritFlag()+""); |
| | |
| | | String endTime = null; |
| | | if (org.springframework.util.StringUtils.hasLength(courseDTO.getVipExpireTime())){ |
| | | String[] split = courseDTO.getVipExpireTime().split(" - "); |
| | | startTime = split[0]+"00:00:00"; |
| | | endTime = split[1]+"23:59:59"; |
| | | startTime = split[0]+" 00:00:00"; |
| | | endTime = split[1]+" 23:59:59"; |
| | | } |
| | | String startTime1 = null; |
| | | String endTime1 = null; |
| | | if (org.springframework.util.StringUtils.hasLength(courseDTO.getRegisterTime())){ |
| | | String[] split = courseDTO.getRegisterTime().split(" - "); |
| | | startTime1 = split[0]+"00:00:00"; |
| | | endTime1 = split[1]+"23:59:59"; |
| | | startTime1 = split[0]+" 00:00:00"; |
| | | endTime1 = split[1]+" 23:59:59"; |
| | | } |
| | | List<Long> longs = new ArrayList<>(); |
| | | LambdaQueryWrapper<AppUser> courseLambdaQueryWrapper = new LambdaQueryWrapper<>(); |
| | |
| | | } |
| | | courseLambdaQueryWrapper.in(AppUser::getId, collect); |
| | | } |
| | | courseLambdaQueryWrapper.isNotNull(AppUser::getCellPhone); |
| | | Page<AppUser> page = appUserService.page(new Page<>(courseDTO.getPageCurr(), courseDTO.getPageSize()), courseLambdaQueryWrapper); |
| | | if (CollUtils.isEmpty(page.getRecords())) { |
| | | return R.ok(PageDTO.empty(page)); |
| | |
| | | throw new ServiceException("验证码不正确"); |
| | | } |
| | | AppUser byId = appUserService.getById(userId); |
| | | |
| | | AppUser one = appUserService.lambdaQuery().eq(AppUser::getCellPhone, phone) |
| | | .ne(AppUser::getId, userId) |
| | | .ne(AppUser::getUserStatus, 3).one(); |
| | | if (one!=null){ |
| | | return R.fail("当前手机号已被绑定"); |
| | | } |
| | | byId.setCellPhone(phone); |
| | | boolean b = appUserService.updateById(byId); |
| | | return R.ok(); |
| | |
| | | page.sort((o1, o2) -> o2.getMoney().compareTo(o1.getMoney())); |
| | | |
| | | List<AppUser> testing = testing(page.size(), pageCurr, pageSize, page); |
| | | objectPage.setTotal(testing.size()); |
| | | objectPage.setTotal(page.size()); |
| | | objectPage.setRecords(testing); |
| | | return R.ok(PageDTO.of(objectPage, InviteRankListVO.class)); |
| | | } |
| | |
| | | consecutiveDays++; |
| | | currentDate = currentDate.minusDays(1); |
| | | } |
| | | appUserInfoVO.setToday(consecutiveDays); |
| | | appUserInfoVO.setContinuity(consecutiveDays); |
| | | AppUserTree list1 = appUserTreeService.lambdaQuery().eq(AppUserTree::getAppUserId, userId) |
| | | .eq(AppUserTree::getSowAgain,2) |
| | | .one(); |
| | |
| | | currentDate = currentDate.minusDays(1); |
| | | } |
| | | appUser.setContinuity(consecutiveDays); |
| | | appUser.setToday(consecutiveDays); |
| | | // 根据等级查询疗愈名称和图标 |
| | | UserLevelSetting data = remoteBannerService.getIconNameByLevel(level).getData(); |
| | | appUser.setLevelName(data.getLevelName()); |
| | |
| | | @PostMapping("/getUserByPhone") |
| | | @ApiOperation(value = "根据用户手机号查询用户信息") |
| | | public R<AppUserDetailVO> getCurrentUser(String phone) { |
| | | LoginUser loginUser = tokenService.getLoginUser(); |
| | | if (loginUser==null){ |
| | | return R.tokenError("登录失效"); |
| | | } |
| | | |
| | | AppUser one = appUserService.lambdaQuery().eq(AppUser::getCellPhone, phone) |
| | | .ne(AppUser::getUserStatus,3).one(); |
| | | if (one!=null){ |
| | | if (one.getId().equals(loginUser.getUserid())){ |
| | | return R.giveError("不能赠送给自己"); |
| | | } |
| | | AppUserDetailVO appUserDetailVO = new AppUserDetailVO(); |
| | | appUserDetailVO.setId(one.getId()); |
| | | appUserDetailVO.setCellPhone(one.getCellPhone()); |
| | |
| | | @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(); |
| | | } |