From 3f481005be717250a2ea87ff9367aa84d6a3eb13 Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期六, 14 九月 2024 10:55:52 +0800
Subject: [PATCH] 课程代码
---
xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/controller/client/ClientAppUserController.java | 261 ++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 254 insertions(+), 7 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 078516d..9ebadda 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
@@ -1,22 +1,47 @@
package com.xinquan.user.controller.client;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.xinquan.common.core.domain.R;
+import com.xinquan.common.core.utils.page.BeanUtils;
+import com.xinquan.common.core.utils.page.PageDTO;
+import com.xinquan.common.core.web.domain.BaseModel;
+import com.xinquan.common.security.utils.SecurityUtils;
+import com.xinquan.order.api.feign.RemoteOrderService;
+import com.xinquan.system.api.RemoteBannerService;
+import com.xinquan.system.api.domain.AppUser;
+import com.xinquan.system.api.domain.AppUserTree;
+import com.xinquan.system.api.domain.AppUserViewingHistory;
+import com.xinquan.system.api.domain.UserLevelSetting;
+import com.xinquan.system.api.domain.vo.*;
import com.xinquan.user.domain.dto.UserAnswerDTO;
-import com.xinquan.user.domain.vo.AppUserVO;
import com.xinquan.user.domain.vo.TagVO;
import com.xinquan.user.service.AppUserService;
+import com.xinquan.user.service.AppUserTreeService;
+import com.xinquan.user.service.AppUserViewingHistoryService;
import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.HashSet;
import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
+
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+import static com.xinquan.common.core.enums.TreeLevelEnum.TOWERING_TREES;
/**
* <p>
@@ -34,12 +59,208 @@
public class ClientAppUserController {
private final AppUserService appUserService;
+ @Resource
+ private AppUserViewingHistoryService appUserViewingHistoryService;
+ @Resource
+ private AppUserTreeService appUserTreeService;
+ @Resource
+ private RemoteBannerService remoteBannerService;
+ @Resource
+ private RemoteOrderService remoteOrderService;
+ public static void main(String[] args) {
+ LocalDateTime dateTime = LocalDateTime.now();
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+ String formattedDateTime = dateTime.format(formatter);
+ System.err.println(formattedDateTime);
+ }
+ /**
+ * 爱心助力榜单-分页
+ *
+ * @param pageCurr 分页参数,当前页码
+ * @param pageSize 分页参数,每页数量
+ * @return 课程分页列表
+ */
+ @PostMapping("/myInviteRankList")
+ @ApiOperation(value = "我的助力-分页", tags = {"个人中心"})
+ @ApiImplicitParams({
+ @ApiImplicitParam(value = "分页参数,当前页码", name = "pageCurr", required = true, dataType = "Integer"),
+ @ApiImplicitParam(value = "分页参数,每页数量", name = "pageSize", required = true, dataType = "Integer")
+ })
+ public R<PageDTO<InviteRankListVO>> myInviteRankList(
+ @RequestParam(value = "pageCurr", defaultValue = "1") Integer pageCurr,
+ @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) {
+ Long userId = SecurityUtils.getUserId();
+ if (userId == 0)return R.tokenError("登录失效");
+ Page<AppUser> page = appUserService.lambdaQuery().ne(AppUser::getUserStatus, 3)
+ .eq(AppUser::getInviteUserId, userId)
+ .page(new Page<>(pageCurr, pageSize));
+ // 查询登录用户邀请了哪些人
+ List<Long> collect = page.getRecords().stream().map(AppUser::getId).collect(Collectors.toList());
+ if (collect.isEmpty())return R.ok(PageDTO.empty(page));
+ StringBuilder stringBuilder = new StringBuilder();
+ collect.forEach(id -> stringBuilder.append(id).append(","));
+ // 去除最后一位
+ StringBuilder stringBuilder1 = stringBuilder.deleteCharAt(stringBuilder.length() - 1);
+ String[] split = stringBuilder1.toString().split(",");
+ for (int i = 0; i < page.getRecords().size(); i++) {
+ AppUser appUser = page.getRecords().get(i);
+ appUser.setMoney(new BigDecimal(split[i]));
+ }
+ // 根据佣金金额 从大到小排序
+ page.getRecords().sort((o1, o2) -> o2.getMoney().compareTo(o1.getMoney()));
+ return R.ok(PageDTO.of(page, InviteRankListVO.class));
+ }
+ /**
+ * 爱心助力榜单-分页
+ *
+ * @param pageCurr 分页参数,当前页码
+ * @param pageSize 分页参数,每页数量
+ * @return 课程分页列表
+ */
+ @PostMapping("/inviteRankList")
+ @ApiOperation(value = "爱心助力榜单-分页", tags = {"个人中心"})
+ @ApiImplicitParams({
+ @ApiImplicitParam(value = "分页参数,当前页码", name = "pageCurr", required = true, dataType = "Integer"),
+ @ApiImplicitParam(value = "分页参数,每页数量", name = "pageSize", required = true, dataType = "Integer")
+ })
+ public R<PageDTO<InviteRankListVO>> inviteRankList(
+ @RequestParam(value = "pageCurr", defaultValue = "1") Integer pageCurr,
+ @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) {
+ Page<AppUser> page = appUserService.lambdaQuery().ne(AppUser::getUserStatus, 3)
+ .page(new Page<>(pageCurr, pageSize));
+ for (AppUser appUser : page.getRecords()) {
+ int size = appUserService.lambdaQuery().ne(AppUser::getUserStatus, 3)
+ .eq(AppUser::getInviteUserId, appUser.getId())
+ .list().size();
+ appUser.setCount(size);
+ }
+ // 根据帮助人数 从大到小排序
+ page.getRecords().sort((o1, o2) -> o2.getCount() - o1.getCount());
+ return R.ok(PageDTO.of(page, InviteRankListVO.class)) ;
+ }
+ @PostMapping("/getUserInfo")
+ @ApiOperation(value = "获取用户信息", tags = {"个人中心"})
+ public R<AppUserInfoVO> getUserInfo() {
+ Long userId = SecurityUtils.getUserId();
+ if (userId == 0)return R.tokenError("登录失效");
+ AppUserInfoVO appUserInfoVO = new AppUserInfoVO();
+ AppUserVO currentUser = appUserService.getCurrentUser();
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+ if (currentUser.getVipExpireTime() == null){
+ appUserInfoVO.setIsVip(2);
+ }else if (currentUser.getVipExpireTime().isAfter(LocalDateTime.now())){
+ appUserInfoVO.setIsVip(1);
+ String formattedDateTime =currentUser.getVipExpireTime().format(formatter);
+ appUserInfoVO.setVipExpireTime(formattedDateTime);
+ }else{
+ String formattedDateTime =currentUser.getVipExpireTime().format(formatter);
+ appUserInfoVO.setVipExpireTime(formattedDateTime);
+ appUserInfoVO.setIsVip(2);
+ }
+ // 查询用户累计学习天数
+ List<AppUserViewingHistory> com = appUserViewingHistoryService.cumulative(userId);
+ appUserInfoVO.setCumulative(com.size());
+ // 查询用户今日学习多少分钟
+ int temp = appUserViewingHistoryService.today(userId);
+ if (temp == 0){
+ appUserInfoVO.setToday(0);
+ }else if (temp<60){
+ // 不足一分钟按一分钟计算
+ appUserInfoVO.setToday(1);
+ }else{
+ appUserInfoVO.setToday(temp/60);
+ }
+ // 查询用户连续观看天数
+ List<AppUserViewingHistory> list = appUserViewingHistoryService.lambdaQuery().eq(AppUserViewingHistory::getAppUserId, userId)
+ .eq(AppUserViewingHistory::getViewingType, 1)
+ .orderByDesc(BaseModel::getCreateTime).list();
+ Set<LocalDate> viewingDates = list.stream()
+ .map(record -> LocalDate.parse(record.getCreateTime().toLocalDate().toString(), formatter))
+ .collect(Collectors.toCollection(HashSet::new));
+ // 获取今天的日期
+ LocalDate today = LocalDate.now();
+ // 计算连续观看天数
+ int consecutiveDays = 0;
+ LocalDate currentDate = today;
+ // 如果今天没有观看 也进入循环判断
+ while (viewingDates.contains(currentDate)||LocalDate.parse(currentDate.toString(), formatter).equals(today)) {
+ if (!viewingDates.contains(currentDate)){
+ // 如果今天没有观看
+ currentDate = currentDate.minusDays(1);
+ continue;
+ }
+ consecutiveDays++;
+ currentDate = currentDate.minusDays(1);
+ }
+ appUserInfoVO.setToday(consecutiveDays);
+ List<AppUserTree> list1 = appUserTreeService.lambdaQuery().eq(AppUserTree::getAppUserId, userId)
+ .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);
+ // 查询疗愈等级 名称 图标
+ int level = 1;
+ if (tree != null){
+ level = tree.getTreeLevelType();
+ }
+ appUserInfoVO.setLevel(level);
+ // 根据等级查询疗愈名称和图标
+ UserLevelSetting data = remoteBannerService.getIconNameByLevel(level).getData();
+ appUserInfoVO.setLevelName(data.getLevelName());
+ appUserInfoVO.setLevelIcon(data.getLevelIcon());
+ return R.ok(appUserInfoVO);
+ }
+ @PostMapping("/getUserDetail")
+ @ApiOperation(value = "获取个人资料", tags = {"个人中心"})
+ public R<AppUser> getUserDetail() {
+ Long userId = SecurityUtils.getUserId();
+ if (userId == 0)return R.tokenError("登录失效");
+ AppUser appUser = appUserService.lambdaQuery().eq(AppUser::getId, userId).one();
+ return R.ok(appUser);
+ }
+ @PostMapping("/getTotalEnergyValue")
+ @ApiOperation(value = "获取用户当前累计能量值",tags = "树苗打卡站")
+ public R getTotalEnergyValue() {
+ Long userId = SecurityUtils.getUserId();
+ if (userId==0)return R.tokenError("登录失效");
+ AppUser byId = appUserService.getById(userId);
+ return R.ok(byId.getTotalEnergyValue());
+ }
+ @PostMapping("/updateUserDetail")
+ @ApiOperation(value = "修改个人资料", tags = {"个人中心"})
+ public R<AppUser> updateUserDetail(UpdateAppUserDTO dto) {
+ Long userId = SecurityUtils.getUserId();
+ if (userId == 0)return R.tokenError("登录失效");
+ AppUser byId = appUserService.getById(userId);
+ BeanUtils.copyProperties(dto, byId);
+// LambdaUpdateWrapper<AppUser> updateWrapper = new LambdaUpdateWrapper<>(AppUser.class);
+// updateWrapper.set(AppUser::getNickname, byId.getNickname());
+// updateWrapper.set(AppUser::getSignature, byId.getSignature());
+// updateWrapper.set(AppUser::getAvatar, byId.getAvatar());
+// updateWrapper.set(AppUser::getGender, byId.getGender());
+// updateWrapper.set(AppUser::getBirthday, byId.getBirthday());
+// updateWrapper.set(AppUser::getEducation, byId.getEducation());
+// updateWrapper.set(AppUser::getIndustry, byId.getIndustry());
+// updateWrapper.set(AppUser::getCompany, byId.getCompany());
+// updateWrapper.set(AppUser::getOccupation, byId.getOccupation());
+// updateWrapper.set(AppUser::getLocation, byId.getLocation());
+// updateWrapper.set(AppUser::getHometown, byId.getHometown());
+// appUserService.update(byId, )
+ return R.ok();
+ }
/**
* 获取当前登录用户信息
*
* @return 用户信息
- * @see com.xinquan.user.domain.vo.AppUserVO
+ * @see AppUserVO
*/
@PostMapping("/getCurrentUser")
@ApiOperation(value = "获取当前用户信息", tags = {"用户端-用户信息相关接口"})
@@ -48,6 +269,32 @@
}
/**
+ * 通过手机号查询用户端用户信息
+ *
+ * @return 用户信息
+ * @see AppUserVO
+ */
+ @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);
+ }
+ @PostMapping("/getUserBalance")
+ @ApiOperation(value = "查询当前用户余额")
+ public R<String> getUserBalance() {
+ Long userId = SecurityUtils.getUserId();
+ if (userId == 0)return R.tokenError("登录失效");
+ AppUser one = appUserService.lambdaQuery().eq(AppUser::getUserId, userId).one();
+ return R.ok(one.getBalance().toString());
+ }
+
+ /**
* 获取问题二的标签列表
*
* @return List<TagVO>
--
Gitblit v1.7.1