From c5857a50d688d0c42b3893854e6f30dc45e61ca9 Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期一, 11 十一月 2024 22:32:12 +0800
Subject: [PATCH] 代码提交
---
xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/controller/client/ClientAppUserController.java | 253 +++++++++++++++++++++++++++++++++-----------------
1 files changed, 165 insertions(+), 88 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 2450289..dd51e8c 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
@@ -6,13 +6,17 @@
import com.alibaba.nacos.common.utils.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.xinquan.common.core.constant.CacheConstants;
import com.xinquan.common.core.domain.R;
+import com.xinquan.common.core.exception.ServiceException;
import com.xinquan.common.core.utils.WebUtils;
import com.xinquan.common.core.utils.page.BeanUtils;
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.redis.service.RedisService;
import com.xinquan.common.security.service.TokenService;
import com.xinquan.common.security.utils.SecurityUtils;
import com.xinquan.course.api.domain.Course;
@@ -24,6 +28,7 @@
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;
@@ -53,6 +58,7 @@
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;
@@ -114,6 +120,62 @@
private RemoteOrderService remoteOrderService;
@Resource
private RemoteUserService remoteUserService;
+ @Resource
+ private NoticeRecordService noticeRecordService;
+ @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)
+ .one();
+ return R.ok(one);
+ }
@GetMapping("/getAllUserList")
public R<List<AppUser>> getAllUserList() {
List<AppUser> list = appUserService.list();
@@ -976,8 +1038,38 @@
return R.tokenError("登录失效");
}
Long userId = loginUser.getUserid();
-
+ // 校验验证码
+ if (!verifyCaptcha(phone, code,
+ CacheConstants.APP_CHANGE_PHONE_CODE_PREFIX)) {
+ 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();
+ }
+
+ @Autowired
+ private RedisService redisService;
+ private boolean verifyCaptcha(String cellPhone, String captcha, String keyPrefix) {
+
+ if (com.xinquan.common.core.utils.StringUtils.isNotBlank(cellPhone) && com.xinquan.common.core.utils.StringUtils.isNotBlank(captcha)) {
+ String key = keyPrefix + cellPhone;
+ String code = redisService.getCacheObject(key);
+ // 万能验证码
+ if (captcha.equals("123456") || (com.xinquan.common.core.utils.StringUtils.isNotBlank(code) && code.equals(
+ captcha))) {
+ redisService.deleteObject(key);
+ return true;
+ }
+ }
+ return false;
}
@PostMapping("/deleteUser")
@ApiOperation(value = "注销账号", tags = {"设置"})
@@ -1254,7 +1346,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();
@@ -1331,13 +1423,15 @@
consecutiveDays++;
currentDate = currentDate.minusDays(1);
}
- appUser.setToday(consecutiveDays);
+ appUser.setContinuity(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() {
@@ -1346,88 +1440,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);
@@ -1503,13 +1578,19 @@
@PostMapping("/getUserByPhone")
@ApiOperation(value = "根据用户手机号查询用户信息")
public R<AppUserDetailVO> getCurrentUser(String phone) {
- AppUser one = appUserService.lambdaQuery().eq(AppUser::getCellPhone, phone).one();
- AppUserDetailVO appUserDetailVO = new AppUserDetailVO();
- appUserDetailVO.setId(one.getId());
- appUserDetailVO.setCellPhone(one.getCellPhone());
- appUserDetailVO.setAvatar(one.getAvatar());
- appUserDetailVO.setNickname(one.getNickname());
- return R.ok(appUserDetailVO);
+ AppUser one = appUserService.lambdaQuery().eq(AppUser::getCellPhone, phone)
+ .ne(AppUser::getUserStatus,3).one();
+ if (one!=null){
+ AppUserDetailVO appUserDetailVO = new AppUserDetailVO();
+ appUserDetailVO.setId(one.getId());
+ appUserDetailVO.setCellPhone(one.getCellPhone());
+ appUserDetailVO.setAvatar(one.getAvatar());
+ appUserDetailVO.setNickname(one.getNickname());
+ return R.ok(appUserDetailVO);
+
+ }else {
+ return R.fail("未查询到账户信息");
+ }
}
@PostMapping("/getUserBalance")
@ApiOperation(value = "查询当前用户余额")
@@ -1544,11 +1625,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