package com.tcm.training.admin.app.live.controller; import com.tcm.training.admin.app.live.dto.AppLiveQuizSubmitRequest; import com.tcm.training.admin.app.live.dto.AppLiveWatchRecordUploadRequest; import com.tcm.training.admin.app.live.service.AppLiveCourseService; import com.tcm.training.admin.app.live.vo.AppLiveCourseDetailVO; import com.tcm.training.admin.app.live.vo.AppLiveQuizStatusVO; import com.tcm.training.admin.app.live.vo.AppLiveQuizSubmitResultVO; import com.tcm.training.admin.app.live.vo.AppLiveReserveResultVO; import com.tcm.training.admin.app.live.vo.AppLiveWatchRecordUploadResultVO; import com.tcm.training.admin.common.ApiResponse; 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.RestController; import javax.validation.Valid; /** * APP 养生直播详情接口。 */ @Validated @RestController @RequestMapping({"/api/app", "/api/v1/app"}) public class AppLiveCourseController { private final AppLiveCourseService appLiveCourseService; /** * 注入 APP 养生直播详情服务。 */ public AppLiveCourseController(AppLiveCourseService appLiveCourseService) { this.appLiveCourseService = appLiveCourseService; } /** * 获取 APP 养生直播详情。 */ @GetMapping("/live-courses/{courseId}") public ApiResponse detail(@PathVariable("courseId") Long courseId) { return ApiResponse.ok(appLiveCourseService.detail(courseId)); } /** * 获取 APP 直播观看页答题状态与题目。 */ @GetMapping("/live-courses/{courseId}/sessions/{sessionId}/quiz") public ApiResponse quizStatus(@PathVariable("courseId") Long courseId, @PathVariable("sessionId") Long sessionId) { return ApiResponse.ok(appLiveCourseService.quizStatus(courseId, sessionId)); } /** * 提交 APP 直播观看页答题结果。 */ @PostMapping("/live-courses/{courseId}/sessions/{sessionId}/quiz/submit") public ApiResponse submitQuiz(@PathVariable("courseId") Long courseId, @PathVariable("sessionId") Long sessionId, @Valid @RequestBody AppLiveQuizSubmitRequest request) { return ApiResponse.ok(appLiveCourseService.submitQuiz(courseId, sessionId, request)); } /** * 上报 APP 直播观看页的观看时长片段。 */ @PostMapping("/live-courses/{courseId}/sessions/{sessionId}/watch-records") public ApiResponse uploadWatchRecord(@PathVariable("courseId") Long courseId, @PathVariable("sessionId") Long sessionId, @Valid @RequestBody AppLiveWatchRecordUploadRequest request) { return ApiResponse.ok(appLiveCourseService.uploadWatchRecord(courseId, sessionId, request)); } /** * 提交 APP 养生直播预约。 */ @PostMapping("/live-courses/{courseId}/sessions/{sessionId}/reserve") public ApiResponse reserve(@PathVariable("courseId") Long courseId, @PathVariable("sessionId") Long sessionId) { return ApiResponse.ok(appLiveCourseService.reserve(courseId, sessionId)); } }