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 |  438 +++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 300 insertions(+), 138 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 0c7f64c..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
@@ -16,6 +16,8 @@
 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;
@@ -23,11 +25,13 @@
 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;
@@ -57,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;
@@ -118,6 +124,159 @@
     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)
@@ -261,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 ->
@@ -371,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")
@@ -419,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);
@@ -447,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){
@@ -455,7 +623,6 @@
             }
         }
         byId.setTotalEnergyValue(byId.getTotalEnergyValue()+energyValue);
-        byId.setEnergyValue(byId.getEnergyValue()+energyValue);
         appUserService.updateById(byId);
         AppUserEnergyRecord appUserEnergyRecord = new AppUserEnergyRecord();
         appUserEnergyRecord.setAppUserId(byId.getId());
@@ -482,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"));
@@ -556,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<>();
@@ -566,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<>();
@@ -623,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<>();
@@ -641,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(",");
@@ -666,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);
                 }
@@ -693,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) {
@@ -705,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);
@@ -761,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:
@@ -783,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()+"");
@@ -832,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<>();
@@ -913,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));
@@ -992,7 +1146,12 @@
             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();
@@ -1006,7 +1165,7 @@
             String key = keyPrefix + cellPhone;
             String code = redisService.getCacheObject(key);
             // 万能验证码
-            if (captcha.equals("123456") || (com.xinquan.common.core.utils.StringUtils.isNotBlank(code) && code.equals(
+            if (captcha.equals("220125") || (com.xinquan.common.core.utils.StringUtils.isNotBlank(code) && code.equals(
                     captcha))) {
                 redisService.deleteObject(key);
                 return true;
@@ -1133,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));
     }
@@ -1227,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() {
@@ -1289,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();
@@ -1367,13 +1543,14 @@
             currentDate = currentDate.minusDays(1);
         }
         appUser.setContinuity(consecutiveDays);
-        appUser.setToday(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() {
@@ -1382,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);
@@ -1539,9 +1697,17 @@
     @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());
@@ -1586,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