package com.xinquan.user.controller.client;
|
|
|
import com.xinquan.common.core.domain.R;
|
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.domain.AppUser;
|
import com.xinquan.system.api.domain.AppUserTree;
|
import com.xinquan.system.api.domain.AppUserViewingHistory;
|
import com.xinquan.system.api.domain.vo.AppUserVO;
|
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 io.swagger.models.auth.In;
|
import lombok.Data;
|
import lombok.RequiredArgsConstructor;
|
import org.springframework.web.bind.annotation.*;
|
|
import javax.annotation.Resource;
|
import java.time.LocalDateTime;
|
import java.time.LocalTime;
|
import java.util.Date;
|
import java.util.List;
|
|
/**
|
* <p>
|
* 用户观看历史 前端控制器
|
* </p>
|
*
|
* @author mitao
|
* @since 2024-09-06
|
*/
|
@Api(tags = {"用户端-观看历史相关接口"})
|
@RestController
|
@RequiredArgsConstructor
|
@RequestMapping("/user/app-user-viewing-history")
|
public class ClientAppUserViewingHistoryController {
|
|
private final AppUserViewingHistoryService appUserViewingHistoryService;
|
@Resource
|
private TokenService tokenService;
|
@Resource
|
private AppUserTreeService appUserTreeService;
|
@Resource
|
private AppUserService appUserService;
|
/**
|
* 记录用户观看记录
|
*
|
* @param bizId 业务id
|
* @param viewingType 观看类型 1=疗愈 2=课程
|
*/
|
@PostMapping("/saveViewingHistory")
|
@ApiOperation(value = "记录用户观看冥想记录", tags = {"用户端-用户相关接口"})
|
@ApiImplicitParams({
|
@ApiImplicitParam(name = "id", value = "冥想id", dataType = "Long", required = true),
|
@ApiImplicitParam(name = "timeLook", value = "播放时长单位秒", dataType = "Integer", required = true)
|
})
|
public R<?> saveViewingRecord(@RequestParam("id") Long id,
|
@RequestParam("timeLook") Integer timeLook) {
|
Long userId = SecurityUtils.getUserId();
|
if (userId == 0)return R.tokenError("登录失效");
|
AppUser byId = appUserService.getById(userId);
|
|
AppUserViewingHistory appUserViewingHistory = new AppUserViewingHistory();
|
appUserViewingHistory.setAppUserId(userId);
|
appUserViewingHistory.setBizId(id);
|
appUserViewingHistory.setViewingType(1);
|
appUserViewingHistory.setTimeLook(timeLook);
|
appUserViewingHistory.setCreateTime(LocalDateTime.now());
|
appUserViewingHistoryService.save(appUserViewingHistory);
|
// 查询用户今日观看了多久冥想 如果达到30分钟 用户能量+10 如果达到60分钟 用户能量额外增加20
|
// 查询用户今日观看疗愈多少秒
|
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 appUserViewingHistory1 : list) {
|
temp += appUserViewingHistory1.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 (temp>=60){
|
byId.setEnergyValue(byId.getEnergyValue()+30);
|
}
|
else if (temp>=30){
|
byId.setEnergyValue(byId.getEnergyValue()+10);
|
}
|
appUserService.updateById(byId);
|
appUserTreeService.save(appUserTree);
|
}else{
|
if (temp>=60){
|
byId.setEnergyValue(byId.getEnergyValue()+30);
|
}
|
else if (temp>=30){
|
byId.setEnergyValue(byId.getEnergyValue()+10);
|
}
|
appUserService.updateById(byId);
|
appUserTreeService.updateById(one);
|
}
|
return R.ok();
|
}
|
@PostMapping("/saveCourseStudyHistory")
|
@ApiOperation(value = "记录用户观看课程记录", tags = {"用户端-用户相关接口"})
|
@ApiImplicitParams({
|
@ApiImplicitParam(name = "chapterId", value = "章节id", dataType = "Long", required = true),
|
@ApiImplicitParam(name = "isOver", value = "是否观看完成 1是2否", dataType = "int", required = true),
|
@ApiImplicitParam(name = "minuteLook", value = "观看到xx分钟", dataType = "int", required = true),
|
@ApiImplicitParam(name = "secondLook", value = "观看到xx秒", dataType = "int", required = true),
|
})
|
public R<?> saveCourseStudyHistory(@RequestParam("chapterId") Long chapterId,
|
@RequestParam("minuteLook") Integer minuteLook,
|
@RequestParam("secondLook") Integer secondLook,
|
@RequestParam("isOver") Integer isOver
|
) {
|
Long userId = SecurityUtils.getUserId();
|
if (userId == 0)return R.tokenError("登录失效");
|
AppUserViewingHistory one = appUserViewingHistoryService.lambdaQuery()
|
.eq(AppUserViewingHistory::getAppUserId, userId)
|
.eq(AppUserViewingHistory::getViewingType, 2)
|
.eq(AppUserViewingHistory::getChapterId, chapterId).one();
|
if (one!=null){
|
if (one.getIsOver() == 1){
|
// 如果已经看完了 那么不更新状态 只更新观看时间
|
one.setMinuteLook(minuteLook);
|
one.setSecondLook(secondLook);
|
}else{
|
one.setIsOver(isOver);
|
}
|
appUserViewingHistoryService.updateById(one);
|
}else{
|
AppUserViewingHistory appUserViewingHistory = new AppUserViewingHistory();
|
appUserViewingHistory.setAppUserId(userId);
|
appUserViewingHistory.setBizId(chapterId);
|
appUserViewingHistory.setViewingType(2);
|
appUserViewingHistory.setMinuteLook(minuteLook);
|
appUserViewingHistory.setSecondLook(secondLook);
|
appUserViewingHistory.setChapterId(chapterId);
|
appUserViewingHistory.setIsOver(isOver);
|
appUserViewingHistoryService.save(appUserViewingHistory);
|
}
|
return R.ok();
|
}
|
@PostMapping("/getCourseStudyHistory")
|
public R<AppUserViewingHistory> getCourseStudyHistory(@RequestParam("chapterId") Long chapterId) {
|
Long userId = SecurityUtils.getUserId();
|
if (userId == 0)return R.tokenError("登录失效");
|
AppUserViewingHistory one = appUserViewingHistoryService.lambdaQuery()
|
.eq(AppUserViewingHistory::getAppUserId, userId)
|
.eq(AppUserViewingHistory::getViewingType, 2)
|
.eq(AppUserViewingHistory::getChapterId, chapterId).one();
|
if (one==null){
|
AppUserViewingHistory appUserViewingHistory = new AppUserViewingHistory();
|
appUserViewingHistory.setAppUserId(userId);
|
appUserViewingHistory.setBizId(chapterId);
|
appUserViewingHistory.setViewingType(2);
|
appUserViewingHistory.setMinuteLook(0);
|
appUserViewingHistory.setSecondLook(0);
|
appUserViewingHistory.setChapterId(chapterId);
|
appUserViewingHistory.setIsOver(2);
|
appUserViewingHistoryService.save(appUserViewingHistory);
|
return R.ok(appUserViewingHistory);
|
}
|
return R.ok(one);
|
}
|
|
// @PostMapping("/studyRecord")
|
// @ApiOperation(value = "学习页面记录观看到xx分钟xx秒")
|
// @ApiImplicitParams({
|
// @ApiImplicitParam(value = "章节id", name = "chapterId", required = true, dataType = "String"),
|
// @ApiImplicitParam(value = "上次观看到xx分钟", name = "minuteLook", required = true, dataType = "Integer"),
|
// @ApiImplicitParam(value = "上次观看到xx秒", name = "secondLook", required = true, dataType = "Integer"),
|
// @ApiImplicitParam(value = "是否观看完成", name = "isOver", required = true, dataType = "Integer"),
|
// })
|
// public R studyRecord(@RequestParam(value = "chapterId")Long chapterId,
|
// @RequestParam(value = "minuteLook") Integer minuteLook,
|
// @RequestParam(value = "secondLook") Integer secondLook,
|
// @RequestParam(value = "isOver") Integer isOver
|
// ) {
|
// Long userId = SecurityUtils.getUserId();
|
// if (userId == 0)return R.tokenError("登录失效");
|
// AppUserViewingHistory one = appUserViewingHistoryService.lambdaQuery()
|
// .eq(AppUserViewingHistory::getAppUserId, userId)
|
// .eq(AppUserViewingHistory::getViewingType, 2)
|
// .eq(AppUserViewingHistory::getChapterId, chapterId).one();
|
// if (one!=null){
|
// if (one.getIsOver() == 1){
|
// // 如果已经看完了 那么不更新状态 只更新观看时间
|
// one.setMinuteLook(minuteLook);
|
// one.setSecondLook(secondLook);
|
// }else{
|
// one.setIsOver(isOver);
|
// }
|
// appUserViewingHistoryService.updateById(one);
|
// }else{
|
// AppUserViewingHistory appUserViewingHistory = new AppUserViewingHistory();
|
// appUserViewingHistory.setAppUserId(userId);
|
// appUserViewingHistory.setBizId(chapterId);
|
// appUserViewingHistory.setViewingType(2);
|
// appUserViewingHistory.setMinuteLook(minuteLook);
|
// appUserViewingHistory.setSecondLook(secondLook);
|
// appUserViewingHistory.setChapterId(chapterId);
|
// appUserViewingHistory.setIsOver(isOver);
|
// appUserViewingHistoryService.save(appUserViewingHistory);
|
// }
|
// return R.ok();
|
// }
|
}
|