From ba3233a5b685f0ae6856d8dc5a2bf904296cf8b7 Mon Sep 17 00:00:00 2001
From: “mitao” <“2763622819@qq.com”>
Date: 星期四, 26 三月 2026 15:08:46 +0800
Subject: [PATCH] feat:交易与流水-订单-会员购买订单、交易与流水-订单-养生课程购买订单、交易与流水-财务流水-支付流水、交易与流水-财务流水-退费流水、课程管理-健康科普

---
 backend/src/main/java/com/tcm/training/admin/live/controller/HealthCourseController.java |   57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 55 insertions(+), 2 deletions(-)

diff --git a/backend/src/main/java/com/tcm/training/admin/live/controller/HealthCourseController.java b/backend/src/main/java/com/tcm/training/admin/live/controller/HealthCourseController.java
index dcd586b..395cba3 100644
--- a/backend/src/main/java/com/tcm/training/admin/live/controller/HealthCourseController.java
+++ b/backend/src/main/java/com/tcm/training/admin/live/controller/HealthCourseController.java
@@ -8,6 +8,7 @@
 import com.tcm.training.admin.live.service.HealthCourseAppService;
 import com.tcm.training.admin.live.vo.HealthCourseDetailVO;
 import com.tcm.training.admin.live.vo.HealthCourseListItemVO;
+import com.tcm.training.admin.live.vo.HealthCourseOptionVO;
 import com.tcm.training.admin.live.vo.HealthCourseStatusVO;
 import com.tcm.training.admin.live.vo.HealthCourseVideoDetailVO;
 import com.tcm.training.admin.live.vo.HealthCourseVideoItemVO;
@@ -22,10 +23,12 @@
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 import java.io.IOException;
+import java.util.List;
 
 @Validated
 @RestController
@@ -55,6 +58,11 @@
                        @RequestParam(required = false) Long difficultyCategoryId,
                        @RequestParam(required = false) Integer status) throws IOException {
         healthCourseAppService.export(response, keyword, levelCategoryId, difficultyCategoryId, status);
+    }
+
+    @GetMapping("/health-courses/options")
+    public ApiResponse<List<HealthCourseOptionVO>> options(@RequestParam(required = false) String keyword) {
+        return ApiResponse.ok(healthCourseAppService.options(keyword));
     }
 
     @PostMapping("/health-courses")
@@ -88,8 +96,8 @@
                                                                          @RequestParam(required = false, defaultValue = "1") int page,
                                                                          @RequestParam(required = false, defaultValue = "10") int pageSize,
                                                                          @RequestParam(required = false) String chapterName,
-                                                                         @RequestParam(required = false) Integer saleType) {
-        return ApiResponse.ok(healthCourseAppService.pageVideos(courseId, page, pageSize, chapterName, saleType));
+                                                                         @RequestParam(required = false) Integer priceType) {
+        return ApiResponse.ok(healthCourseAppService.pageVideos(courseId, page, pageSize, chapterName, priceType));
     }
 
     @GetMapping("/health-courses/{courseId}/videos/{videoId}")
@@ -117,4 +125,49 @@
         healthCourseAppService.deleteVideo(courseId, videoId);
         return ApiResponse.ok(null);
     }
+
+    @GetMapping("/health-course-video-resources")
+    public ApiResponse<PageResponse<HealthCourseVideoItemVO>> pageVideoResources(@RequestParam(required = false, defaultValue = "1") int page,
+                                                                                 @RequestParam(required = false, defaultValue = "10") int pageSize,
+                                                                                 @RequestParam(required = false) String courseKeyword,
+                                                                                 @RequestParam(required = false) Long courseId,
+                                                                                 @RequestParam(required = false) Integer courseType,
+                                                                                 @RequestParam(required = false) String chapterName,
+                                                                                 @RequestParam(required = false) Integer priceType,
+                                                                                 @RequestParam(required = false) Integer status) {
+        return ApiResponse.ok(healthCourseAppService.pageVideoResources(page, pageSize, courseKeyword, courseId, courseType, chapterName, priceType, status));
+    }
+
+    @GetMapping("/health-course-video-resources/import-template")
+    public void downloadVideoResourceTemplate(HttpServletResponse response) throws IOException {
+        healthCourseAppService.downloadVideoResourceTemplate(response);
+    }
+
+    @GetMapping("/health-course-video-resources/{id}")
+    public ApiResponse<HealthCourseVideoDetailVO> detailVideoResource(@PathVariable("id") Long id) {
+        return ApiResponse.ok(healthCourseAppService.detailVideoResource(id));
+    }
+
+    @PostMapping("/health-course-video-resources")
+    public ApiResponse<HealthCourseVideoDetailVO> createVideoResource(@Valid @RequestBody HealthCourseVideoSaveRequest req) {
+        return ApiResponse.ok(healthCourseAppService.createVideoResource(req));
+    }
+
+    @PutMapping("/health-course-video-resources/{id}")
+    public ApiResponse<HealthCourseVideoDetailVO> updateVideoResource(@PathVariable("id") Long id,
+                                                                      @Valid @RequestBody HealthCourseVideoSaveRequest req) {
+        return ApiResponse.ok(healthCourseAppService.updateVideoResource(id, req));
+    }
+
+    @DeleteMapping("/health-course-video-resources/{id}")
+    public ApiResponse<Void> deleteVideoResource(@PathVariable("id") Long id) {
+        healthCourseAppService.deleteVideoResource(id);
+        return ApiResponse.ok(null);
+    }
+
+    @PostMapping("/health-course-video-resources/import")
+    public ApiResponse<Void> importVideoResources(@RequestParam("file") MultipartFile file) throws IOException {
+        healthCourseAppService.importVideoResources(file);
+        return ApiResponse.ok(null);
+    }
 }

--
Gitblit v1.7.1