From b01f752252eaadd1fa31eda6a9ad43146660b721 Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期四, 03 四月 2025 23:42:57 +0800
Subject: [PATCH] bug修改
---
xinquan-api/xinquan-api-user/src/main/java/com/xinquan/user/api/feign/RemoteAppUserService.java | 2
xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/controller/client/ClientAppUserViewingHistoryController.java | 84 +++++++++++++++++++++++++++
xinquan-api/xinquan-api-user/src/main/java/com/xinquan/user/api/factory/RemoteAppUserFallbackFactory.java | 5 +
xinquan-auth/src/main/java/com/xinquan/auth/service/SysLoginService.java | 8 +-
xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/service/impl/MeditationServiceImpl.java | 37 +++++------
5 files changed, 110 insertions(+), 26 deletions(-)
diff --git a/xinquan-api/xinquan-api-user/src/main/java/com/xinquan/user/api/factory/RemoteAppUserFallbackFactory.java b/xinquan-api/xinquan-api-user/src/main/java/com/xinquan/user/api/factory/RemoteAppUserFallbackFactory.java
index deae664..8e9ac6a 100644
--- a/xinquan-api/xinquan-api-user/src/main/java/com/xinquan/user/api/factory/RemoteAppUserFallbackFactory.java
+++ b/xinquan-api/xinquan-api-user/src/main/java/com/xinquan/user/api/factory/RemoteAppUserFallbackFactory.java
@@ -77,6 +77,11 @@
}
@Override
+ public R<List<AppUserViewingHistory>> getMeditationHistoryCountAll() {
+ return null;
+ }
+
+ @Override
public R<Long> getCourseHistoryCount(Long id) {
return R.fail("后台远程调用 根据课程id 获取实际观看人数");
}
diff --git a/xinquan-api/xinquan-api-user/src/main/java/com/xinquan/user/api/feign/RemoteAppUserService.java b/xinquan-api/xinquan-api-user/src/main/java/com/xinquan/user/api/feign/RemoteAppUserService.java
index 285327a..a576d9d 100644
--- a/xinquan-api/xinquan-api-user/src/main/java/com/xinquan/user/api/feign/RemoteAppUserService.java
+++ b/xinquan-api/xinquan-api-user/src/main/java/com/xinquan/user/api/feign/RemoteAppUserService.java
@@ -49,6 +49,8 @@
public R<AppUser> getUserByPhone(@PathVariable("phone")String phone);
@PostMapping("/user/app-user-viewing-history/getMeditationHistoryCount/{id}")
public R<Long> getMeditationHistoryCount(@PathVariable("id") Long id);
+ @PostMapping("/user/app-user-viewing-history/getMeditationHistoryCountAll")
+ public R<List<AppUserViewingHistory>> getMeditationHistoryCountAll();
@PostMapping("/user/app-user-viewing-history/getCourseHistoryCount/{id}")
public R<Long> getCourseHistoryCount(@PathVariable("id") Long id);
@PostMapping("/user/app-user-viewing-history/getCourseChapterHistoryCount/{id}")
diff --git a/xinquan-auth/src/main/java/com/xinquan/auth/service/SysLoginService.java b/xinquan-auth/src/main/java/com/xinquan/auth/service/SysLoginService.java
index c3a9a04..5ade740 100644
--- a/xinquan-auth/src/main/java/com/xinquan/auth/service/SysLoginService.java
+++ b/xinquan-auth/src/main/java/com/xinquan/auth/service/SysLoginService.java
@@ -341,25 +341,25 @@
if (StringUtils.isNull(appUser)) {
recordLogService.recordLogininfor(body.getCellPhone(), Constants.LOGIN_FAIL,
"登录用户不存在");
- throw new ServiceException("登录用户:" + body.getCellPhone() + " 不存在");
+ throw new ServiceException("登录用户:" + body.getCellPhone() + " 不存在",500);
}
// 1:正常 2:冻结 3:注销
if (appUser.getUserStatus().equals(AppUserStatusEnum.FROZEN.getCode())) {
recordLogService.recordLogininfor(body.getCellPhone(), Constants.LOGIN_FAIL,
"账号已冻结");
- throw new ServiceException("账号已冻结");
+ throw new ServiceException("账号已冻结",500);
}
if (appUser.getUserStatus().equals(AppUserStatusEnum.LOGOUT.getCode())) {
recordLogService.recordLogininfor(body.getCellPhone(), Constants.LOGIN_FAIL,
"账号已注销");
- throw new ServiceException("账号已注销");
+ throw new ServiceException("账号已注销",500);
}
// 查询系统用户信息
SysUser sysUser = sysUserClient.getSysUser(appUser.getUserId()).getData();
if (StringUtils.isNull(sysUser)) {
recordLogService.recordLogininfor(body.getCellPhone(), Constants.LOGIN_FAIL,
"登录用户不存在");
- throw new ServiceException("登录用户:" + body.getCellPhone() + " 不存在");
+ throw new ServiceException("登录用户:" + body.getCellPhone() + " 不存在",500);
}
passwordService.validate(sysUser, body.getPassword());
// if (!sysUser.getPassword().equals(body.getPassword())){
diff --git a/xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/service/impl/MeditationServiceImpl.java b/xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/service/impl/MeditationServiceImpl.java
index 8415501..2735f72 100644
--- a/xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/service/impl/MeditationServiceImpl.java
+++ b/xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/service/impl/MeditationServiceImpl.java
@@ -32,6 +32,7 @@
import com.xinquan.order.api.feign.RemoteOrderService;
import com.xinquan.system.api.domain.AppUser;
import com.xinquan.meditation.api.domain.MeditationQuestion;
+import com.xinquan.system.api.domain.AppUserViewingHistory;
import com.xinquan.system.api.domain.vo.AppUserVO;
import com.xinquan.system.api.model.LoginUser;
import com.xinquan.user.api.domain.dto.AppUserDTO;
@@ -65,6 +66,7 @@
private final MeditationQuestionLikeService meditationQuestionLikeService;
private final MeditationUserFavoriteService meditationUserFavoriteService;
private final RemoteOrderService remoteOrderService;
+ private final MeditationMapper meditationMapper;
/**
* 获取私人订制
*
@@ -119,15 +121,13 @@
if (loginUser==null){
return new ArrayList<>();
}
- Long userId = loginUser.getUserid();
- List<Order> orderList = remoteOrderService.getOrderListByType(userId,
- OrderFromEnum.MEDITATION.getCode(),
- SecurityConstants.INNER).getData();
- List<Long> meditationIdList = orderList.stream().map(Order::getBusinessId)
- .collect(Collectors.toList());
+ Long userId = loginUser.getUserid();
+ List<Order> data1 = remoteOrderService.getMeditationIsBuyAll(userId).getData();
+ List<Long> meditationIdList = data1.stream().map(Order::getBusinessId).collect(Collectors.toList());
if (CollUtils.isNotEmpty(meditationIdList)) {
+ Set<Long> meditationIdSet = new HashSet<>(meditationIdList);
voList = voList.stream()
- .filter(meditationVO -> meditationIdList.contains(meditationVO.getId()))
+ .filter(meditationVO -> meditationIdSet.contains(meditationVO.getId()))
.peek(meditationVO -> meditationVO.setIsBuy(1))
.collect(Collectors.toList());
}
@@ -156,15 +156,10 @@
meditationLambdaQueryWrapper.orderByDesc(Meditation::getSortNum).last("limit 8");
}
List<Meditation> list =this.list(meditationLambdaQueryWrapper);
- List<Meditation> meditations = new ArrayList<>();
- for (Meditation meditation : list) {
- if (meditation.getListingStatus()==1){
- meditations.add(meditation);
- }
- }
- if (CollUtils.isNotEmpty(meditations)) {
+
+ if (CollUtils.isNotEmpty(list)) {
// 对象拷贝
- voList = BeanUtils.copyList(meditations, ClientMeditationVO.class);
+ voList = BeanUtils.copyList(list, ClientMeditationVO.class);
}
handlePaidMeditation(voList);
return voList;
@@ -306,11 +301,13 @@
if (tokenService.getLoginUser()!=null){
data1 = remoteOrderService.getMeditationIsBuyAll(tokenService.getLoginUser().getUserid()).getData();
}
+ List<AppUserViewingHistory> data2 = remoteAppUserService.getMeditationHistoryCountAll().getData();
+ boolean temp = tokenService.getLoginUser()!=null;
for (Meditation record : page.getRecords()) {
- Long data = remoteAppUserService.getMeditationHistoryCount(record.getId()).getData();
- record.setRealLearnedNum(Integer.valueOf(data+""));
+ List<AppUserViewingHistory> collect = data2.stream().filter(e -> e.getBizId().equals(record.getId())).collect(Collectors.toList());
+ record.setRealLearnedNum(collect.size());
record.setRealLearnedNum(record.getVirtualLearnedNum()+record.getRealLearnedNum());
- if (tokenService.getLoginUser()!=null){
+ if (temp){
Order order = data1.stream().filter(e -> e.getBusinessId().equals(record.getId())).findFirst().orElse(null);
if (order==null){
record.setIsBuy(2);
@@ -320,8 +317,8 @@
}else{
record.setIsBuy(2);
}
- this.updateById(record);
}
+ this.updateBatchById(page.getRecords());
// 将实体类转换为VO
pageDTO = PageDTO.of(page, ClientMeditationVO.class);
return pageDTO;
@@ -456,7 +453,7 @@
}
}
-
+ this.updateById(meditation);
return R.ok(vo);
}
@Override
diff --git a/xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/controller/client/ClientAppUserViewingHistoryController.java b/xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/controller/client/ClientAppUserViewingHistoryController.java
index ca2d549..f1491a9 100644
--- a/xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/controller/client/ClientAppUserViewingHistoryController.java
+++ b/xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/controller/client/ClientAppUserViewingHistoryController.java
@@ -1,6 +1,7 @@
package com.xinquan.user.controller.client;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.xinquan.common.core.domain.R;
import com.xinquan.common.core.utils.page.PageDTO;
@@ -114,6 +115,15 @@
return R.ok(Long.valueOf(list.size()));
}
+ @PostMapping("/getMeditationHistoryCountAll")
+ public R<List<AppUserViewingHistory>> getMeditationHistoryCountAll() {
+ List<AppUserViewingHistory> list = appUserViewingHistoryService.lambdaQuery()
+ .eq(AppUserViewingHistory::getViewingType, 1)
+ .groupBy(AppUserViewingHistory::getAppUserId)
+ .list();
+ return R.ok(list);
+ }
+
@PostMapping("/getCourseHistoryCount/{id}")
public R<Long> getCourseHistoryCount(@PathVariable("id") Long id) {
List<AppUserViewingHistory> list = appUserViewingHistoryService.lambdaQuery()
@@ -224,6 +234,67 @@
/**
* 记录用户观看记录
*/
+ @PostMapping("/testLookHistory")
+ @ApiOperation(value = "记录用户观看冥想记录", tags = {"用户端-用户相关接口"})
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "id", value = "冥想id", dataType = "Long", required = true),
+ @ApiImplicitParam(name = "timeLook", value = "播放时长单位秒", dataType = "Integer", required = true)
+ })
+ public R<?> testLookHistory(@RequestParam("id") Long id,
+ @RequestParam("timeLook") Integer timeLook) {
+
+// AppUserViewingHistory appUserViewingHistory = new AppUserViewingHistory();
+// appUserViewingHistory.setAppUserId(1907408237773807618L);
+// appUserViewingHistory.setBizId(id);
+// appUserViewingHistory.setViewingType(1);
+// appUserViewingHistory.setTimeLook(timeLook);
+// appUserViewingHistory.setCreateTime(LocalDateTime.now());
+// // 先查询用户当天有没有观看过该音频
+// AppUserViewingHistory appUserViewingHistory3 = appUserViewingHistoryService.lambdaQuery().eq(AppUserViewingHistory::getAppUserId, 1907408237773807618L)
+// .eq(AppUserViewingHistory::getBizId, id)
+// .apply("date_format(create_time,'%Y-%M-%D')=date_format(now(),'%Y-%M-%D')")
+// .eq(AppUserViewingHistory::getViewingType, 1).last("limit 1").one();
+// if (appUserViewingHistory3 != null) {
+// appUserViewingHistory3.setTimeLook(appUserViewingHistory3.getTimeLook() + timeLook);
+// appUserViewingHistoryService.updateById(appUserViewingHistory3);
+// } else {
+// appUserViewingHistoryService.save(appUserViewingHistory);
+// }
+// List<Long> collect = appUserService.list().stream().map(AppUser::getId).collect(Collectors.toList());
+ List<Long> collect = appUserViewingHistoryService.list(new LambdaQueryWrapper<AppUserViewingHistory>()
+ .groupBy(AppUserViewingHistory::getAppUserId)).stream().map(AppUserViewingHistory::getAppUserId).collect(Collectors.toList());
+
+ for (Long l : collect) {
+ List<AppUserViewingHistory> list = appUserViewingHistoryService.lambdaQuery()
+ .eq(AppUserViewingHistory::getAppUserId, l)
+ .eq(AppUserViewingHistory::getViewingType, 1)
+ .last("GROUP BY date_format(create_time,'%Y-%M-%D')").list();
+ for (AppUserViewingHistory appUserViewingHistory : list) {
+ List<AppUserViewingHistory> list1 = appUserViewingHistoryService.lambdaQuery().eq(AppUserViewingHistory::getAppUserId, appUserViewingHistory.getAppUserId())
+ .eq(AppUserViewingHistory::getViewingType, 1)
+ .ne(AppUserViewingHistory::getId, appUserViewingHistory.getId())
+ .eq(AppUserViewingHistory::getBizId, appUserViewingHistory.getBizId())
+ .apply("date_format(CONVERT_TZ(create_time, '+00:00', '+08:00'), '%Y-%m-%d')="+"'"+appUserViewingHistory.getCreateTime().toLocalDate()+"'").list();
+ Integer timeLook1 = appUserViewingHistory.getTimeLook();
+ for (AppUserViewingHistory userViewingHistory : list1) {
+ timeLook1+=userViewingHistory.getTimeLook();
+ appUserViewingHistoryService.removeById(userViewingHistory.getId());
+
+ }
+ appUserViewingHistory.setTimeLook(timeLook1);
+ appUserViewingHistoryService.updateById(appUserViewingHistory);
+ }
+ }
+
+ return R.ok();
+ }
+
+
+
+
+ /**
+ * 记录用户观看记录
+ */
@PostMapping("/saveViewingHistory")
@ApiOperation(value = "记录用户观看冥想记录", tags = {"用户端-用户相关接口"})
@ApiImplicitParams({
@@ -244,7 +315,17 @@
appUserViewingHistory.setViewingType(1);
appUserViewingHistory.setTimeLook(timeLook);
appUserViewingHistory.setCreateTime(LocalDateTime.now());
- appUserViewingHistoryService.save(appUserViewingHistory);
+ // 先查询用户当天有没有观看过该音频
+ AppUserViewingHistory appUserViewingHistory3 = appUserViewingHistoryService.lambdaQuery().eq(AppUserViewingHistory::getAppUserId, userId)
+ .eq(AppUserViewingHistory::getBizId, id)
+ .apply("date_format(create_time,'%Y-%M-%D')=date_format(now(),'%Y-%M-%D')")
+ .eq(AppUserViewingHistory::getViewingType, 1).last("limit 1").one();
+ if (appUserViewingHistory3!=null){
+ appUserViewingHistory3.setTimeLook(appUserViewingHistory3.getTimeLook()+timeLook);
+ appUserViewingHistoryService.updateById(appUserViewingHistory3);
+ }else{
+ appUserViewingHistoryService.save(appUserViewingHistory);
+ }
AppUser byId = appUserService.getById(userId);
appUserService.updateById(byId);
// 查询用户今日观看疗愈多少秒
@@ -260,7 +341,6 @@
for (AppUserViewingHistory appUserViewingHistory1 : list) {
if (appUserViewingHistory1.getTimeLook() != null) {
temp += appUserViewingHistory1.getTimeLook();
-
}
}
AppUserTree one = appUserTreeService.lambdaQuery().eq(AppUserTree::getAppUserId, userId)
--
Gitblit v1.7.1