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); + } }