| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- package nju.seec.helper.controller;
- import nju.seec.helper.aspect.auth.Auth;
- import nju.seec.helper.aspect.auth.LoginUser;
- import nju.seec.helper.controller.response.PageResponse;
- import nju.seec.helper.dto.groups.Create;
- import nju.seec.helper.dto.groups.Modify;
- import nju.seec.helper.dto.slide.SlideDTO;
- import nju.seec.helper.dto.slide.SlideFileDTO;
- import nju.seec.helper.dto.slide.SlideStateDTO;
- import nju.seec.helper.enums.UserRole;
- import nju.seec.helper.service.SlideService;
- import nju.seec.helper.vo.SlideVO;
- import org.springframework.data.domain.Pageable;
- import org.springframework.data.web.PageableDefault;
- import org.springframework.http.ResponseEntity;
- import org.springframework.validation.annotation.Validated;
- import org.springframework.web.bind.annotation.*;
- /**
- * 课件
- *
- * @author cst
- */
- @RestController
- @RequestMapping("/api/slide")
- public class SlideController {
- private final SlideService slideService;
- public SlideController(SlideService slideService) {
- this.slideService = slideService;
- }
- /**
- * 教师创建课件
- */
- @Auth(roles = UserRole.TEACHER, message = "创建课件")
- @PostMapping
- public ResponseEntity<SlideVO> createSlide(LoginUser user,
- @Validated(Create.class) SlideDTO slideDTO) {
- SlideVO slideVO = slideService.createSlide(user, slideDTO);
- return ResponseEntity.ok(slideVO);
- }
- /**
- * 教师修改课件
- */
- @Auth(roles = UserRole.TEACHER, message = "修改课件")
- @PutMapping("/{slideId}")
- public SlideVO modifySlide(LoginUser user,
- @PathVariable Long slideId,
- @Validated(Modify.class) @RequestBody SlideDTO slideDTO) {
- return slideService.modifySlide(user, slideId, slideDTO);
- }
- /**
- * 教师修改课件状态
- */
- @Auth(roles = UserRole.TEACHER, message = "修改课件状态")
- @PutMapping("/{slideId}/state")
- public void modifySlideState(LoginUser user,
- @PathVariable Long slideId,
- @Validated @RequestBody SlideStateDTO slideStateDTO) {
- slideService.modifySlideState(user, slideId, slideStateDTO);
- }
- /**
- * 教师修改课件文件
- */
- @Auth(roles = UserRole.TEACHER, message = "修改课件文件")
- @PutMapping("/{slideId}/file")
- public void modifySlideFile(LoginUser user,
- @PathVariable Long slideId,
- @Validated SlideFileDTO slideFileDTO) {
- slideService.modifySlideFile(user, slideId, slideFileDTO);
- }
- /**
- * 教师删除课件
- */
- @Auth(roles = UserRole.TEACHER, message = "删除课件")
- @DeleteMapping("/{slideId}")
- public void deleteSlide(LoginUser user,
- @PathVariable Long slideId) {
- slideService.deleteSlide(user, slideId);
- }
- /**
- * 教师获取课件
- */
- @Auth(roles = UserRole.TEACHER, message = "获取课件列表")
- @GetMapping
- public PageResponse<SlideVO> getSlides(LoginUser user,
- @RequestParam(required = false, defaultValue = "") String key,
- @PageableDefault(size = Integer.MAX_VALUE) Pageable pageable) {
- return PageResponse.of(slideService.teacherGetSlides(user, key, pageable));
- }
- /**
- * 基于课程获取课件
- */
- @Auth(roles = {UserRole.TEACHER, UserRole.STUDENT}, message = "获取课件列表")
- @GetMapping("/course/{courseId}")
- public PageResponse<SlideVO> getSlidesByCourse(LoginUser user,
- @PathVariable Long courseId,
- @RequestParam(required = false, defaultValue = "") String key,
- @PageableDefault(size = Integer.MAX_VALUE) Pageable pageable) {
- return PageResponse.of(slideService.getSlidesByCourse(user, courseId, key, pageable));
- }
- /**
- * 获取课件链接
- */
- @Auth(roles = {UserRole.TEACHER, UserRole.STUDENT}, message = "获取课件链接")
- @GetMapping("/{slideId}/url")
- public String getSlideUrl(LoginUser user,
- @PathVariable Long slideId) {
- return slideService.getSlideUrl(user, slideId);
- }
- /**
- * 获取某课件
- */
- @Auth(roles = {UserRole.TEACHER, UserRole.STUDENT}, message = "获取课件")
- @GetMapping("/{slideId}")
- public SlideVO getOneSlide(LoginUser user, @PathVariable Long slideId) {
- return slideService.getOneSlide(user, slideId);
- }
- }
|