From e700029ee750c40db19b72d3a82d6f9c927fb633 Mon Sep 17 00:00:00 2001 From: lesingle <16698921+lesingle@user.noreply.gitee.com> Date: Tue, 3 Mar 2026 15:04:43 +0800 Subject: [PATCH] =?UTF-8?q?fix(backend):=20=E4=BF=AE=E5=A4=8D=E8=AF=BE?= =?UTF-8?q?=E7=A8=8B=E5=A5=97=E9=A4=90=E8=B7=AF=E5=BE=84=E5=92=8C=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E7=8A=B6=E6=80=81=E5=8F=98=E6=9B=B4=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - AdminCoursePackageController: 路径从 /admin/course-packages 改为 /admin/packages - AdminCoursePackageController: 分页参数 pageNum → page,新增 submit/review/publish/offline - CoursePackageService: 新增 submit/review/publish/offline 方法 Co-Authored-By: Claude Sonnet 4.6 --- .../admin/AdminCoursePackageController.java | 40 +++++++++++++++++-- .../service/CoursePackageService.java | 24 +++++++++++ 2 files changed, 60 insertions(+), 4 deletions(-) diff --git a/reading-platform-java/src/main/java/com/reading/platform/controller/admin/AdminCoursePackageController.java b/reading-platform-java/src/main/java/com/reading/platform/controller/admin/AdminCoursePackageController.java index fb330c7..4c30d41 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/controller/admin/AdminCoursePackageController.java +++ b/reading-platform-java/src/main/java/com/reading/platform/controller/admin/AdminCoursePackageController.java @@ -14,7 +14,7 @@ import org.springframework.web.bind.annotation.*; @Tag(name = "Admin - Course Packages", description = "Course Package Management for Admin") @RestController -@RequestMapping("/api/v1/admin/course-packages") +@RequestMapping("/api/v1/admin/packages") @RequiredArgsConstructor @RequireRole(UserRole.ADMIN) public class AdminCoursePackageController { @@ -24,12 +24,12 @@ public class AdminCoursePackageController { @Operation(summary = "Get course packages") @GetMapping public Result> getPackages( - @RequestParam(defaultValue = "1") int pageNum, + @RequestParam(value = "page", defaultValue = "1") int page, @RequestParam(defaultValue = "20") int pageSize, @RequestParam(required = false) String keyword, @RequestParam(required = false) String status) { - Page page = coursePackageService.getPackages(pageNum, pageSize, keyword, status); - return Result.success(PageResult.of(page)); + Page result = coursePackageService.getPackages(page, pageSize, keyword, status); + return Result.success(PageResult.of(result)); } @Operation(summary = "Get course package by ID") @@ -56,4 +56,36 @@ public class AdminCoursePackageController { coursePackageService.deletePackage(id); return Result.success(); } + + @Operation(summary = "Submit package for review") + @PostMapping("/{id}/submit") + public Result submitPackage(@PathVariable Long id) { + coursePackageService.submitPackage(id); + return Result.success(); + } + + @Operation(summary = "Review package (approve or reject)") + @PostMapping("/{id}/review") + public Result reviewPackage( + @PathVariable Long id, + @RequestBody java.util.Map body) { + boolean approved = Boolean.TRUE.equals(body.get("approved")); + String comment = (String) body.get("comment"); + coursePackageService.reviewPackage(id, approved, comment); + return Result.success(); + } + + @Operation(summary = "Publish package") + @PostMapping("/{id}/publish") + public Result publishPackage(@PathVariable Long id) { + coursePackageService.publishPackage(id); + return Result.success(); + } + + @Operation(summary = "Take package offline") + @PostMapping("/{id}/offline") + public Result offlinePackage(@PathVariable Long id) { + coursePackageService.offlinePackage(id); + return Result.success(); + } } diff --git a/reading-platform-java/src/main/java/com/reading/platform/service/CoursePackageService.java b/reading-platform-java/src/main/java/com/reading/platform/service/CoursePackageService.java index 163980a..4d9cbff 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/service/CoursePackageService.java +++ b/reading-platform-java/src/main/java/com/reading/platform/service/CoursePackageService.java @@ -51,4 +51,28 @@ public class CoursePackageService { public void deletePackage(Long id) { coursePackageMapper.deleteById(id); } + + public void submitPackage(Long id) { + CoursePackage pkg = getPackageById(id); + pkg.setStatus("pending"); + coursePackageMapper.updateById(pkg); + } + + public void reviewPackage(Long id, boolean approved, String comment) { + CoursePackage pkg = getPackageById(id); + pkg.setStatus(approved ? "published" : "rejected"); + coursePackageMapper.updateById(pkg); + } + + public void publishPackage(Long id) { + CoursePackage pkg = getPackageById(id); + pkg.setStatus("published"); + coursePackageMapper.updateById(pkg); + } + + public void offlinePackage(Long id) { + CoursePackage pkg = getPackageById(id); + pkg.setStatus("archived"); + coursePackageMapper.updateById(pkg); + } }