From ea73e0fcc705bd95c35ef95f17f98f482475a0dd Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期四, 14 十一月 2024 13:50:52 +0800 Subject: [PATCH] 代码提交 --- xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/controller/client/ClientAppUserTreeController.java | 679 ++++++++++++++++++++++++++++++++++++++----------------- 1 files changed, 464 insertions(+), 215 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 9291ca0..446069d 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 @@ -1,6 +1,7 @@ package com.xinquan.user.controller.client; +import cn.afterturn.easypoi.cache.manager.IFileLoader; import cn.hutool.core.util.RandomUtil; import com.alibaba.fastjson2.util.UUIDUtils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -9,26 +10,31 @@ 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; import com.xinquan.user.domain.vo.ExchangeRecordVO; import com.xinquan.user.service.*; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; -import org.springframework.web.bind.annotation.Mapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; - -import org.springframework.web.bind.annotation.RestController; +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.*; 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; @@ -55,116 +61,261 @@ private PrizeService prizeService; @Resource private PrizeRedemptionRecordService prizeRedemptionRecordService; + @Resource + private RemoteUserService remoteUserService; + @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() { - Long userId = SecurityUtils.getUserId(); - if (userId==0)return R.tokenError("登录失效"); - AppUser byId = appUserService.getById(userId); - // 查询用户今日观看疗愈多少秒 - LocalDateTime now = LocalDateTime.now(); - LocalDateTime startOfDay = now.toLocalDate().atStartOfDay(); - LocalDateTime endOfDay = now.toLocalDate().atTime(LocalTime.MAX); - List<AppUserViewingHistory> list = appUserViewingHistoryService - .lambdaQuery().eq(AppUserViewingHistory::getAppUserId, userId) - .eq(AppUserViewingHistory::getViewingType, 1) - .eq(BaseModel::getDelFlag,0) - .between(AppUserViewingHistory::getCreateTime, startOfDay,endOfDay).list(); - int temp = 0; - for (AppUserViewingHistory appUserViewingHistory : list) { - temp += appUserViewingHistory.getTimeLook(); - } + LoginUser loginUser = tokenService.getLoginUser(); + if (loginUser!=null) { + Long userId = loginUser.getUserid(); + AppUser byId = appUserService.getById(userId); + byId.setIsFirst(2); + appUserService.updateById(byId); + // 查询用户今日观看疗愈多少秒 + LocalDateTime now = LocalDateTime.now(); + LocalDateTime startOfDay = now.toLocalDate().atStartOfDay(); + LocalDateTime endOfDay = now.toLocalDate().atTime(LocalTime.MAX); + List<AppUserViewingHistory> list = appUserViewingHistoryService + .lambdaQuery().eq(AppUserViewingHistory::getAppUserId, userId) + .eq(AppUserViewingHistory::getViewingType, 1) + .eq(BaseModel::getDelFlag, 0) + .between(AppUserViewingHistory::getCreateTime, startOfDay, endOfDay).list(); + int temp = 0; + for (AppUserViewingHistory appUserViewingHistory : list) { + if (appUserViewingHistory.getTimeLook()!=null){ + temp += appUserViewingHistory.getTimeLook(); - AppUserTree one = appUserTreeService.lambdaQuery().eq(AppUserTree::getAppUserId, userId) - .eq(AppUserTree::getSowAgain,2).one(); - if (one == null){ - AppUserTree appUserTree = new AppUserTree(); - appUserTree.setAppUserId(userId); - appUserTree.setTreeLevelType(1); - appUserTree.setGrowthValue(0); - appUserTree.setSowAgain(2); - appUserTree.setCreateTime(LocalDateTime.now()); - // 如果用户的签到时间是今天 那么修改为已签到 - if (byId.getSignTime().toLocalDate().equals(LocalDateTime.now().toLocalDate())){ - appUserTree.setIsSign(1); - }else{ - appUserTree.setIsSign(2); + } } - if (temp>=60){ - appUserTree.setTaskOne(1); - appUserTree.setTaskTwo(1); + AppUserTree one = appUserTreeService.lambdaQuery().eq(AppUserTree::getAppUserId, userId) + .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); + appUserTree.setSowAgain(2); + appUserTree.setCreateTime(LocalDateTime.now()); + // 如果用户的签到时间是今天 那么修改为已签到 + if (byId.getSignTime() != null && byId.getSignTime().toLocalDate().equals(LocalDateTime.now().toLocalDate())) { + appUserTree.setIsSign(1); + } else { + appUserTree.setIsSign(2); + } + if (temp >= 3600) { + 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 >= 1800) { + 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 { + appUserTree.setTaskOne(2); + appUserTree.setTaskTwo(2); + } + appUserTree.setEnergyValue(byId.getEnergyValue()); + appUserTree.setNextLevel(1000); + appUserTreeService.save(appUserTree); + appUserTree.setTotalEnergyValue(byId.getTotalEnergyValue()); + return R.ok(appUserTree); + } else { + if (temp >= 3600) { + 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 >= 1800) { + 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 { + one.setTaskOne(2); + one.setTaskTwo(2); + } + // 如果用户的签到时间是今天 那么修改为已签到 + if (byId.getSignTime() != null && byId.getSignTime().toLocalDate().equals(LocalDateTime.now().toLocalDate())) { + one.setIsSign(1); + } else { + one.setIsSign(2); + } + 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; + } 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); + one.setTotalEnergyValue(byId.getTotalEnergyValue()); + return R.ok(one); } - else if (temp>=30){ - appUserTree.setTaskOne(1); - appUserTree.setTaskTwo(2); - }else{ - appUserTree.setTaskOne(2); - appUserTree.setTaskTwo(2); - } - appUserTree.setNextLevel(1000); - appUserTreeService.save(appUserTree); - return R.ok(appUserTree); }else{ - if (temp>=60){ - one.setTaskOne(1); - one.setTaskTwo(1); - } - else if (temp>=30){ - one.setTaskOne(1); - one.setTaskTwo(2); - }else{ - one.setTaskOne(2); - one.setTaskTwo(2); - } - // 如果用户的签到时间是今天 那么修改为已签到 - if (byId.getSignTime().toLocalDate().equals(LocalDateTime.now().toLocalDate())){ - one.setIsSign(1); - }else{ - one.setIsSign(2); - } - switch (one.getTreeLevelType()){ - case 1: - one.setNextLevel(1000); - 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; - } - return R.ok(one); + List<TreeLevelSetting> data = sysUserClient.getTreeGroup().getData(); + AppUserTree appUserTree = new AppUserTree(); + appUserTree.setTreeLevelType(1); + appUserTree.setTotal(0); + appUserTree.setGrowthValue(0); + for (TreeLevelSetting datum : data) { + if (datum.getTreeLevelType()==2){ + appUserTree.setNextLevel(datum.getGrowthValue()); + } + } + appUserTree.setSowAgain(2); + appUserTree.setStatus(2); + appUserTree.setTaskOne(2); + appUserTree.setEnergyValue(0); + appUserTree.setTaskTwo(2); + appUserTree.setIsSign(2); + appUserTree.setTotalEnergyValue(0); + return R.ok(appUserTree); } } + @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); @@ -179,126 +330,125 @@ return R.ok(); } + @Resource + private NoticeRecordService noticeRecordService; @PostMapping("/watering") @ApiOperation(value = "浇水 返回值true证明升级了 false没升级",tags = "树苗打卡站") public R<WateringVO> watering() { + + + + 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("能量值不足"); + + } WateringVO wateringVO = new WateringVO(); - Long userId = SecurityUtils.getUserId(); - if (userId==0)return R.tokenError("登录失效"); - AppUser byId = appUserService.getById(userId); 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); - // 判断能否升级 - int temp = 0; - switch (one.getTreeLevelType()){ - case 1: - temp=1000; + appUserService.updateById(byId); + List<TreeLevelSetting> data = sysUserClient.getTreeGroup().getData(); + int y = one.getTreeLevelType(); + 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: - 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; - } - 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); - }else{ - // 升级 - one.setTreeLevelType(one.getTreeLevelType()+1); - one.setGrowthValue(one.getGrowthValue()+currentEnergyValue-temp); - appUserTreeService.updateById(one); - 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; - } - wateringVO.setNextLevel(temp); - wateringVO.setIsNext(true); + }else if (total1>=datum.getGrowthValue()){ + x = datum.getTreeLevelType(); } - }else{ - // 不能升级 - one.setGrowthValue(one.getGrowthValue()+currentEnergyValue-temp); - appUserTreeService.updateById(one); - wateringVO.setIsNext(false); } - wateringVO.setGrowthValue(one.getGrowthValue()); + 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); + wateringVO.setNextLevel(tem); + wateringVO.setTreeLevelType(x); + wateringVO.setGrowthValue(total1); + if (x>y){ + wateringVO.setIsNext(true); + NoticeRecord noticeRecord = new NoticeRecord(); + noticeRecord.setAppUserId(userId); + noticeRecord.setReadStatus(1); + noticeRecord.setNoticeType(1); + noticeRecord.setTitle("树苗升级通知"); + noticeRecord.setContent("恭喜,您的树苗已升至"+x+"级,"+"继续加油哦"); + noticeRecordService.save(noticeRecord); + } 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()); + 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(); } @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); + System.err.println("调用是否弹窗"+byId.getIsFirst()); if (byId.getIsFirst() == 1){ byId.setIsFirst(2); appUserService.updateById(byId); @@ -307,6 +457,79 @@ return R.ok(false); } } + @PostMapping("/userEnergyDetail") + @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"; + } + String userId = dto.getUid(); + EnergyVO energyVO = new EnergyVO(); + energyVO.setEnergyTotal(appUserService.getById(userId).getTotalEnergyValue()); + LambdaQueryWrapper<AppUserEnergyRecord> lambdaQueryWrapper = new LambdaQueryWrapper<>(); + if (dto.getChangeType()!=null){ + switch (dto.getChangeType()){ + case 1: + lambdaQueryWrapper.eq(AppUserEnergyRecord::getChangeType, 1); + break; + case 2: + lambdaQueryWrapper.eq(AppUserEnergyRecord::getChangeType, 2); + break; + } + } + 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); + if (CollUtils.isEmpty(page.getRecords())){ + PageDTO<AppUserEnergyRecordVO> empty = PageDTO.empty(page); + energyVO.setList(new ArrayList<AppUserEnergyRecordVO>()); + 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) { + Page<PrizeRedemptionRecord> page = prizeRedemptionRecordService.lambdaQuery() + .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); + return R.ok(empty); + } + PageDTO<ExchangeRecordVO> res = PageDTO.of(page, ExchangeRecordVO.class); + for (ExchangeRecordVO record : res.getList()) { + Prize temp = prizeService.lambdaQuery() + .eq(Prize::getId, record.getPrizeId()).one(); + if (temp != null){ + record.setName(temp.getName()); + record.setCoverUrl(temp.getCoverUrl()); + record.setWorth(temp.getWorth()); + record.setEnergyValue(temp.getEnergyValue()); + } + } + return R.ok(res); + } @PostMapping("/energyDetail") @ApiOperation(value = "能量值明细 ",tags = "树苗打卡站") @ApiImplicitParams({ @@ -314,9 +537,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<>(); @@ -335,11 +561,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 = "树苗打卡站") @@ -347,16 +573,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() @@ -364,10 +593,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 = "树苗打卡站") @@ -375,11 +606,14 @@ @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()){ + if (byId1.getTotalEnergyValue()<byId.getEnergyValue()){ return R.fail("能量值不足"); } PrizeRedemptionRecord one = prizeRedemptionRecordService.lambdaQuery() @@ -388,8 +622,21 @@ 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()); prizeRedemptionRecord.setPrizeId(prizeId); prizeRedemptionRecord.setAppUserId(userId); prizeRedemptionRecord.setCreateTime(LocalDateTime.now()); @@ -397,7 +644,8 @@ prizeRedemptionRecord.setCode(code); prizeRedemptionRecordService.save(prizeRedemptionRecord); // 随机生成6位纯数字验证码 - return R.ok(); + + return R.ok(code); } @PostMapping("/exchangeRecordList") @ApiOperation(value = "兑换记录 ",tags = "树苗打卡站") @@ -405,22 +653,23 @@ @ApiImplicitParam(name = "pageCurr", value = "分页参数,当前页码", dataType = "Integer", required = true), @ApiImplicitParam(name = "pageSize", value = "分页参数,每页数量", dataType = "Integer", required = true) }) - public R<PageDTO<ExchangeRecordVO>> exchangeRecordList(Integer pageCurr, Integer pageSize) { - Long userId = SecurityUtils.getUserId(); - if (userId==0)return R.tokenError("登录失效"); + public R<List<ExchangeRecordVO>> exchangeRecordList(Integer pageCurr, Integer pageSize) { + 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)); - if (CollUtils.isEmpty(page.getRecords())){ PageDTO<ExchangeRecordVO> empty = PageDTO.empty(page); - return R.ok(empty); + return R.ok(new ArrayList<ExchangeRecordVO>()); } 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()); @@ -428,7 +677,7 @@ record.setEnergyValue(temp.getEnergyValue()); } } - return R.ok(res); + return R.ok(res.getList()); } } -- Gitblit v1.7.1