From 1d44c20eabc99e9970fb58d4dbd3a94d77e83e39 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期五, 07 三月 2025 18:35:50 +0800 Subject: [PATCH] 冥想 --- xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/controller/client/ClientAppUserController.java | 492 ++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 348 insertions(+), 144 deletions(-) diff --git a/xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/controller/client/ClientAppUserController.java b/xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/controller/client/ClientAppUserController.java index 2450289..0a08aca 100644 --- a/xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/controller/client/ClientAppUserController.java +++ b/xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/controller/client/ClientAppUserController.java @@ -6,24 +6,32 @@ import com.alibaba.nacos.common.utils.StringUtils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.xinquan.common.core.constant.CacheConstants; import com.xinquan.common.core.domain.R; +import com.xinquan.common.core.exception.ServiceException; import com.xinquan.common.core.utils.WebUtils; import com.xinquan.common.core.utils.page.BeanUtils; import com.xinquan.common.core.utils.page.CollUtils; import com.xinquan.common.core.utils.page.PageDTO; import com.xinquan.common.core.web.domain.BaseModel; +import com.xinquan.common.log.annotation.Log; +import com.xinquan.common.log.enums.BusinessType; +import com.xinquan.common.redis.service.RedisService; import com.xinquan.common.security.service.TokenService; import com.xinquan.common.security.utils.SecurityUtils; import com.xinquan.course.api.domain.Course; 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 com.xinquan.system.api.domain.*; import com.xinquan.system.api.domain.vo.*; +import com.xinquan.system.api.feignClient.SysUserClient; import com.xinquan.system.api.model.LoginUser; import com.xinquan.user.api.domain.dto.AppUserManagementDTO; import com.xinquan.user.api.domain.dto.OrderListDTO; @@ -53,9 +61,11 @@ import java.time.LocalDateTime; import java.time.Month; import java.time.format.DateTimeFormatter; +import java.time.temporal.ChronoUnit; 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; @@ -114,6 +124,165 @@ private RemoteOrderService remoteOrderService; @Resource 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() { + 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 = Math.abs(ChronoUnit.DAYS.between(appUser.getVipExpireTime(), now)); + if (between<=7){ + NoticeRecord noticeRecord = new NoticeRecord(); + noticeRecord.setAppUserId(appUser.getId()); + noticeRecord.setReadStatus(1); + noticeRecord.setNoticeType(1); + noticeRecord.setTitle("【会员临期通知】"); + noticeRecord.setContent("尊敬的泉疗愈会员你好,你的会员即将在" + +appUser.getVipExpireTime().toLocalDate()+"到期,到期后将不再享受会员权益,请及时续费"); + noticeRecordService.save(noticeRecord); + } + } + AppUserTree one = appUserTreeService.lambdaQuery().eq(AppUserTree::getAppUserId, appUser.getId()) + .eq(AppUserTree::getSowAgain, 2).one(); + if(one!=null && (one.getTaskOne()==2||one.getTaskTwo()==2)){ + NoticeRecord noticeRecord = new NoticeRecord(); + noticeRecord.setAppUserId(appUser.getId()); + noticeRecord.setReadStatus(1); + noticeRecord.setNoticeType(1); + noticeRecord.setTitle("【冥想通知】"); + noticeRecord.setContent("你今天的冥想任务还未完成,完成冥想后可获得能量值奖励,快去冥想吧!"); + noticeRecordService.save(noticeRecord); + } + } + return R.ok(); + } + + + + @GetMapping("/getUserByPhone/{phone}") + public R<AppUser> getUserByPhone(@PathVariable("phone")String phone) { + AppUser one = appUserService.lambdaQuery().eq(AppUser::getCellPhone, phone).ne(AppUser::getUserStatus, 3) + .one(); + return R.ok(one); + } @GetMapping("/getAllUserList") public R<List<AppUser>> getAllUserList() { List<AppUser> list = appUserService.list(); @@ -251,6 +420,7 @@ StringBuilder stringBuilder = new StringBuilder(); List<AppUser> list = appUserService.lambdaQuery() .eq(BaseModel::getDelFlag, 0) + .isNotNull(AppUser::getCellPhone) .ne(AppUser::getUserStatus, 3).list(); stringBuilder.append(list.size()).append(","); List<AppUser> memberList = list.stream().filter(appUser -> @@ -361,14 +531,19 @@ private TokenService tokenService; @PostMapping("/freezing") @ApiOperation(value = "冻结用户", tags = "管理后台-用户管理") - + @Log(title = "【用户管理】冻结用户", businessType = BusinessType.UPDATE) public R freezingDetail(@RequestBody UserFreezingDTO dto) { AppUser byId = appUserService.getById(dto.getUid()); 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") @@ -409,6 +584,7 @@ } @GetMapping("/unFreezing") @ApiOperation(value = "解冻用户", tags = "管理后台-用户管理") + @Log(title = "【用户管理】解冻用户", businessType = BusinessType.UPDATE) public R unFreezing(String uid) { AppUser byId = appUserService.getById(uid); byId.setUserStatus(1); @@ -437,6 +613,8 @@ @ApiImplicitParam(name = "energyValue", value = "能量值", dataType = "int", required = true), @ApiImplicitParam(name = "reason", value = "备注", dataType = "String", required = true) }) + @Log(title = "【用户管理】能量值修改", businessType = BusinessType.UPDATE) + public R setTotalEnergyValue(String uid,Integer energyValue,String reason) { AppUser byId = appUserService.getById(uid); if (energyValue<0){ @@ -445,7 +623,6 @@ } } byId.setTotalEnergyValue(byId.getTotalEnergyValue()+energyValue); - byId.setEnergyValue(byId.getEnergyValue()+energyValue); appUserService.updateById(byId); AppUserEnergyRecord appUserEnergyRecord = new AppUserEnergyRecord(); appUserEnergyRecord.setAppUserId(byId.getId()); @@ -472,6 +649,8 @@ @ApiImplicitParam(name = "vipType", value = "会员类型 1非 2月 3季 4年", dataType = "Integer", required = true), @ApiImplicitParam(name = "vipExpireTime", value = "会员到期时间 yyyy-MM-dd HH:mm", dataType = "String", required = true), }) + @Log(title = "【用户管理】设置会员", businessType = BusinessType.UPDATE) + public R setVip(String uid, Integer vipType,String vipExpireTime) { // 将其转化为LocalDateTime格式 LocalDateTime parse = LocalDateTime.parse(vipExpireTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); @@ -546,8 +725,8 @@ 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<>(); @@ -556,6 +735,7 @@ appUserWalletRecordLambdaQueryWrapper.like(org.springframework.util.StringUtils.hasLength(dto.getCellPhone()),AppUser::getCellPhone,dto.getCellPhone()); appUserWalletRecordLambdaQueryWrapper.like(org.springframework.util.StringUtils.hasLength(dto.getNickName()),AppUser::getNickname,dto.getNickName()); appUserWalletRecordLambdaQueryWrapper.orderByDesc(BaseModel::getCreateTime); + appUserWalletRecordLambdaQueryWrapper.isNotNull(AppUser::getCellPhone); List<AppUser> page = appUserService .list(appUserWalletRecordLambdaQueryWrapper); List<UserInfoExport> userInfoExports = new ArrayList<>(); @@ -613,15 +793,15 @@ 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<>(); @@ -631,7 +811,8 @@ .eq(Objects.nonNull(courseDTO.getGender()), AppUser::getGender, courseDTO.getGender()) .eq(Objects.nonNull(courseDTO.getUserStatus()), AppUser::getUserStatus, courseDTO.getUserStatus()) .between(Objects.nonNull(startTime),AppUser::getVipExpireTime,startTime,endTime) - .between(Objects.nonNull(startTime1),AppUser::getRegisterTime,startTime1,endTime1) + .between(Objects.nonNull(startTime1),AppUser::getRegisterTime,startTime1,endTime1); + courseLambdaQueryWrapper.isNotNull(AppUser::getCellPhone) .orderByDesc(AppUser::getRegisterTime); if (org.springframework.util.StringUtils.hasLength(courseDTO.getVipType())){ String[] split = courseDTO.getVipType().split(","); @@ -656,23 +837,11 @@ 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); } @@ -683,6 +852,7 @@ } courseLambdaQueryWrapper.in(AppUser::getId, collect); } + courseLambdaQueryWrapper.isNotNull(AppUser::getCellPhone); List<AppUser> page = appUserService.list(courseLambdaQueryWrapper); List<UserExport> userExports = new ArrayList<>(); for (AppUser record : page) { @@ -695,23 +865,11 @@ }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); @@ -751,6 +909,13 @@ 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: @@ -773,17 +938,15 @@ 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()+""); @@ -822,15 +985,15 @@ 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<>(); @@ -903,6 +1066,7 @@ } 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)); @@ -976,8 +1140,38 @@ return R.tokenError("登录失效"); } Long userId = loginUser.getUserid(); - + // 校验验证码 + if (!verifyCaptcha(phone, code, + CacheConstants.APP_CHANGE_PHONE_CODE_PREFIX)) { + 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(); + } + + @Autowired + private RedisService redisService; + private boolean verifyCaptcha(String cellPhone, String captcha, String keyPrefix) { + + if (com.xinquan.common.core.utils.StringUtils.isNotBlank(cellPhone) && com.xinquan.common.core.utils.StringUtils.isNotBlank(captcha)) { + String key = keyPrefix + cellPhone; + String code = redisService.getCacheObject(key); + // 万能验证码 + if (captcha.equals("220125") || (com.xinquan.common.core.utils.StringUtils.isNotBlank(code) && code.equals( + captcha))) { + redisService.deleteObject(key); + return true; + } + } + return false; } @PostMapping("/deleteUser") @ApiOperation(value = "注销账号", tags = {"设置"}) @@ -1098,7 +1292,7 @@ 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)); } @@ -1192,6 +1386,23 @@ 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() { @@ -1254,7 +1465,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(); @@ -1331,13 +1542,15 @@ consecutiveDays++; currentDate = currentDate.minusDays(1); } - appUser.setToday(consecutiveDays); + appUser.setContinuity(consecutiveDays); // 根据等级查询疗愈名称和图标 UserLevelSetting data = remoteBannerService.getIconNameByLevel(level).getData(); appUser.setLevelName(data.getLevelName()); appUser.setLevelIcon(data.getLevelIcon()); return R.ok(appUser); } + @Resource + private SysUserClient sysUserClient; @PostMapping("/healingLevel") @ApiOperation(value = "冥想等级", tags = {"个人中心"}) public R<HealingLevelVO> healingLevel() { @@ -1346,88 +1559,69 @@ return R.tokenError("登录失效"); } Long userId = loginUser.getUserid(); - List<AppUserTree> list1 = appUserTreeService.lambdaQuery().eq(AppUserTree::getAppUserId, userId) - .list(); - if (list1.isEmpty()){ - AppUserTree appUserTree = new AppUserTree(); - appUserTree.setAppUserId(userId); - appUserTree.setTreeLevelType(1); - appUserTree.setGrowthValue(0); - appUserTree.setSowAgain(2); - appUserTree.setStatus(2); - appUserTree.setCreateTime(LocalDateTime.now()); - appUserTreeService.save(appUserTree); - } - // 查询用户等级最高的那颗树苗 - 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); - // 查询疗愈等级 名称 图标 - int level = 1; - if (tree != null){ - level = tree.getTreeLevelType(); - } - HealingLevelVO healingLevelVO = new HealingLevelVO(); + HealingLevelVO healingLevelVO = new HealingLevelVO(); + AppUser one = appUserService.getById(userId); + AppUserTree list1 = appUserTreeService.lambdaQuery().eq(AppUserTree::getAppUserId, userId) + .eq(AppUserTree::getSowAgain,2) + .one(); + // 查询疗愈等级 名称 图标 + int level = list1.getTreeLevelType(); + healingLevelVO.setLevel(level); + // 查询疗愈等级 名称 图标 + if (list1 != null){ + level = list1.getTreeLevelType(); + } healingLevelVO.setLevel(level); // 根据等级查询疗愈名称和图标 UserLevelSetting data = remoteBannerService.getIconNameByLevel(level).getData(); healingLevelVO.setLevelName(data.getLevelName()); healingLevelVO.setLevelIcon(data.getLevelIcon()); - if (level==10){ - healingLevelVO.setNextLevel(2400); - }else{ - switch (level){ - case 1: - healingLevelVO.setNextLevel(1000); - healingLevelVO.setDifferenceLevel(1000-tree.getGrowthValue()); + List<TreeLevelSetting> data3 = sysUserClient.getTreeGroup().getData(); - break; - case 2: - healingLevelVO.setNextLevel(1000); - healingLevelVO.setDifferenceLevel(1000-tree.getGrowthValue()); - break; - case 3: - healingLevelVO.setNextLevel(1000); - healingLevelVO.setDifferenceLevel(1000-tree.getGrowthValue()); - break; - case 4: - healingLevelVO.setNextLevel(1000); - healingLevelVO.setDifferenceLevel(1000-tree.getGrowthValue()); - break; - case 5: - healingLevelVO.setNextLevel(2000); - healingLevelVO.setDifferenceLevel(2000-tree.getGrowthValue()); - break; - case 6: - healingLevelVO.setNextLevel(2000); - healingLevelVO.setDifferenceLevel(2000-tree.getGrowthValue()); - break; - case 7: - healingLevelVO.setNextLevel(2000); - healingLevelVO.setDifferenceLevel(2000-tree.getGrowthValue()); - break; - case 8: - healingLevelVO.setNextLevel(2000); - healingLevelVO.setDifferenceLevel(2000-tree.getGrowthValue()); - break; - case 9: - healingLevelVO.setNextLevel(2400); - healingLevelVO.setDifferenceLevel(2400-tree.getGrowthValue()); - break; - case 10: - healingLevelVO.setNextLevel(2400); - healingLevelVO.setDifferenceLevel(2400-tree.getGrowthValue()); - break; + Integer total1 = list1.getTotal(); + // 根据总能量值 确定他在哪一等级 + int x = 1; + int tem = 0; + for (TreeLevelSetting datum : data3) { + if (total1 == 0){ + Integer growthValue = data3.get(1).getGrowthValue(); + tem = growthValue; + break; + }else if (total1>=datum.getGrowthValue()){ + x = datum.getTreeLevelType(); } } - healingLevelVO.setGrowthValue(tree.getGrowthValue()); + if (x == 10){ + // 如果等级为10那么成长阈值是10级减去9级 + int ten=0; + int nine = 0; + for (TreeLevelSetting datum : data3) { + if (datum.getTreeLevelType()==10){ + ten = datum.getGrowthValue(); + } + if (datum.getTreeLevelType()==9){ + nine = datum.getGrowthValue(); + } + } + tem = ten-nine; + total1 = tem; + }else{ + // 根据当前所在等级查询成长值 + int a = data3.get(x).getGrowthValue()-data3.get(x-1).getGrowthValue(); + tem = a; + total1 = Math.abs(total1-data3.get(x-1).getGrowthValue()); + } + if (x==10){ + healingLevelVO.setDifferenceLevel(0); + healingLevelVO.setGrowthValue(tem); + }else{ + healingLevelVO.setDifferenceLevel(tem-total1); + healingLevelVO.setGrowthValue(total1); + } + healingLevelVO.setNextLevel(tem); + healingLevelVO.setLevel(x); + // 将当前成长值更新 String data1 = remoteUserService.getCourseList(7).getData(); healingLevelVO.setContent(data1); return R.ok(healingLevelVO); @@ -1503,13 +1697,27 @@ @PostMapping("/getUserByPhone") @ApiOperation(value = "根据用户手机号查询用户信息") public R<AppUserDetailVO> getCurrentUser(String phone) { - AppUser one = appUserService.lambdaQuery().eq(AppUser::getCellPhone, phone).one(); - AppUserDetailVO appUserDetailVO = new AppUserDetailVO(); - appUserDetailVO.setId(one.getId()); - appUserDetailVO.setCellPhone(one.getCellPhone()); - appUserDetailVO.setAvatar(one.getAvatar()); - appUserDetailVO.setNickname(one.getNickname()); - return R.ok(appUserDetailVO); + 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()); + appUserDetailVO.setAvatar(one.getAvatar()); + appUserDetailVO.setNickname(one.getNickname()); + return R.ok(appUserDetailVO); + + }else { + return R.fail("未查询到账户信息"); + } } @PostMapping("/getUserBalance") @ApiOperation(value = "查询当前用户余额") @@ -1544,11 +1752,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(); } -- Gitblit v1.7.1