From 039a33d1bfa6ef041161666bbd120c34086fe7c1 Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期一, 14 十月 2024 14:09:25 +0800
Subject: [PATCH] 课程代码

---
 xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/service/impl/MeditationServiceImpl.java |   69 ++++++++++++++++++++++++++++------
 1 files changed, 56 insertions(+), 13 deletions(-)

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 0142788..7e74ef5 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
@@ -5,17 +5,15 @@
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xinquan.common.core.constant.SecurityConstants;
 import com.xinquan.common.core.enums.DisabledEnum;
+import com.xinquan.common.core.enums.OrderFromEnum;
 import com.xinquan.common.core.exception.ServiceException;
 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.page.PageInfo;
 import com.xinquan.common.security.utils.SecurityUtils;
-import com.xinquan.meditation.domain.Meditation;
-import com.xinquan.meditation.domain.MeditationCategory;
-import com.xinquan.meditation.domain.MeditationMusic;
-import com.xinquan.meditation.domain.MeditationQuestion;
-import com.xinquan.meditation.domain.MeditationQuestionLike;
-import com.xinquan.meditation.domain.MeditationUserFavorite;
+import com.xinquan.meditation.api.domain.Meditation;
+import com.xinquan.meditation.domain.*;
 import com.xinquan.meditation.domain.vo.ClientMeditationAndCateVO;
 import com.xinquan.meditation.domain.vo.ClientMeditationCategoryVO;
 import com.xinquan.meditation.domain.vo.ClientMeditationDetailsVO;
@@ -28,7 +26,10 @@
 import com.xinquan.meditation.service.MeditationQuestionLikeService;
 import com.xinquan.meditation.service.MeditationService;
 import com.xinquan.meditation.service.MeditationUserFavoriteService;
-import com.xinquan.user.api.domain.AppUser;
+import com.xinquan.order.api.domain.Order;
+import com.xinquan.order.api.feign.RemoteOrderService;
+import com.xinquan.system.api.domain.AppUser;
+import com.xinquan.system.api.domain.MeditationQuestion;
 import com.xinquan.user.api.domain.dto.AppUserDTO;
 import com.xinquan.user.api.feign.RemoteAppUserService;
 import java.util.Arrays;
@@ -42,6 +43,7 @@
 import java.util.stream.Collectors;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
 
 /**
  * <p>
@@ -61,7 +63,7 @@
     private final MeditationQuestionMapper meditationQuestionMapper;
     private final MeditationQuestionLikeService meditationQuestionLikeService;
     private final MeditationUserFavoriteService meditationUserFavoriteService;
-
+    private final RemoteOrderService remoteOrderService;
     /**
      * 获取私人订制
      *
@@ -79,6 +81,30 @@
                     .collect(Collectors.toSet());
             // 查询冥想列表
             voList = baseMapper.getMeditationListByTagId(tagIdSet, sanskritFlag);
+        }
+        voList = handlePaidMeditation(voList);
+        return voList;
+    }
+
+    /**
+     * 处理已付费冥想音频
+     *
+     * @param voList
+     * @return
+     */
+    private List<ClientMeditationVO> handlePaidMeditation(List<ClientMeditationVO> voList) {
+        // 远程调用订单服务,查询用户已付费冥想
+        Long userId = SecurityUtils.getUserId();
+        List<Order> orderList = remoteOrderService.getOrderListByType(userId,
+                OrderFromEnum.MEDITATION.getCode(),
+                SecurityConstants.INNER).getData();
+        List<Long> meditationIdList = orderList.stream().map(Order::getBusinessId)
+                .collect(Collectors.toList());
+        if (CollUtils.isNotEmpty(meditationIdList)) {
+            voList = voList.stream()
+                    .filter(meditationVO -> meditationIdList.contains(meditationVO.getId()))
+                    .peek(meditationVO -> meditationVO.setPaidStatus(1))
+                    .collect(Collectors.toList());
         }
         return voList;
     }
@@ -102,6 +128,7 @@
             // 对象拷贝
             voList = BeanUtils.copyList(list, ClientMeditationVO.class);
         }
+        handlePaidMeditation(voList);
         return voList;
     }
 
@@ -205,6 +232,7 @@
         });*/
         // 将实体类转换为VO
         pageDTO = PageDTO.of(page, ClientMeditationVO.class);
+        handlePaidMeditation(pageDTO.getList());
         return pageDTO;
     }
 
@@ -235,6 +263,10 @@
                 .eq(MeditationUserFavorite::getMeditationId, id)
                 .eq(MeditationUserFavorite::getAppUserId, SecurityUtils.getUserId())
                 .count() > 0 ? 1 : 2);
+        // 获取提问数
+        vo.setQuestionCount(meditationQuestionMapper.selectCount(
+                Wrappers.lambdaQuery(MeditationQuestion.class)
+                        .eq(MeditationQuestion::getMeditationId, id)));
         return vo;
     }
 
@@ -256,7 +288,7 @@
                 .last("limit 1").oneOpt();
         if (userOperationOpt.isPresent()) {
             meditationUserFavoriteService.removeById(userOperationOpt.get());
-            // 增加收藏数
+            // 减少收藏数
             meditation.setFavoriteCount(meditation.getFavoriteCount() - 1);
         } else {
             // 增加收藏记录
@@ -264,10 +296,23 @@
             meditationUserFavorite.setMeditationId(id);
             meditationUserFavorite.setAppUserId(SecurityUtils.getUserId());
             meditationUserFavoriteService.save(meditationUserFavorite);
-            // 减少收藏数
+            // 增加收藏数
             meditation.setFavoriteCount(meditation.getFavoriteCount() + 1);
         }
         this.updateById(meditation);
+    }
+
+    @Override
+    public PageDTO<MeditationHall> getMeditationPage(String lon, String lat,String name, Integer pageCurr, Integer pageSize) {
+        PageInfo<MeditationHall> pageInfo = new PageInfo<>(pageCurr, pageSize);
+        List<MeditationHall> list = this.baseMapper.getMeditationPage(pageInfo,lon, lat,name);
+        if (!StringUtils.hasLength(lon) || !StringUtils.hasLength(lat)){
+            for (MeditationHall meditationHall : list) {
+                meditationHall.setDistance(null);
+            }
+        }
+        pageInfo.setRecords(list);
+        return PageDTO.of(pageInfo, MeditationHall.class);
     }
 
     /**
@@ -287,9 +332,7 @@
                 Wrappers.lambdaQuery(MeditationQuestion.class)
                         .eq(MeditationQuestion::getMeditationId, id)
                         .eq(MeditationQuestion::getShowFlag, DisabledEnum.YES)
-                        .orderByDesc(MeditationQuestion::getPublishTime)
-        );
-
+                        .orderByDesc(MeditationQuestion::getPublishTime));
         if (CollUtils.isEmpty(questionPage.getRecords())) {
             return PageDTO.empty(questionPage);
         }

--
Gitblit v1.7.1