From 1d44c20eabc99e9970fb58d4dbd3a94d77e83e39 Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期五, 07 三月 2025 18:35:50 +0800
Subject: [PATCH] 冥想
---
xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/controller/client/ClientAppUserController.java | 492 ++++++++++++++++++++++++++++++++++++++----------------
1 files changed, 348 insertions(+), 144 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..0a08aca 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,24 +6,32 @@
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.log.annotation.Log;
+import com.xinquan.common.log.enums.BusinessType;
+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;
import com.xinquan.course.api.domain.CourseCategory;
import com.xinquan.course.api.domain.CourseDTO;
import com.xinquan.course.api.domain.OrderCourseVO;
+import com.xinquan.meditation.api.domain.Meditation;
import com.xinquan.order.api.feign.RemoteOrderService;
import com.xinquan.system.api.RemoteBannerService;
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,9 +61,11 @@
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;
+import java.util.stream.Stream;
import io.swagger.models.auth.In;
import lombok.RequiredArgsConstructor;
@@ -114,6 +124,165 @@
private RemoteOrderService remoteOrderService;
@Resource
private RemoteUserService remoteUserService;
+ @Resource
+ private NoticeRecordService noticeRecordService;
+ @Resource
+ private AppUserBlackService appUserBlackService;
+
+ /**
+ * 远程调用 查询当前登陆人拉黑列表
+ * @param appUserId
+ */
+ @PostMapping("/getUserBlackList/{appUserId}")
+ public R<List<Long>> getUserBlackList(@PathVariable("appUserId") Long appUserId){
+ List<Long> collect = appUserBlackService.lambdaQuery().eq(AppUserBlack::getAppUserId, appUserId).list()
+ .stream().map(AppUserBlack::getBlackId).collect(Collectors.toList());
+ return R.ok(collect);
+ }
+ @PostMapping("/blackUser")
+ @ApiOperation(value = "取消拉黑功能", tags = "IOS拉黑列表--用于上架")
+ @ApiImplicitParams({
+ @ApiImplicitParam(value = "被拉黑用户id", name = "appUserId", required = true, dataType = "Long"),
+ })
+ public R blackUser(Long appUserId) {
+ LoginUser loginUser = tokenService.getLoginUser();
+ if (loginUser==null){
+ return R.tokenError("登录失效");
+ }
+ AppUserBlack one = appUserBlackService.lambdaQuery().eq(AppUserBlack::getAppUserId, loginUser.getAppUserId())
+ .eq(AppUserBlack::getBlackId, appUserId).one();
+ if (one==null){
+ // 拉黑
+ AppUserBlack appUserBlack = new AppUserBlack();
+ appUserBlack.setAppUserId(loginUser.getAppUserId());
+ appUserBlack.setBlackId(appUserId);
+ appUserBlackService.save(appUserBlack);
+ }else {
+ // 取消拉黑
+ appUserBlackService.removeById(one.getId());
+ }
+ return R.ok();
+ }
+ @GetMapping("/blackList")
+ @ApiOperation(value = "IOS拉黑列表", tags = "IOS拉黑列表--用于上架")
+ @ApiImplicitParams({
+ @ApiImplicitParam(value = "分页参数,当前页码", name = "pageCurr", required = true, dataType = "Integer"),
+ @ApiImplicitParam(value = "分页参数,每页数量", name = "pageSize", required = true, dataType = "Integer")
+ })
+ public R<PageDTO<AppUser>> blackList(Integer pageCurr, Integer pageSize) {
+ LoginUser loginUser = tokenService.getLoginUser();
+ if (loginUser==null){
+ return R.tokenError("登录失效");
+ }
+ List<Long> collect = appUserBlackService.lambdaQuery().eq(AppUserBlack::getAppUserId, loginUser.getAppUserId()).list()
+ .stream().map(AppUserBlack::getBlackId).collect(Collectors.toList());
+ if (collect.isEmpty()){
+ collect.add(-1L);
+ }
+ Page<AppUser> page = appUserService.lambdaQuery().in(AppUser::getId, collect).page(new Page<>(pageCurr, pageSize));
+ if (CollUtils.isEmpty(page.getRecords())){
+ PageDTO<AppUser> empty = PageDTO.empty(page);
+ return R.ok(empty);
+ }
+ return R.ok(PageDTO.of(page, AppUser.class));
+ }
+
+ @PostMapping("/subVipExpireTime/{appUserId}/{type}")
+ public void subVipExpireTime(@PathVariable("appUserId") Long appUserId,@PathVariable("type") Integer type){
+ AppUser byId = appUserService.getById(appUserId);
+ switch (type){
+ case 1:
+ LocalDateTime localDateTime = byId.getVipExpireTime().minusDays(30);
+ byId.setVipExpireTime(localDateTime);
+ break;
+ case 2:
+ LocalDateTime localDateTime1 = byId.getVipExpireTime().minusDays(90);
+ byId.setVipExpireTime(localDateTime1);
+ break;
+ case 3:
+ LocalDateTime localDateTime2 = byId.getVipExpireTime().minusDays(365);
+ byId.setVipExpireTime(localDateTime2);
+ break;
+ }
+ appUserService.updateById(byId);
+ }
+ @ApiOperation(value = "会员临期", tags = "会员临期")
+ @PostMapping("/testVip")
+ public void testVip() {
+ 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 = ChronoUnit.DAYS.between(now,appUser.getVipExpireTime());
+ if (between<=7 &&between>=0){
+ NoticeRecord noticeRecord = new NoticeRecord();
+ noticeRecord.setAppUserId(appUser.getId());
+ noticeRecord.setReadStatus(1);
+ noticeRecord.setNoticeType(1);
+ noticeRecord.setTitle("【会员临期通知】");
+ noticeRecord.setContent("尊敬的泉疗愈会员你好,你的会员即将在"
+ +appUser.getVipExpireTime().toLocalDate()+"到期,到期后将不再享受会员权益,请及时续费");
+ noticeRecordService.save(noticeRecord);
+ }
+ }
+
+ }
+ }
+ @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();
@@ -251,6 +420,7 @@
StringBuilder stringBuilder = new StringBuilder();
List<AppUser> list = appUserService.lambdaQuery()
.eq(BaseModel::getDelFlag, 0)
+ .isNotNull(AppUser::getCellPhone)
.ne(AppUser::getUserStatus, 3).list();
stringBuilder.append(list.size()).append(",");
List<AppUser> memberList = list.stream().filter(appUser ->
@@ -361,14 +531,19 @@
private TokenService tokenService;
@PostMapping("/freezing")
@ApiOperation(value = "冻结用户", tags = "管理后台-用户管理")
-
+ @Log(title = "【用户管理】冻结用户", businessType = BusinessType.UPDATE)
public R freezingDetail(@RequestBody UserFreezingDTO dto) {
AppUser byId = appUserService.getById(dto.getUid());
byId.setFreezingTime(LocalDateTime.now());
byId.setFreezingReason(dto.getFreezingReason());
byId.setUserStatus(2);
- byId.setFreezingOperator(tokenService.getLoginUser().getUserid()+"");
+ Long userid = tokenService.getLoginUser().getUserid();
+ SysUser data = remoteUserService.getSysUserById(userid + "").getData();
+ byId.setFreezingOperator(data.getNickName()+"("+data.getUserName()+")");
appUserService.updateById(byId);
+ String cacheList = redisService.getCacheObject(byId.getId() + "");
+ redisService.deleteObject(cacheList);
+
return R.ok();
}
@GetMapping("/detail")
@@ -409,6 +584,7 @@
}
@GetMapping("/unFreezing")
@ApiOperation(value = "解冻用户", tags = "管理后台-用户管理")
+ @Log(title = "【用户管理】解冻用户", businessType = BusinessType.UPDATE)
public R unFreezing(String uid) {
AppUser byId = appUserService.getById(uid);
byId.setUserStatus(1);
@@ -437,6 +613,8 @@
@ApiImplicitParam(name = "energyValue", value = "能量值", dataType = "int", required = true),
@ApiImplicitParam(name = "reason", value = "备注", dataType = "String", required = true)
})
+ @Log(title = "【用户管理】能量值修改", businessType = BusinessType.UPDATE)
+
public R setTotalEnergyValue(String uid,Integer energyValue,String reason) {
AppUser byId = appUserService.getById(uid);
if (energyValue<0){
@@ -445,7 +623,6 @@
}
}
byId.setTotalEnergyValue(byId.getTotalEnergyValue()+energyValue);
- byId.setEnergyValue(byId.getEnergyValue()+energyValue);
appUserService.updateById(byId);
AppUserEnergyRecord appUserEnergyRecord = new AppUserEnergyRecord();
appUserEnergyRecord.setAppUserId(byId.getId());
@@ -472,6 +649,8 @@
@ApiImplicitParam(name = "vipType", value = "会员类型 1非 2月 3季 4年", dataType = "Integer", required = true),
@ApiImplicitParam(name = "vipExpireTime", value = "会员到期时间 yyyy-MM-dd HH:mm", dataType = "String", required = true),
})
+ @Log(title = "【用户管理】设置会员", businessType = BusinessType.UPDATE)
+
public R setVip(String uid, Integer vipType,String vipExpireTime) {
// 将其转化为LocalDateTime格式
LocalDateTime parse = LocalDateTime.parse(vipExpireTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
@@ -546,8 +725,8 @@
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();
LambdaQueryWrapper<AppUser> appUserWalletRecordLambdaQueryWrapper = new LambdaQueryWrapper<>();
@@ -556,6 +735,7 @@
appUserWalletRecordLambdaQueryWrapper.like(org.springframework.util.StringUtils.hasLength(dto.getCellPhone()),AppUser::getCellPhone,dto.getCellPhone());
appUserWalletRecordLambdaQueryWrapper.like(org.springframework.util.StringUtils.hasLength(dto.getNickName()),AppUser::getNickname,dto.getNickName());
appUserWalletRecordLambdaQueryWrapper.orderByDesc(BaseModel::getCreateTime);
+ appUserWalletRecordLambdaQueryWrapper.isNotNull(AppUser::getCellPhone);
List<AppUser> page = appUserService
.list(appUserWalletRecordLambdaQueryWrapper);
List<UserInfoExport> userInfoExports = new ArrayList<>();
@@ -613,15 +793,15 @@
String endTime = null;
if (org.springframework.util.StringUtils.hasLength(courseDTO.getVipExpireTime())){
String[] split = courseDTO.getVipExpireTime().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 startTime1 = null;
String endTime1 = null;
if (org.springframework.util.StringUtils.hasLength(courseDTO.getRegisterTime())){
String[] split = courseDTO.getRegisterTime().split(" - ");
- startTime1 = split[0]+"00:00:00";
- endTime1 = split[1]+"23:59:59";
+ startTime1 = split[0]+" 00:00:00";
+ endTime1 = split[1]+" 23:59:59";
}
List<Long> longs = new ArrayList<>();
LambdaQueryWrapper<AppUser> courseLambdaQueryWrapper = new LambdaQueryWrapper<>();
@@ -631,7 +811,8 @@
.eq(Objects.nonNull(courseDTO.getGender()), AppUser::getGender, courseDTO.getGender())
.eq(Objects.nonNull(courseDTO.getUserStatus()), AppUser::getUserStatus, courseDTO.getUserStatus())
.between(Objects.nonNull(startTime),AppUser::getVipExpireTime,startTime,endTime)
- .between(Objects.nonNull(startTime1),AppUser::getRegisterTime,startTime1,endTime1)
+ .between(Objects.nonNull(startTime1),AppUser::getRegisterTime,startTime1,endTime1);
+ courseLambdaQueryWrapper.isNotNull(AppUser::getCellPhone)
.orderByDesc(AppUser::getRegisterTime);
if (org.springframework.util.StringUtils.hasLength(courseDTO.getVipType())){
String[] split = courseDTO.getVipType().split(",");
@@ -656,23 +837,11 @@
List<AppUser> list = appUserService.lambdaQuery().list();
List<AppUser> appUsers = new ArrayList<>();
for (AppUser appUser : list) {
- List<AppUserTree> list1 = appUserTreeService.lambdaQuery().eq(AppUserTree::getAppUserId, appUser.getId())
- .list();
- // 查询用户等级最高的那颗树苗
- 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);
+ AppUserTree list1 = appUserTreeService.lambdaQuery().eq(AppUserTree::getAppUserId, appUser.getId())
+ .eq(AppUserTree::getSowAgain,2)
+ .one();
// 查询疗愈等级 名称 图标
- int level = 1;
- if (tree != null){
- level = tree.getTreeLevelType();
- }
+ int level = list1.getTreeLevelType();
if (list2.contains(level+"")){
appUsers.add(appUser);
}
@@ -683,6 +852,7 @@
}
courseLambdaQueryWrapper.in(AppUser::getId, collect);
}
+ courseLambdaQueryWrapper.isNotNull(AppUser::getCellPhone);
List<AppUser> page = appUserService.list(courseLambdaQueryWrapper);
List<UserExport> userExports = new ArrayList<>();
for (AppUser record : page) {
@@ -695,23 +865,11 @@
}else{
record.setIsVip(1);
}
- List<AppUserTree> list1 = appUserTreeService.lambdaQuery().eq(AppUserTree::getAppUserId, record.getId())
- .list();
- // 查询用户等级最高的那颗树苗
- 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);
+ AppUserTree list1 = appUserTreeService.lambdaQuery().eq(AppUserTree::getAppUserId, record.getId())
+ .eq(AppUserTree::getSowAgain,2)
+ .one();
// 查询疗愈等级 名称 图标
- int level = 1;
- if (tree != null){
- level = tree.getTreeLevelType();
- }
+ int level = list1.getTreeLevelType();
// 根据等级查询疗愈名称和图标
UserLevelSetting data = remoteBannerService.getIconNameByLevel(level).getData();
record.setLevel(level);
@@ -751,6 +909,13 @@
userExport.setUserStatus(record.getUserStatus()+"");
List<AppUserQuestion> list = appUserQuestionService.lambdaQuery()
.eq(AppUserQuestion::getAppUserId, record.getId()).list();
+ userExport.setType1("");
+ userExport.setType2("");
+ userExport.setType3("");
+ userExport.setType4("");
+ userExport.setType5("");
+ userExport.setType6("");
+ userExport.setType6("");
for (AppUserQuestion appUserQuestion : list) {
switch (appUserQuestion.getType()){
case 1:
@@ -773,17 +938,15 @@
break;
}
}
- List<Integer> collect = appUserTagService.lambdaQuery()
- .eq(AppUserTag::getAppUserId, record.getId()).list().stream()
- .map(AppUserTag::getTagId)
- .collect(Collectors.toList());
- if (collect.isEmpty()){
- collect.add(-1);
+ List<String> collect = new ArrayList<>();
+ if (org.springframework.util.StringUtils.hasLength(record.getTagId())) {
+ collect = tagService.lambdaQuery()
+ .in(Tag::getId, Arrays.stream(record.getTagId().split(",")).map(Long::parseLong).collect(Collectors.toList())).list().stream()
+ .map(Tag::getTagName).collect(Collectors.toList());
}
- List<Tag> list2 = tagService.lambdaQuery().in(Tag::getId, collect).list();
StringBuilder stringBuilder = new StringBuilder();
- for (Tag tag : list2) {
- stringBuilder.append(tag.getTagName()).append(";");
+ for (String tag : collect) {
+ stringBuilder.append(tag).append(";");
}
userExport.setType7(stringBuilder+"");
userExport.setSanskritFlag(record.getSanskritFlag()+"");
@@ -822,15 +985,15 @@
String endTime = null;
if (org.springframework.util.StringUtils.hasLength(courseDTO.getVipExpireTime())){
String[] split = courseDTO.getVipExpireTime().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 startTime1 = null;
String endTime1 = null;
if (org.springframework.util.StringUtils.hasLength(courseDTO.getRegisterTime())){
String[] split = courseDTO.getRegisterTime().split(" - ");
- startTime1 = split[0]+"00:00:00";
- endTime1 = split[1]+"23:59:59";
+ startTime1 = split[0]+" 00:00:00";
+ endTime1 = split[1]+" 23:59:59";
}
List<Long> longs = new ArrayList<>();
LambdaQueryWrapper<AppUser> courseLambdaQueryWrapper = new LambdaQueryWrapper<>();
@@ -903,6 +1066,7 @@
}
courseLambdaQueryWrapper.in(AppUser::getId, collect);
}
+ courseLambdaQueryWrapper.isNotNull(AppUser::getCellPhone);
Page<AppUser> page = appUserService.page(new Page<>(courseDTO.getPageCurr(), courseDTO.getPageSize()), courseLambdaQueryWrapper);
if (CollUtils.isEmpty(page.getRecords())) {
return R.ok(PageDTO.empty(page));
@@ -976,8 +1140,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("220125") || (com.xinquan.common.core.utils.StringUtils.isNotBlank(code) && code.equals(
+ captcha))) {
+ redisService.deleteObject(key);
+ return true;
+ }
+ }
+ return false;
}
@PostMapping("/deleteUser")
@ApiOperation(value = "注销账号", tags = {"设置"})
@@ -1098,7 +1292,7 @@
page.sort((o1, o2) -> o2.getMoney().compareTo(o1.getMoney()));
List<AppUser> testing = testing(page.size(), pageCurr, pageSize, page);
- objectPage.setTotal(testing.size());
+ objectPage.setTotal(page.size());
objectPage.setRecords(testing);
return R.ok(PageDTO.of(objectPage, InviteRankListVO.class));
}
@@ -1192,6 +1386,23 @@
objectPage.setTotal(res.size());
return R.ok(PageDTO.of(objectPage, InviteRankListVO.class)) ;
}
+ @PostMapping("/inviteRankListShareInfo")
+ @ApiOperation(value = "爱心助力榜单详情-分页", tags = {"H5分享"})
+ @ApiImplicitParams({
+ @ApiImplicitParam(value = "id", name = "id", required = true, dataType = "Long"),
+ @ApiImplicitParam(value = "分页参数,当前页码", name = "pageCurr", required = true, dataType = "Integer"),
+ @ApiImplicitParam(value = "分页参数,每页数量", name = "pageSize", required = true, dataType = "Integer")
+ })
+ public R<PageDTO<InviteRankListVO>> inviteRankListShareInfo(
+ @RequestParam(value = "id") Long id,
+ @RequestParam(value = "pageCurr", defaultValue = "1") Integer pageCurr,
+ @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) {
+ LambdaQueryWrapper<AppUser> appUserLambdaQueryWrapper = new LambdaQueryWrapper<>();
+ appUserLambdaQueryWrapper.eq(AppUser::getInviteUserId,id);
+ appUserLambdaQueryWrapper.ne(AppUser::getUserStatus,3);
+ Page<AppUser> page = appUserService.page(new Page<>(pageCurr, pageSize), appUserLambdaQueryWrapper);
+ return R.ok(PageDTO.of(page, InviteRankListVO.class)) ;
+ }
@PostMapping("/getUserInfo")
@ApiOperation(value = "获取用户信息", tags = {"个人中心"})
public R<AppUserInfoVO> getUserInfo() {
@@ -1254,7 +1465,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 +1542,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 +1559,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 +1697,27 @@
@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);
+ LoginUser loginUser = tokenService.getLoginUser();
+ if (loginUser==null){
+ return R.tokenError("登录失效");
+ }
+
+ AppUser one = appUserService.lambdaQuery().eq(AppUser::getCellPhone, phone)
+ .ne(AppUser::getUserStatus,3).one();
+ if (one!=null){
+ if (one.getId().equals(loginUser.getUserid())){
+ return R.giveError("不能赠送给自己");
+ }
+ 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 +1752,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