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