From 111652d23733d04e379c2454c8b39171596a6b50 Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期六, 09 十一月 2024 14:28:51 +0800
Subject: [PATCH] 代码提交

---
 xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/controller/client/ClientAppUserTreeController.java |  354 ++++++++++++++++++++++++++++++++++++----------------------
 1 files changed, 218 insertions(+), 136 deletions(-)

diff --git a/xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/controller/client/ClientAppUserTreeController.java b/xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/controller/client/ClientAppUserTreeController.java
index 19788bc..423d539 100644
--- a/xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/controller/client/ClientAppUserTreeController.java
+++ b/xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/controller/client/ClientAppUserTreeController.java
@@ -25,6 +25,7 @@
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
+import org.apache.poi.ss.formula.functions.T;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.*;
@@ -32,6 +33,7 @@
 import javax.annotation.Resource;
 import java.time.LocalDateTime;
 import java.time.LocalTime;
+import java.time.temporal.ChronoUnit;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -63,6 +65,49 @@
     @Resource
     private SysUserClient sysUserClient;
 
+    @PostMapping("/testDelete")
+    @ApiOperation(value = "手动扣除成长值",tags = "手动扣除成长值")
+    public R testDelete() {
+        try {
+            LocalDateTime now = LocalDateTime.now();
+            List<AppUserTree> list1 = appUserTreeService.lambdaQuery().eq(AppUserTree::getSowAgain, 2)
+                    .list();
+            for (AppUserTree appUserTree : list1) {
+                LocalDateTime time = appUserTree.getTime();
+                // 计算两个now和time的天数差
+                long between = ChronoUnit.DAYS.between(time, now);
+                if (between>7){
+                    double v = appUserTree.getTotal() * 0.02;
+                    long roundedValue = Math.round(v);
+                    if ((appUserTree.getTotal() - (int) roundedValue)>0){
+                        appUserTree.setTotal(appUserTree.getTotal() - (int) roundedValue);
+                    }else{
+                        appUserTree.setTotal(0);
+                    }
+                    appUserTree.setStatus(1);
+                }else if (between>=1){
+                    // 计算两个now和time的小时差
+                    long betweenHours = ChronoUnit.HOURS.between(time, now);
+                    if (betweenHours>=24){
+                        double v = appUserTree.getTotal() * 0.01;
+                        long roundedValue = Math.round(v);
+                        if ((appUserTree.getTotal() - (int) roundedValue)>0){
+                            if (appUserTree.getId().equals(1854054871051481089L)){
+                                System.err.println(appUserTree.getTotal() - (int) roundedValue);
+                            }
+                            appUserTree.setTotal(appUserTree.getTotal() - (int) roundedValue);
+                        }else{
+                            appUserTree.setTotal(0);
+                        }
+                    }
+                }
+                appUserTreeService.updateById(appUserTree);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return R.ok();
+    }
     @PostMapping("/getUserTree")
     @ApiOperation(value = "获取用户树苗",tags = "树苗打卡站")
     public R<AppUserTree> getUserTree() {
@@ -91,6 +136,7 @@
                 .eq(AppUserTree::getSowAgain,2).one();
         if (one == null){
             AppUserTree appUserTree = new AppUserTree();
+            appUserTree.setTime(LocalDateTime.now());
             appUserTree.setAppUserId(userId);
             appUserTree.setTreeLevelType(1);
             appUserTree.setGrowthValue(0);
@@ -102,11 +148,39 @@
             }else{
                 appUserTree.setIsSign(2);
             }
-            if (temp>=60){
+            if (temp>=120){
+                if (appUserTree.getTaskOne()==2){
+                    AppUserEnergyRecord appUserEnergyRecord = new AppUserEnergyRecord();
+                    appUserEnergyRecord.setAppUserId(userId);
+                    appUserEnergyRecord.setChangeType(1);
+                    appUserEnergyRecord.setEnergyValue(10);
+                    appUserEnergyRecord.setReason("完成【每日疗愈30分钟】任务");
+                    appUserEnergyRecordService.save(appUserEnergyRecord);
+                    byId.setTotalEnergyValue(byId.getTotalEnergyValue()+10);
+                }
+                if (appUserTree.getTaskTwo()==2){
+                    AppUserEnergyRecord appUserEnergyRecord = new AppUserEnergyRecord();
+                    appUserEnergyRecord.setAppUserId(userId);
+                    appUserEnergyRecord.setChangeType(1);
+                    appUserEnergyRecord.setEnergyValue(20);
+                    appUserEnergyRecord.setReason("完成【每日疗愈60分钟】任务");
+                    appUserEnergyRecordService.save(appUserEnergyRecord);
+                    byId.setTotalEnergyValue(byId.getTotalEnergyValue()+20);
+
+                }
                 appUserTree.setTaskOne(1);
                 appUserTree.setTaskTwo(1);
             }
-            else if (temp>=30){
+            else if (temp>=60){
+                if (appUserTree.getTaskOne()==2){
+                    AppUserEnergyRecord appUserEnergyRecord = new AppUserEnergyRecord();
+                    appUserEnergyRecord.setAppUserId(userId);
+                    appUserEnergyRecord.setChangeType(1);
+                    appUserEnergyRecord.setEnergyValue(10);
+                    appUserEnergyRecord.setReason("完成【每日疗愈30分钟】任务");
+                    appUserEnergyRecordService.save(appUserEnergyRecord);
+                    byId.setTotalEnergyValue(byId.getTotalEnergyValue()+10);
+                }
                 appUserTree.setTaskOne(1);
                 appUserTree.setTaskTwo(2);
             }else{
@@ -118,11 +192,39 @@
             appUserTreeService.save(appUserTree);
             return R.ok(appUserTree);
         }else{
-            if (temp>=60){
+            if (temp>=120){
+                if (one.getTaskOne()==2){
+                    AppUserEnergyRecord appUserEnergyRecord = new AppUserEnergyRecord();
+                    appUserEnergyRecord.setAppUserId(userId);
+                    appUserEnergyRecord.setChangeType(1);
+                    appUserEnergyRecord.setEnergyValue(10);
+                    appUserEnergyRecord.setReason("完成【每日疗愈30分钟】任务");
+                    appUserEnergyRecordService.save(appUserEnergyRecord);
+                    byId.setTotalEnergyValue(byId.getTotalEnergyValue()+10);
+                }
+                if (one.getTaskTwo()==2){
+                    AppUserEnergyRecord appUserEnergyRecord = new AppUserEnergyRecord();
+                    appUserEnergyRecord.setAppUserId(userId);
+                    appUserEnergyRecord.setChangeType(1);
+                    appUserEnergyRecord.setEnergyValue(20);
+                    appUserEnergyRecord.setReason("完成【每日疗愈60分钟】任务");
+                    appUserEnergyRecordService.save(appUserEnergyRecord);
+                    byId.setTotalEnergyValue(byId.getTotalEnergyValue()+20);
+
+                }
                 one.setTaskOne(1);
                 one.setTaskTwo(1);
             }
-            else if (temp>=30){
+            else if (temp>=60){
+                if (one.getTaskOne()==2){
+                    AppUserEnergyRecord appUserEnergyRecord = new AppUserEnergyRecord();
+                    appUserEnergyRecord.setAppUserId(userId);
+                    appUserEnergyRecord.setChangeType(1);
+                    appUserEnergyRecord.setEnergyValue(10);
+                    appUserEnergyRecord.setReason("完成【每日疗愈30分钟】任务");
+                    appUserEnergyRecordService.save(appUserEnergyRecord);
+                    byId.setTotalEnergyValue(byId.getTotalEnergyValue()+10);
+                }
                 one.setTaskOne(1);
                 one.setTaskTwo(2);
             }else{
@@ -135,39 +237,47 @@
             }else{
                 one.setIsSign(2);
             }
-            switch (one.getTreeLevelType()){
-                case 1:
-                    one.setNextLevel(1000);
+            List<TreeLevelSetting> data = sysUserClient.getTreeGroup().getData();
+
+            Integer total1 = one.getTotal();
+            // 根据总能量值 确定他在哪一等级
+            int x = 1;
+            int tem = 0;
+            for (TreeLevelSetting datum : data) {
+                if (total1 == 0){
+                    Integer growthValue = data.get(1).getGrowthValue();
+                    tem = growthValue;
                     break;
-                case 2:
-                    one.setNextLevel(1000);
-                    break;
-                case 3:
-                    one.setNextLevel(1000);
-                    break;
-                case 4:
-                    one.setNextLevel(1000);
-                    break;
-                case 5:
-                    one.setNextLevel(2000);
-                    break;
-                case 6:
-                    one.setNextLevel(2000);
-                    break;
-                case 7:
-                    one.setNextLevel(2000);
-                    break;
-                case 8:
-                    one.setNextLevel(2000);
-                    break;
-                case 9:
-                    one.setNextLevel(2400);
-                    break;
-                case 10:
-                    one.setNextLevel(2400);
-                    break;
+                }else if (total1>=datum.getGrowthValue()){
+                    x = datum.getTreeLevelType();
+                }
             }
+            if (x == 10){
+                // 如果等级为10那么成长阈值是10级减去9级
+                int ten=0;
+                int nine = 0;
+                for (TreeLevelSetting datum : data) {
+                   if (datum.getTreeLevelType()==10){
+                       ten = datum.getGrowthValue();
+                   }
+                    if (datum.getTreeLevelType()==9){
+                        nine = datum.getGrowthValue();
+                    }
+                }
+                tem = ten-nine;
+                total1 = tem;
+            }else{
+                // 根据当前所在等级查询成长值
+                int a = data.get(x).getGrowthValue()-data.get(x-1).getGrowthValue();
+                tem = a;
+                total1 = Math.abs(total1-data.get(x-1).getGrowthValue());
+            }
+            one.setNextLevel(tem);
+            one.setTreeLevelType(x);
+            // 将当前成长值更新
+            one.setGrowthValue(total1);
             one.setEnergyValue(byId.getEnergyValue());
+            appUserTreeService.updateById(one);
             return R.ok(one);
         }
     }
@@ -199,7 +309,8 @@
     @PostMapping("/watering")
     @ApiOperation(value = "浇水 返回值true证明升级了 false没升级",tags = "树苗打卡站")
     public R<WateringVO> watering() {
-        WateringVO wateringVO = new WateringVO();
+
+
 
         LoginUser loginUser = tokenService.getLoginUser();
         if (loginUser==null){
@@ -211,112 +322,63 @@
             return R.energyValueError("能量值不足");
 
         }
+        WateringVO wateringVO = new WateringVO();
+
         AppUserTree one = appUserTreeService.lambdaQuery().eq(AppUserTree::getAppUserId, userId)
                 .eq(AppUserTree::getSowAgain,2).one();
-        Integer currentEnergyValue = byId.getEnergyValue();
+        one.setStatus(2);
+        one.setTotal(one.getTotal()+byId.getEnergyValue());
+        one.setTime(LocalDateTime.now());
+        appUserTreeService.updateById(one);
         byId.setEnergyValue(0);
-        byId.setTotalEnergyValue(byId.getTotalEnergyValue()+currentEnergyValue);
         appUserService.updateById(byId);
         List<TreeLevelSetting> data = sysUserClient.getTreeGroup().getData();
-        // 判断能否升级
-        int temp = 0;
+        int y = one.getTreeLevelType();
+        Integer total1 = one.getTotal();
+        // 根据总能量值 确定他在哪一等级
+        int x = 1;
+        int tem = 0;
         for (TreeLevelSetting datum : data) {
-            switch (datum.getTreeLevelType()){
-                case 1:
-                    temp=datum.getGrowthValue();
-                    break;
-                case 2:
-                    temp=datum.getGrowthValue();
-                    break;
-                case 3:
-                    temp=datum.getGrowthValue();
-                    break;
-                case 4:
-                    temp=datum.getGrowthValue();
-                    break;
-                case 5:
-                    temp=datum.getGrowthValue();
-                    break;
-                case 6:
-                    temp=datum.getGrowthValue();
-                    break;
-                case 7:
-                    temp=datum.getGrowthValue();
-                    break;
-                case 8:
-                    temp=datum.getGrowthValue();
-                    break;
-                case 9:
-                    temp=datum.getGrowthValue();
-                    break;
-                case 10:
-                    temp=datum.getGrowthValue();
-                    break;
+            if (total1 == 0){
+                Integer growthValue = data.get(1).getGrowthValue();
+                tem = growthValue;
+                break;
+            }else if (total1>=datum.getGrowthValue()){
+                x = datum.getTreeLevelType();
             }
         }
-
-        wateringVO.setNextLevel(temp);
-        // 升级阈值
-        if (one.getGrowthValue()+currentEnergyValue>=temp){
-            // 升级咯 如果当前等级已经为10级
-            if (one.getTreeLevelType()==10){
-                one.setGrowthValue(one.getGrowthValue()+currentEnergyValue);
-                wateringVO.setIsNext(false);
-                int a= 0;
-                for (TreeLevelSetting datum : data) {
-                    if (datum.getTreeLevelType()==10){
-                        a = datum.getGrowthValue();
-                    }
+        if (x == 10){
+            // 如果等级为10那么成长阈值是10级减去9级
+            int ten=0;
+            int nine = 0;
+            for (TreeLevelSetting datum : data) {
+                if (datum.getTreeLevelType()==10){
+                    ten = datum.getGrowthValue();
                 }
-                wateringVO.setNextLevel(a);
-            }else{
-
-                // 将当前成长值更新
-                one.setGrowthValue(one.getGrowthValue()+currentEnergyValue-temp);
-                // 升级
-                one.setTreeLevelType(one.getTreeLevelType()+1);
-                switch (one.getTreeLevelType()+1){
-                    case 2:
-                        temp=1000;
-                        break;
-                    case 3:
-                        temp=1000;
-                        break;
-                    case 4:
-                        temp=1000;
-                        break;
-                    case 5:
-                        temp=2000;
-                        break;
-                    case 6:
-                        temp=2000;
-                        break;
-                    case 7:
-                        temp=2000;
-                        break;
-                    case 8:
-                        temp=2000;
-                        break;
-                    case 9:
-                        temp=2400;
-                        break;
-                    case 10:
-                        temp=2400;
-                        break;
+                if (datum.getTreeLevelType()==9){
+                    nine = datum.getGrowthValue();
                 }
-                wateringVO.setNextLevel(temp);
-                wateringVO.setIsNext(true);
-                // 升级了 使用浇水后的能量值减去升级阈值
-                wateringVO.setGrowthValue(one.getGrowthValue());
             }
+            tem = ten-nine;
+            total1 = tem;
         }else{
-            wateringVO.setIsNext(false);
-            wateringVO.setGrowthValue(one.getGrowthValue()+currentEnergyValue);
-            // 不能升级
-            one.setGrowthValue(one.getGrowthValue()+currentEnergyValue);
-            appUserTreeService.updateById(one);
+            // 根据当前所在等级查询成长值
+            int a = data.get(x).getGrowthValue()-data.get(x-1).getGrowthValue();
+            tem = a;
+            total1 = Math.abs(total1-data.get(x-1).getGrowthValue());
         }
+        one.setNextLevel(tem);
+        one.setTreeLevelType(x);
+        // 将当前成长值更新
+        one.setGrowthValue(total1);
+        one.setEnergyValue(byId.getEnergyValue());
         appUserTreeService.updateById(one);
+        wateringVO.setNextLevel(tem);
+        wateringVO.setTreeLevelType(x);
+        wateringVO.setGrowthValue(total1);
+        if (x>y){
+            wateringVO.setIsNext(true);
+        }
         return R.ok(wateringVO);
     }
     @PostMapping("/sign")
@@ -329,10 +391,17 @@
         Long userId = loginUser.getUserid();
         // 给用户加10能量
         AppUser byId = appUserService.getById(userId);
-        byId.setTotalEnergyValue(byId.getTotalEnergyValue()+10);
         byId.setEnergyValue(byId.getEnergyValue()+10);
         byId.setSignTime(LocalDateTime.now());
+        byId.setTotalEnergyValue(byId.getTotalEnergyValue()+10);
         appUserService.updateById(byId);
+        AppUserEnergyRecord appUserEnergyRecord = new AppUserEnergyRecord();
+        appUserEnergyRecord.setAppUserId(userId);
+
+        appUserEnergyRecord.setChangeType(1);
+        appUserEnergyRecord.setEnergyValue(10);
+        appUserEnergyRecord.setReason("签到");
+        appUserEnergyRecordService.save(appUserEnergyRecord);
         return R.ok();
     }
 
@@ -355,21 +424,21 @@
         }
     }
     @PostMapping("/userEnergyDetail")
-    @ApiOperation(value = "用户详情-能量值明细 ",tags = "管理后台-用户管理")
+    @ApiOperation(tags = "管理后台-用户管理",value = "用户详情-能量值明细 ")
     public R<PageDTO<AppUserEnergyRecordVO>> userEnergyDetail(@RequestBody UserEnergyDTO dto) {
         String startTime = null;
         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();
         EnergyVO energyVO = new EnergyVO();
         energyVO.setEnergyTotal(appUserService.getById(userId).getTotalEnergyValue());
         LambdaQueryWrapper<AppUserEnergyRecord> lambdaQueryWrapper = new LambdaQueryWrapper<>();
-        if (dto.getState()!=null){
-            switch (dto.getState()){
+        if (dto.getChangeType()!=null){
+            switch (dto.getChangeType()){
                 case 1:
                     lambdaQueryWrapper.eq(AppUserEnergyRecord::getChangeType, 1);
                     break;
@@ -378,7 +447,7 @@
                     break;
             }
         }
-        lambdaQueryWrapper.like(StringUtils.hasLength(dto.getContent()),AppUserEnergyRecord::getReason,dto.getContent());
+        lambdaQueryWrapper.like(StringUtils.hasLength(dto.getReason()),AppUserEnergyRecord::getReason,dto.getReason());
         lambdaQueryWrapper.between(startTime!=null,BaseModel::getCreateTime,startTime,endTime);
         lambdaQueryWrapper.eq(AppUserEnergyRecord::getAppUserId, userId).orderByDesc(BaseModel::getCreateTime);
         Page<AppUserEnergyRecord> page = appUserEnergyRecordService.page(new Page<>(dto.getPageCurr(), dto.getPageSize()), lambdaQueryWrapper);
@@ -417,7 +486,7 @@
         PageDTO<ExchangeRecordVO> res = PageDTO.of(page, ExchangeRecordVO.class);
         for (ExchangeRecordVO record : res.getList()) {
             Prize temp = prizeService.lambdaQuery()
-                    .eq(Prize::getId, record.getId()).one();
+                    .eq(Prize::getId, record.getPrizeId()).one();
             if (temp != null){
                 record.setName(temp.getName());
                 record.setCoverUrl(temp.getCoverUrl());
@@ -510,7 +579,7 @@
         Long userId = loginUser.getUserid();
         AppUser byId1 = appUserService.getById(userId);
         Prize byId = prizeService.getById(prizeId);
-        if (byId1.getTotalEnergyValue()<=byId.getEnergyValue()){
+        if (byId1.getTotalEnergyValue()<byId.getEnergyValue()){
             return R.fail("能量值不足");
         }
         PrizeRedemptionRecord one = prizeRedemptionRecordService.lambdaQuery()
@@ -519,6 +588,18 @@
         if (one!=null){
             return R.fail("奖品已兑换");
         }
+        // 扣去能量值
+        Integer totalEnergyValue = byId1.getTotalEnergyValue();
+        byId1.setTotalEnergyValue(totalEnergyValue-byId.getEnergyValue());
+        appUserService.updateById(byId1);
+        // 增加记录
+        AppUserEnergyRecord appUserEnergyRecord = new AppUserEnergyRecord();
+        appUserEnergyRecord.setAppUserId(userId);
+        appUserEnergyRecord.setChangeType(2);
+        appUserEnergyRecord.setEnergyValue(byId.getEnergyValue());
+        appUserEnergyRecord.setReason("兑换礼品");
+        appUserEnergyRecordService.save(appUserEnergyRecord);
+
         PrizeRedemptionRecord prizeRedemptionRecord = new PrizeRedemptionRecord();
         prizeRedemptionRecord.setStatus(1);
         prizeRedemptionRecord.setEnergyValue(byId.getEnergyValue());
@@ -529,6 +610,7 @@
         prizeRedemptionRecord.setCode(code);
         prizeRedemptionRecordService.save(prizeRedemptionRecord);
         // 随机生成6位纯数字验证码
+
         return R.ok(code);
     }
     @PostMapping("/exchangeRecordList")

--
Gitblit v1.7.1