package com.tcm.training.admin.app.course.controller; import com.tcm.training.admin.app.course.dto.AppHealthCoursePurchaseRequest; import com.tcm.training.admin.app.course.service.AppHealthCourseService; 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.AppHealthCourseFavoriteResultVO; import com.tcm.training.admin.app.course.vo.AppHealthCourseListItemVO; import com.tcm.training.admin.app.course.vo.AppHealthCoursePurchaseResultVO; import com.tcm.training.admin.common.ApiResponse; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.validation.Valid; import java.util.List; /** * APP 养生课程详情接口。 */ @Validated @RestController @RequestMapping({"/api/app", "/api/v1/app"}) public class AppHealthCourseController { private final AppHealthCourseService appHealthCourseService; /** * 注入 APP 养生课程详情服务。 */ public AppHealthCourseController(AppHealthCourseService appHealthCourseService) { this.appHealthCourseService = appHealthCourseService; } /** * 获取 APP 养生课程列表。 */ @GetMapping("/health-courses") public ApiResponse> list(@RequestParam(value = "levelCategoryId", required = false) Long levelCategoryId, @RequestParam(value = "difficultyCategoryId", required = false) Long difficultyCategoryId) { return ApiResponse.ok(appHealthCourseService.list(levelCategoryId, difficultyCategoryId)); } /** * 获取 APP 养生课程详情。 */ @GetMapping("/health-courses/{courseId}") public ApiResponse detail(@PathVariable("courseId") Long courseId) { return ApiResponse.ok(appHealthCourseService.detail(courseId)); } /** * 收藏 APP 养生课程。 */ @PostMapping("/health-courses/{courseId}/favorite") public ApiResponse favorite(@PathVariable("courseId") Long courseId) { return ApiResponse.ok(appHealthCourseService.favorite(courseId)); } /** * 取消收藏 APP 养生课程。 */ @DeleteMapping("/health-courses/{courseId}/favorite") public ApiResponse cancelFavorite(@PathVariable("courseId") Long courseId) { return ApiResponse.ok(appHealthCourseService.cancelFavorite(courseId)); } /** * 购买 APP 养生课程整课。 */ @PostMapping("/health-courses/{courseId}/purchase") public ApiResponse purchaseCourse(@PathVariable("courseId") Long courseId, @Valid @RequestBody AppHealthCoursePurchaseRequest request) { return ApiResponse.ok(appHealthCourseService.purchaseCourse(courseId, request)); } /** * 购买 APP 养生课程小节。 */ @PostMapping("/health-courses/{courseId}/videos/{videoId}/purchase") public ApiResponse purchaseVideo(@PathVariable("courseId") Long courseId, @PathVariable("videoId") Long videoId, @Valid @RequestBody AppHealthCoursePurchaseRequest request) { return ApiResponse.ok(appHealthCourseService.purchaseVideo(courseId, videoId, request)); } /** * 会员将 APP 养生课程加入我的课程。 */ @PostMapping("/health-courses/{courseId}/member-join") public ApiResponse memberJoinCourse(@PathVariable("courseId") Long courseId) { return ApiResponse.ok(Boolean.valueOf(appHealthCourseService.memberJoinCourse(courseId))); } /** * 获取 APP 养生课程主题筛选项。 */ @GetMapping("/health-course-themes") public ApiResponse> themes() { return ApiResponse.ok(appHealthCourseService.listThemes()); } /** * 获取 APP 养生课程难度筛选项。 */ @GetMapping("/health-course-difficulties") public ApiResponse> difficulties() { return ApiResponse.ok(appHealthCourseService.listDifficulties()); } }