From 1f173d482408cbeedb84d261898ebd2efb816547 Mon Sep 17 00:00:00 2001
From: “mitao” <“2763622819@qq.com”>
Date: 星期二, 14 四月 2026 09:07:07 +0800
Subject: [PATCH] feat:生产环境配置
---
tcm-training-admin-backend/src/main/java/com/tcm/training/admin/app/course/service/AppHealthCourseService.java | 78 +++++++++++++++++++++++++++++++++++++++
1 files changed, 78 insertions(+), 0 deletions(-)
diff --git a/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/app/course/service/AppHealthCourseService.java b/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/app/course/service/AppHealthCourseService.java
index 660aa9e..d5fcb46 100644
--- a/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/app/course/service/AppHealthCourseService.java
+++ b/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/app/course/service/AppHealthCourseService.java
@@ -1,15 +1,22 @@
package com.tcm.training.admin.app.course.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.tcm.training.admin.app.course.vo.AppHealthCourseCategoryOptionVO;
import com.tcm.training.admin.app.course.vo.AppHealthCourseDetailVO;
import com.tcm.training.admin.app.course.vo.AppHealthCourseExpertVO;
+import com.tcm.training.admin.app.course.vo.AppHealthCourseListItemVO;
import com.tcm.training.admin.app.course.vo.AppHealthCourseVideoVO;
import com.tcm.training.admin.live.entity.Expert;
import com.tcm.training.admin.live.entity.HealthCourseVideo;
+import com.tcm.training.admin.live.entity.LiveCourseCategory;
import com.tcm.training.admin.live.mapper.ExpertMapper;
+import com.tcm.training.admin.live.mapper.HealthCourseMapper;
import com.tcm.training.admin.live.mapper.HealthCourseVideoMapper;
+import com.tcm.training.admin.live.mapper.LiveCourseCategoryMapper;
import com.tcm.training.admin.live.service.HealthCourseAppService;
+import com.tcm.training.admin.live.service.LiveCourseCategoryAppService;
import com.tcm.training.admin.live.vo.HealthCourseDetailVO;
+import com.tcm.training.admin.live.vo.HealthCourseListRow;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
@@ -27,18 +34,52 @@
private static final int VIDEO_STATUS_ENABLED = 1;
private final HealthCourseAppService healthCourseAppService;
+ private final HealthCourseMapper healthCourseMapper;
private final HealthCourseVideoMapper healthCourseVideoMapper;
+ private final LiveCourseCategoryMapper liveCourseCategoryMapper;
private final ExpertMapper expertMapper;
/**
* 注入 APP 养生课程详情所需依赖。
*/
public AppHealthCourseService(HealthCourseAppService healthCourseAppService,
+ HealthCourseMapper healthCourseMapper,
HealthCourseVideoMapper healthCourseVideoMapper,
+ LiveCourseCategoryMapper liveCourseCategoryMapper,
ExpertMapper expertMapper) {
this.healthCourseAppService = healthCourseAppService;
+ this.healthCourseMapper = healthCourseMapper;
this.healthCourseVideoMapper = healthCourseVideoMapper;
+ this.liveCourseCategoryMapper = liveCourseCategoryMapper;
this.expertMapper = expertMapper;
+ }
+
+ /**
+ * 获取 APP 养生课程列表页数据。
+ */
+ public List<AppHealthCourseListItemVO> list(Long levelCategoryId, Long difficultyCategoryId) {
+ List<HealthCourseListRow> rows = healthCourseMapper.selectCourseList(
+ null,
+ levelCategoryId,
+ difficultyCategoryId,
+ COURSE_STATUS_ENABLED
+ );
+ if (rows == null || rows.isEmpty()) {
+ return Collections.emptyList();
+ }
+ List<AppHealthCourseListItemVO> result = new ArrayList<AppHealthCourseListItemVO>(rows.size());
+ for (HealthCourseListRow row : rows) {
+ AppHealthCourseListItemVO itemVO = new AppHealthCourseListItemVO();
+ itemVO.setId(row.getId());
+ itemVO.setTitle(trimToEmpty(row.getTitle()));
+ itemVO.setCoverImage(trimToEmpty(row.getCoverImg()));
+ itemVO.setLevelName(trimToEmpty(row.getLevelName()));
+ itemVO.setDifficultyName(trimToEmpty(row.getDifficultyName()));
+ itemVO.setSalePrice(defaultPrice(row.getSalePrice()));
+ itemVO.setLearnUserCount(defaultNumber(row.getLearnUserCount()));
+ result.add(itemVO);
+ }
+ return result;
}
/**
@@ -75,6 +116,43 @@
}
/**
+ * 获取 APP 养生课程主题筛选项。
+ */
+ public List<AppHealthCourseCategoryOptionVO> listThemes() {
+ return listCategoriesByType(LiveCourseCategoryAppService.TYPE_LEVEL);
+ }
+
+ /**
+ * 获取 APP 养生课程难度筛选项。
+ */
+ public List<AppHealthCourseCategoryOptionVO> listDifficulties() {
+ return listCategoriesByType(LiveCourseCategoryAppService.TYPE_DIFFICULTY);
+ }
+
+ /**
+ * 按分类类型读取 APP 养生课程筛选项。
+ */
+ private List<AppHealthCourseCategoryOptionVO> listCategoriesByType(String categoryType) {
+ List<LiveCourseCategory> categories = liveCourseCategoryMapper.selectList(new LambdaQueryWrapper<LiveCourseCategory>()
+ .eq(LiveCourseCategory::getType, categoryType)
+ .eq(LiveCourseCategory::getDeleted, 0)
+ .orderByAsc(LiveCourseCategory::getSort)
+ .orderByAsc(LiveCourseCategory::getId));
+ if (categories == null || categories.isEmpty()) {
+ return Collections.emptyList();
+ }
+ List<AppHealthCourseCategoryOptionVO> result =
+ new ArrayList<AppHealthCourseCategoryOptionVO>(categories.size());
+ for (LiveCourseCategory category : categories) {
+ AppHealthCourseCategoryOptionVO optionVO = new AppHealthCourseCategoryOptionVO();
+ optionVO.setId(category.getId());
+ optionVO.setName(trimToEmpty(category.getName()));
+ result.add(optionVO);
+ }
+ return result;
+ }
+
+ /**
* 查询课程下启用的视频章节。
*/
private List<HealthCourseVideo> listEnabledVideos(Long courseId) {
--
Gitblit v1.7.1