| | |
| | | import com.xinquan.course.api.domain.CourseCategory; |
| | | import com.xinquan.course.api.domain.CourseDTO; |
| | | import com.xinquan.course.api.domain.OrderCourseVO; |
| | | import com.xinquan.meditation.api.domain.Meditation; |
| | | import com.xinquan.order.api.feign.RemoteOrderService; |
| | | import com.xinquan.system.api.RemoteBannerService; |
| | | import com.xinquan.system.api.RemoteUserService; |
| | |
| | | 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; |
| | | @Resource |
| | | private AppUserBlackService appUserBlackService; |
| | | |
| | | /** |
| | | * 远程调用 查询当前登陆人拉黑列表 |
| | | * @param appUserId |
| | | */ |
| | | @PostMapping("/getUserBlackList/{appUserId}") |
| | | public R<List<Long>> getUserBlackList(@PathVariable("appUserId") Long appUserId){ |
| | | List<Long> collect = appUserBlackService.lambdaQuery().eq(AppUserBlack::getAppUserId, appUserId).list() |
| | | .stream().map(AppUserBlack::getBlackId).collect(Collectors.toList()); |
| | | return R.ok(collect); |
| | | } |
| | | @PostMapping("/blackUser") |
| | | @ApiOperation(value = "取消拉黑功能", tags = "IOS拉黑列表--用于上架") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "被拉黑用户id", name = "appUserId", required = true, dataType = "Long"), |
| | | }) |
| | | public R blackUser(Long appUserId) { |
| | | LoginUser loginUser = tokenService.getLoginUser(); |
| | | if (loginUser==null){ |
| | | return R.tokenError("登录失效"); |
| | | } |
| | | AppUserBlack one = appUserBlackService.lambdaQuery().eq(AppUserBlack::getAppUserId, loginUser.getAppUserId()) |
| | | .eq(AppUserBlack::getBlackId, appUserId).one(); |
| | | if (one==null){ |
| | | // 拉黑 |
| | | AppUserBlack appUserBlack = new AppUserBlack(); |
| | | appUserBlack.setAppUserId(loginUser.getAppUserId()); |
| | | appUserBlack.setBlackId(appUserId); |
| | | appUserBlackService.save(appUserBlack); |
| | | }else { |
| | | // 取消拉黑 |
| | | appUserBlackService.removeById(one.getId()); |
| | | } |
| | | return R.ok(); |
| | | } |
| | | @GetMapping("/blackList") |
| | | @ApiOperation(value = "IOS拉黑列表", tags = "IOS拉黑列表--用于上架") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "分页参数,当前页码", name = "pageCurr", required = true, dataType = "Integer"), |
| | | @ApiImplicitParam(value = "分页参数,每页数量", name = "pageSize", required = true, dataType = "Integer") |
| | | }) |
| | | public R<PageDTO<AppUser>> blackList(Integer pageCurr, Integer pageSize) { |
| | | LoginUser loginUser = tokenService.getLoginUser(); |
| | | if (loginUser==null){ |
| | | return R.tokenError("登录失效"); |
| | | } |
| | | List<Long> collect = appUserBlackService.lambdaQuery().eq(AppUserBlack::getAppUserId, loginUser.getAppUserId()).list() |
| | | .stream().map(AppUserBlack::getBlackId).collect(Collectors.toList()); |
| | | if (collect.isEmpty()){ |
| | | collect.add(-1L); |
| | | } |
| | | Page<AppUser> page = appUserService.lambdaQuery().in(AppUser::getId, collect).page(new Page<>(pageCurr, pageSize)); |
| | | if (CollUtils.isEmpty(page.getRecords())){ |
| | | PageDTO<AppUser> empty = PageDTO.empty(page); |
| | | return R.ok(empty); |
| | | } |
| | | return R.ok(PageDTO.of(page, AppUser.class)); |
| | | } |
| | | |
| | | @PostMapping("/subVipExpireTime/{appUserId}/{type}") |
| | | public void subVipExpireTime(@PathVariable("appUserId") Long appUserId,@PathVariable("type") Integer type){ |
| | | AppUser byId = appUserService.getById(appUserId); |
| | | switch (type){ |
| | | case 1: |
| | | LocalDateTime localDateTime = byId.getVipExpireTime().minusDays(30); |
| | | byId.setVipExpireTime(localDateTime); |
| | | break; |
| | | case 2: |
| | | LocalDateTime localDateTime1 = byId.getVipExpireTime().minusDays(90); |
| | | byId.setVipExpireTime(localDateTime1); |
| | | break; |
| | | case 3: |
| | | LocalDateTime localDateTime2 = byId.getVipExpireTime().minusDays(365); |
| | | byId.setVipExpireTime(localDateTime2); |
| | | break; |
| | | } |
| | | appUserService.updateById(byId); |
| | | } |
| | | @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); |
| | | String cacheList = redisService.getCacheObject(byId.getId() + ""); |
| | | redisService.deleteObject(cacheList); |
| | | |
| | | return R.ok(); |
| | | } |
| | | @GetMapping("/detail") |
| | |
| | | } |
| | | } |
| | | byId.setTotalEnergyValue(byId.getTotalEnergyValue()+energyValue); |
| | | byId.setEnergyValue(byId.getEnergyValue()+energyValue); |
| | | appUserService.updateById(byId); |
| | | AppUserEnergyRecord appUserEnergyRecord = new AppUserEnergyRecord(); |
| | | appUserEnergyRecord.setAppUserId(byId.getId()); |
| | |
| | | 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)); |
| | | } |
| | |
| | | objectPage.setTotal(res.size()); |
| | | return R.ok(PageDTO.of(objectPage, InviteRankListVO.class)) ; |
| | | } |
| | | @PostMapping("/inviteRankListShareInfo") |
| | | @ApiOperation(value = "爱心助力榜单详情-分页", tags = {"H5分享"}) |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "id", name = "id", required = true, dataType = "Long"), |
| | | @ApiImplicitParam(value = "分页参数,当前页码", name = "pageCurr", required = true, dataType = "Integer"), |
| | | @ApiImplicitParam(value = "分页参数,每页数量", name = "pageSize", required = true, dataType = "Integer") |
| | | }) |
| | | public R<PageDTO<InviteRankListVO>> inviteRankListShareInfo( |
| | | @RequestParam(value = "id") Long id, |
| | | @RequestParam(value = "pageCurr", defaultValue = "1") Integer pageCurr, |
| | | @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) { |
| | | LambdaQueryWrapper<AppUser> appUserLambdaQueryWrapper = new LambdaQueryWrapper<>(); |
| | | appUserLambdaQueryWrapper.eq(AppUser::getInviteUserId,id); |
| | | appUserLambdaQueryWrapper.ne(AppUser::getUserStatus,3); |
| | | Page<AppUser> page = appUserService.page(new Page<>(pageCurr, pageSize), appUserLambdaQueryWrapper); |
| | | return R.ok(PageDTO.of(page, InviteRankListVO.class)) ; |
| | | } |
| | | @PostMapping("/getUserInfo") |
| | | @ApiOperation(value = "获取用户信息", tags = {"个人中心"}) |
| | | public R<AppUserInfoVO> getUserInfo() { |
| | |
| | | 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(); |
| | | } |