From 64f7ccb9ef8b5a0618e65cddc14b981c1f108ba3 Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期一, 04 十一月 2024 09:01:59 +0800
Subject: [PATCH] 代码提交

---
 xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/controller/client/ClientAppUserTreeController.java |  215 ++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 144 insertions(+), 71 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 65e74f7..19788bc 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
@@ -9,11 +9,14 @@
 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.security.service.TokenService;
 import com.xinquan.common.security.utils.SecurityUtils;
 import com.xinquan.system.api.RemoteUserService;
 import com.xinquan.system.api.domain.*;
 import com.xinquan.system.api.domain.vo.AppUserEnergyRecordVO;
 import com.xinquan.system.api.domain.vo.WateringVO;
+import com.xinquan.system.api.feignClient.SysUserClient;
+import com.xinquan.system.api.model.LoginUser;
 import com.xinquan.user.api.domain.dto.UserEnergyDTO;
 import com.xinquan.user.api.domain.dto.UserExchangeRecordDTO;
 import com.xinquan.user.domain.vo.EnergyVO;
@@ -22,6 +25,7 @@
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.*;
 
@@ -54,12 +58,19 @@
     private PrizeService prizeService;
     @Resource
     private PrizeRedemptionRecordService prizeRedemptionRecordService;
+    @Resource
+    private RemoteUserService remoteUserService;
+    @Resource
+    private SysUserClient sysUserClient;
 
     @PostMapping("/getUserTree")
     @ApiOperation(value = "获取用户树苗",tags = "树苗打卡站")
     public R<AppUserTree> getUserTree() {
-        Long userId = SecurityUtils.getUserId();
-        if (userId==0)return R.tokenError("登录失效");
+        LoginUser loginUser = tokenService.getLoginUser();
+        if (loginUser==null){
+            return R.tokenError("登录失效");
+        }
+        Long userId = loginUser.getUserid();
         AppUser byId = appUserService.getById(userId);
         byId.setIsFirst(2);
         appUserService.updateById(byId);
@@ -86,7 +97,7 @@
             appUserTree.setSowAgain(2);
             appUserTree.setCreateTime(LocalDateTime.now());
             // 如果用户的签到时间是今天 那么修改为已签到
-            if (byId.getSignTime().toLocalDate().equals(LocalDateTime.now().toLocalDate())){
+            if (byId.getSignTime()!=null && byId.getSignTime().toLocalDate().equals(LocalDateTime.now().toLocalDate())){
                 appUserTree.setIsSign(1);
             }else{
                 appUserTree.setIsSign(2);
@@ -102,6 +113,7 @@
                 appUserTree.setTaskOne(2);
                 appUserTree.setTaskTwo(2);
             }
+            appUserTree.setEnergyValue(byId.getEnergyValue());
             appUserTree.setNextLevel(1000);
             appUserTreeService.save(appUserTree);
             return R.ok(appUserTree);
@@ -118,7 +130,7 @@
                 one.setTaskTwo(2);
             }
             // 如果用户的签到时间是今天 那么修改为已签到
-            if (byId.getSignTime().toLocalDate().equals(LocalDateTime.now().toLocalDate())){
+            if (byId.getSignTime()!=null&&byId.getSignTime().toLocalDate().equals(LocalDateTime.now().toLocalDate())){
                 one.setIsSign(1);
             }else{
                 one.setIsSign(2);
@@ -155,15 +167,21 @@
                     one.setNextLevel(2400);
                     break;
             }
+            one.setEnergyValue(byId.getEnergyValue());
             return R.ok(one);
-
         }
     }
+    @Autowired
+    private TokenService tokenService;
     @PostMapping("/restart")
     @ApiOperation(value = "重新播种",tags = "树苗打卡站")
     public R restart() {
-        Long userId = SecurityUtils.getUserId();
-        if (userId==0)return R.tokenError("登录失效");
+        LoginUser loginUser = tokenService.getLoginUser();
+        if (loginUser==null){
+            return R.tokenError("登录失效");
+        }
+        Long userId = loginUser.getUserid();
+        if(userId ==null || userId == 0)return R.tokenError("登录失效");
         AppUserTree one = appUserTreeService.lambdaQuery().eq(AppUserTree::getAppUserId, userId)
                 .eq(AppUserTree::getSowAgain,2).one();
         one.setSowAgain(1);
@@ -183,61 +201,80 @@
     public R<WateringVO> watering() {
         WateringVO wateringVO = new WateringVO();
 
-        Long userId = SecurityUtils.getUserId();
-        if (userId==0)return R.tokenError("登录失效");
+        LoginUser loginUser = tokenService.getLoginUser();
+        if (loginUser==null){
+            return R.tokenError("登录失效");
+        }
+        Long userId = loginUser.getUserid();
         AppUser byId = appUserService.getById(userId);
+        if (byId.getEnergyValue() == 0){
+            return R.energyValueError("能量值不足");
+
+        }
         AppUserTree one = appUserTreeService.lambdaQuery().eq(AppUserTree::getAppUserId, userId)
                 .eq(AppUserTree::getSowAgain,2).one();
         Integer currentEnergyValue = byId.getEnergyValue();
         byId.setEnergyValue(0);
+        byId.setTotalEnergyValue(byId.getTotalEnergyValue()+currentEnergyValue);
+        appUserService.updateById(byId);
+        List<TreeLevelSetting> data = sysUserClient.getTreeGroup().getData();
         // 判断能否升级
         int temp = 0;
-        switch (one.getTreeLevelType()){
-            case 1:
-                temp=1000;
-                break;
-            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;
+        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;
+            }
         }
+
         wateringVO.setNextLevel(temp);
         // 升级阈值
         if (one.getGrowthValue()+currentEnergyValue>=temp){
             // 升级咯 如果当前等级已经为10级
             if (one.getTreeLevelType()==10){
                 one.setGrowthValue(one.getGrowthValue()+currentEnergyValue);
-                appUserTreeService.updateById(one);
                 wateringVO.setIsNext(false);
-                wateringVO.setNextLevel(2400);
+                int a= 0;
+                for (TreeLevelSetting datum : data) {
+                    if (datum.getTreeLevelType()==10){
+                        a = datum.getGrowthValue();
+                    }
+                }
+                wateringVO.setNextLevel(a);
             }else{
+
+                // 将当前成长值更新
+                one.setGrowthValue(one.getGrowthValue()+currentEnergyValue-temp);
                 // 升级
                 one.setTreeLevelType(one.getTreeLevelType()+1);
-                one.setGrowthValue(one.getGrowthValue()+currentEnergyValue-temp);
-                appUserTreeService.updateById(one);
                 switch (one.getTreeLevelType()+1){
                     case 2:
                         temp=1000;
@@ -269,25 +306,32 @@
                 }
                 wateringVO.setNextLevel(temp);
                 wateringVO.setIsNext(true);
+                // 升级了 使用浇水后的能量值减去升级阈值
+                wateringVO.setGrowthValue(one.getGrowthValue());
             }
         }else{
-            // 不能升级
-            one.setGrowthValue(one.getGrowthValue()+currentEnergyValue-temp);
-            appUserTreeService.updateById(one);
             wateringVO.setIsNext(false);
+            wateringVO.setGrowthValue(one.getGrowthValue()+currentEnergyValue);
+            // 不能升级
+            one.setGrowthValue(one.getGrowthValue()+currentEnergyValue);
+            appUserTreeService.updateById(one);
         }
-        wateringVO.setGrowthValue(one.getGrowthValue());
+        appUserTreeService.updateById(one);
         return R.ok(wateringVO);
     }
     @PostMapping("/sign")
     @ApiOperation(value = "签到",tags = "树苗打卡站")
     public R sign() {
-        Long userId = SecurityUtils.getUserId();
-        if (userId==0)return R.tokenError("登录失效");
+        LoginUser loginUser = tokenService.getLoginUser();
+        if (loginUser==null){
+            return R.tokenError("登录失效");
+        }
+        Long userId = loginUser.getUserid();
         // 给用户加10能量
         AppUser byId = appUserService.getById(userId);
         byId.setTotalEnergyValue(byId.getTotalEnergyValue()+10);
         byId.setEnergyValue(byId.getEnergyValue()+10);
+        byId.setSignTime(LocalDateTime.now());
         appUserService.updateById(byId);
         return R.ok();
     }
@@ -295,8 +339,12 @@
     @PostMapping("/isFirst")
     @ApiOperation(value = "是否首次进入 ",tags = "树苗打卡站")
     public R isFirst() {
-        Long userId = SecurityUtils.getUserId();
-        if (userId==0)return R.tokenError("登录失效");
+        LoginUser loginUser = tokenService.getLoginUser();
+        if (loginUser==null){
+            return R.tokenError("登录失效");
+        }
+        Long userId = loginUser.getUserid();
+        if(userId ==null || userId == 0)return R.tokenError("登录失效");
         AppUser byId = appUserService.getById(userId);
         if (byId.getIsFirst() == 1){
             byId.setIsFirst(2);
@@ -340,16 +388,27 @@
             return R.ok(empty);
         }
         PageDTO<AppUserEnergyRecordVO> appUserEnergyRecordVOPageDTO = PageDTO.of(page, AppUserEnergyRecordVO.class);
+        for (AppUserEnergyRecordVO appUserEnergyRecordVO : appUserEnergyRecordVOPageDTO.getList()) {
+            AppUser byId = appUserService.getById(appUserEnergyRecordVO.getAppUserId());
+            appUserEnergyRecordVO.setPhone(byId.getNickname());
+            appUserEnergyRecordVO.setName(byId.getCellPhone());
+            if (appUserEnergyRecordVO.getUpdateId()!=null){
+                SysUser data = remoteUserService.getSysUserById(appUserEnergyRecordVO.getUpdateId() + "").getData();
+                if (data!=null){
+                    appUserEnergyRecordVO.setPhone(data.getUserName());
+                    appUserEnergyRecordVO.setName(data.getNickName());
+                }
+
+            }
+        }
         energyVO.setList(appUserEnergyRecordVOPageDTO.getList());
         return R.ok(appUserEnergyRecordVOPageDTO);
     }
     @PostMapping("/userExchangeRecordList")
     @ApiOperation(value = "用户详情-兑换记录 ",tags = "管理后台-用户管理")
     public R<PageDTO<ExchangeRecordVO>> userExchangeRecordList(@RequestBody UserExchangeRecordDTO dto) {
-        Long userId = SecurityUtils.getUserId();
-        if (userId==0)return R.tokenError("登录失效");
         Page<PrizeRedemptionRecord> page = prizeRedemptionRecordService.lambdaQuery()
-                .eq(PrizeRedemptionRecord::getAppUserId, userId)
+                .eq(PrizeRedemptionRecord::getAppUserId, dto.getUid())
                 .orderByDesc(BaseModel::getCreateTime).page(new Page<>(dto.getPageCurr(), dto.getPageSize()));
         if (CollUtils.isEmpty(page.getRecords())){
             PageDTO<ExchangeRecordVO> empty = PageDTO.empty(page);
@@ -375,9 +434,12 @@
             @ApiImplicitParam(name = "pageCurr", value = "分页参数,当前页码", dataType = "Integer", required = true),
             @ApiImplicitParam(name = "pageSize", value = "分页参数,每页数量", dataType = "Integer", required = true)
     })
-    public R<PageDTO<AppUserEnergyRecordVO>> energyDetail(Integer state,Integer pageCurr,Integer pageSize) {
-        Long userId = SecurityUtils.getUserId();
-        if (userId==0)return R.tokenError("登录失效");
+    public R<List<AppUserEnergyRecordVO>> energyDetail(Integer state,Integer pageCurr,Integer pageSize) {
+        LoginUser loginUser = tokenService.getLoginUser();
+        if (loginUser==null){
+            return R.tokenError("登录失效");
+        }
+        Long userId = loginUser.getUserid();
         EnergyVO energyVO = new EnergyVO();
         energyVO.setEnergyTotal(appUserService.getById(userId).getTotalEnergyValue());
         LambdaQueryWrapper<AppUserEnergyRecord> lambdaQueryWrapper = new LambdaQueryWrapper<>();
@@ -396,11 +458,11 @@
         if (CollUtils.isEmpty(page.getRecords())){
             PageDTO<AppUserEnergyRecordVO> empty = PageDTO.empty(page);
             energyVO.setList(new ArrayList<AppUserEnergyRecordVO>());
-            return R.ok(empty);
+            return R.ok(new ArrayList<>());
         }
         PageDTO<AppUserEnergyRecordVO> appUserEnergyRecordVOPageDTO = PageDTO.of(page, AppUserEnergyRecordVO.class);
         energyVO.setList(appUserEnergyRecordVOPageDTO.getList());
-        return R.ok(appUserEnergyRecordVOPageDTO);
+        return R.ok(appUserEnergyRecordVOPageDTO.getList());
     }
     @PostMapping("/goodsList")
     @ApiOperation(value = "能量兑换礼物列表 ",tags = "树苗打卡站")
@@ -408,16 +470,19 @@
             @ApiImplicitParam(name = "pageCurr", value = "分页参数,当前页码", dataType = "Integer", required = true),
             @ApiImplicitParam(name = "pageSize", value = "分页参数,每页数量", dataType = "Integer", required = true)
     })
-    public R<PageDTO<Prize>> goodsList(Integer pageCurr,Integer pageSize) {
-        Long userId = SecurityUtils.getUserId();
-        if (userId==0)return R.tokenError("登录失效");
+    public R<List<Prize>> goodsList(Integer pageCurr,Integer pageSize) {
+        LoginUser loginUser = tokenService.getLoginUser();
+        if (loginUser==null){
+            return R.tokenError("登录失效");
+        }
+        Long userId = loginUser.getUserid();
         Page<Prize> page = prizeService.lambdaQuery()
                 .eq(Prize::getStatus, 1)
                 .orderByDesc(BaseModel::getCreateTime).page(new Page<>(pageCurr, pageSize));
 
         if (CollUtils.isEmpty(page.getRecords())){
             PageDTO<Prize> empty = PageDTO.empty(page);
-            return R.ok(empty);
+            return R.ok(new ArrayList<>());
         }
         for (Prize record : page.getRecords()) {
             PrizeRedemptionRecord one = prizeRedemptionRecordService.lambdaQuery()
@@ -425,10 +490,12 @@
                     .eq(PrizeRedemptionRecord::getAppUserId, userId).one();
             if (one == null){
                 record.setReceiveStatus(2);
+            }else{
+                record.setReceiveStatus(1);
             }
         }
         PageDTO<Prize> res = PageDTO.of(page, Prize.class);
-        return R.ok(res);
+        return R.ok(res.getList());
     }
     @PostMapping("/exchange")
     @ApiOperation(value = "兑换奖品 ",tags = "树苗打卡站")
@@ -436,8 +503,11 @@
             @ApiImplicitParam(name = "prizeId", value = "奖品id", dataType = "Long", required = true),
     })
     public R exchange(Long prizeId) {
-        Long userId = SecurityUtils.getUserId();
-        if (userId==0)return R.tokenError("登录失效");
+        LoginUser loginUser = tokenService.getLoginUser();
+        if (loginUser==null){
+            return R.tokenError("登录失效");
+        }
+        Long userId = loginUser.getUserid();
         AppUser byId1 = appUserService.getById(userId);
         Prize byId = prizeService.getById(prizeId);
         if (byId1.getTotalEnergyValue()<=byId.getEnergyValue()){
@@ -459,7 +529,7 @@
         prizeRedemptionRecord.setCode(code);
         prizeRedemptionRecordService.save(prizeRedemptionRecord);
         // 随机生成6位纯数字验证码
-        return R.ok();
+        return R.ok(code);
     }
     @PostMapping("/exchangeRecordList")
     @ApiOperation(value = "兑换记录 ",tags = "树苗打卡站")
@@ -468,8 +538,11 @@
             @ApiImplicitParam(name = "pageSize", value = "分页参数,每页数量", dataType = "Integer", required = true)
     })
     public R<List<ExchangeRecordVO>> exchangeRecordList(Integer pageCurr, Integer pageSize) {
-        Long userId = SecurityUtils.getUserId();
-        if (userId==0)return R.tokenError("登录失效");
+        LoginUser loginUser = tokenService.getLoginUser();
+        if (loginUser==null){
+            return R.tokenError("登录失效");
+        }
+        Long userId = loginUser.getUserid();
         Page<PrizeRedemptionRecord> page = prizeRedemptionRecordService.lambdaQuery()
                 .eq(PrizeRedemptionRecord::getAppUserId, userId)
                 .orderByDesc(BaseModel::getCreateTime).page(new Page<>(pageCurr, pageSize));
@@ -480,7 +553,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());

--
Gitblit v1.7.1