From f6d5112ad5c4853bc00cc0cd8067d69d9b3f5992 Mon Sep 17 00:00:00 2001 From: "Chester.X" <2931709855@qq.com> Date: Thu, 4 Jul 2024 22:50:35 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=BA=86CourseController?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/CourseController.java | 97 +++++++++++-------- 1 file changed, 54 insertions(+), 43 deletions(-) diff --git a/src/main/java/org/cmh/backend/CourseManagement/controller/CourseController.java b/src/main/java/org/cmh/backend/CourseManagement/controller/CourseController.java index 3602384..0cf183d 100644 --- a/src/main/java/org/cmh/backend/CourseManagement/controller/CourseController.java +++ b/src/main/java/org/cmh/backend/CourseManagement/controller/CourseController.java @@ -1,67 +1,78 @@ package org.cmh.backend.CourseManagement.controller; +import jakarta.persistence.EntityNotFoundException; +import org.cmh.backend.CourseManagement.dto.GetCourseListResponse; +import org.cmh.backend.CourseManagement.dto.MessageResponse; +import org.cmh.backend.CourseManagement.dto.CourseRequest; import org.cmh.backend.CourseManagement.model.Course; import org.cmh.backend.CourseManagement.service.CourseService; +import org.cmh.backend.Utils.JwtVerify; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataIntegrityViolationException; +import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; -import org.springframework.web.multipart.MultipartFile; -import org.springframework.http.HttpStatus; - -import java.util.List; @RestController -@RequestMapping("/course") +@RequestMapping("/courses") public class CourseController { - @Autowired private CourseService courseService; - @PostMapping("/create") - public ResponseEntity createCourse( - @RequestParam("name") String name, - @RequestParam("description") String description, - @RequestParam("author") String author, - @RequestParam("sortOrder") String sortOrder, - @RequestParam("coverImage") MultipartFile coverImage, - @RequestParam("video") MultipartFile video) { - - Course createdCourse = courseService.createCourse(name, description, author, sortOrder, coverImage, video); - if (createdCourse == null) { - return new ResponseEntity<>("课程已存在", HttpStatus.BAD_REQUEST); + @GetMapping + @JwtVerify + public ResponseEntity getCoursesByRange(@RequestParam Integer start, @RequestParam Integer end, @RequestParam String token) { + if (start >= end) { + return new ResponseEntity<>(HttpStatus.BAD_REQUEST); } - return new ResponseEntity<>("课程创建成功", HttpStatus.OK); + long courseCount = courseService.getCourseCount(); + return new ResponseEntity<>(new GetCourseListResponse(courseCount, courseService.getCoursesByRange(start, end)), HttpStatus.OK); } - @PutMapping("/edit/{id}") - public ResponseEntity updateCourse( - @PathVariable Long id, - @RequestParam("name") String name, - @RequestParam("description") String description, - @RequestParam("author") String author, - @RequestParam("sortOrder") String sortOrder, - @RequestParam(value = "coverImage", required = false) MultipartFile coverImage, - @RequestParam(value = "video", required = false) MultipartFile video) { - - Course updatedCourse = courseService.updateCourse(id, name, description, author, sortOrder, coverImage, video); - if (updatedCourse == null) { - return new ResponseEntity<>("课程未找到", HttpStatus.NOT_FOUND); + @GetMapping("/{id}") + @JwtVerify + public ResponseEntity getCoursePage(@PathVariable Long id, @RequestParam String token) { + try { + return new ResponseEntity<>(courseService.getCourseById(id), HttpStatus.OK); + } catch (EntityNotFoundException e) { + return new ResponseEntity<>(HttpStatus.NOT_FOUND); } - return new ResponseEntity<>("课程修改成功", HttpStatus.OK); } - @DeleteMapping("/delete/{id}") - public ResponseEntity deleteCourse(@PathVariable Long id) { - boolean isDeleted = courseService.deleteCourse(id); - if (!isDeleted) { - return new ResponseEntity<>("课程未找到", HttpStatus.NOT_FOUND); + @PostMapping + @JwtVerify + public ResponseEntity createCourse(@RequestBody CourseRequest request) { + try { + courseService.createCourse(request); + } catch (DataIntegrityViolationException e) { + return new ResponseEntity<>(new MessageResponse("创建失败,课程已存在或缺少字段"), HttpStatus.BAD_REQUEST); + } catch (Exception e) { + return new ResponseEntity<>(new MessageResponse("创建失败:" + e.getMessage()), HttpStatus.BAD_REQUEST); } - return new ResponseEntity<>("课程删除成功", HttpStatus.OK); + return new ResponseEntity<>(new MessageResponse("创建成功"), HttpStatus.CREATED); } - @GetMapping("/getAll") - public ResponseEntity> getAllCourses() { - List courses = courseService.getAllCourses(); - return new ResponseEntity<>(courses, HttpStatus.OK); + @PutMapping("/{id}") + @JwtVerify + public ResponseEntity updateCourse(@PathVariable Long id, @RequestBody CourseRequest request) { + try { + courseService.updateCourse(id, request); + } catch (DataIntegrityViolationException e) { + return new ResponseEntity<>(new MessageResponse("修改失败,新标题已存在或缺少字段"), HttpStatus.BAD_REQUEST); + } catch (Exception e) { + return new ResponseEntity<>(new MessageResponse("修改失败:" + e.getMessage()), HttpStatus.BAD_REQUEST); + } + return new ResponseEntity<>(new MessageResponse("修改成功"), HttpStatus.OK); + } + + @DeleteMapping("/{id}") + @JwtVerify + public ResponseEntity deleteCourse(@PathVariable Long id, @RequestParam String token) { + try { + courseService.deleteCourse(id); + } catch (EntityNotFoundException e) { + return new ResponseEntity<>(new MessageResponse("删除失败,课程不存在"), HttpStatus.BAD_REQUEST); + } + return new ResponseEntity<>(new MessageResponse("删除成功"), HttpStatus.OK); } } \ No newline at end of file