Ver código fonte

feat: 增加判断幻灯片是否重名功能

ChenSiTong 6 anos atrás
pai
commit
95a3486836

+ 7 - 0
src/main/java/nju/seec/helper/data/dao/SlideDAO.java

@@ -29,4 +29,11 @@ public interface SlideDAO extends JpaRepository<Slide, Integer> {
      * @return
      */
     Page<Slide> findByNameContains(String key, Pageable pageable);
+
+    /**
+     * 判断是否存在相同幻灯片名
+     * @param name
+     * @return
+     */
+    boolean existsByName(String name);
 }

+ 5 - 0
src/main/java/nju/seec/helper/logic/service/impl/SlideServiceImpl.java

@@ -18,6 +18,7 @@ import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Service;
 
+import java.util.Collections;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -63,10 +64,14 @@ public class SlideServiceImpl implements SlideService {
 
     @Override
     public SlideVO create(SlideDTO slideDTO) {
+        if (slideDAO.existsByName(slideDTO.getName())) {
+            throw HelperException.of(HelperException.ExceptionType.CONFLICT, "该幻灯片已存在");
+        }
         Slide slide = DTOConvertFactory.convert(slideDTO);
         Course course = courseService.findCourseById(slideDTO.getCourseId());
         slide.setCourseId(course.getId());
         slide.setCourseName(course.getName());
+        slide.setItems(Collections.emptyList());
         slide = slideDAO.save(slide);
         return EntityConvertFactory.convert(slide, SlideVO.class);
     }

+ 1 - 0
src/main/java/nju/seec/helper/logic/vo/SlideVO.java

@@ -12,6 +12,7 @@ import java.util.List;
 @Data
 public class SlideVO {
     private String courseId;
+    private String courseName;
     private Integer id;
     private SlideState state;
     private String name;

+ 2 - 2
src/main/java/nju/seec/helper/web/controller/SlideController.java

@@ -34,7 +34,7 @@ public class SlideController {
     @ApiOperation(value = "根据课程ID和关键字获取创建的幻灯片列表", notes = "支持定制化分页排序,例:/course/seec?page=3&size=10&sort=id,asc&sort=name,desc,即以id正向排序再以name倒序排序,请求第3页,返回10条数据")
     @GetMapping("/course/{courseId}")
     public PageResourceResponse<SlideVO> getSlides(@PathVariable String courseId,
-                                                   @RequestParam(defaultValue = "") String key,
+                                                   @RequestParam(required = false, defaultValue = "") String key,
                                                    @ApiParam(hidden = true) @PageableDefault(size = Integer.MAX_VALUE, sort = "updateTime", direction = Sort.Direction.DESC) Pageable pageable) {
         List<SlideVO> slideVOs = slideService.getSlides(courseId, key, pageable);
         return PageResourceResponse.of(slideVOs, PageResourceResponse.PageInfo.of(pageable.getPageNumber(), slideVOs.size()));
@@ -43,7 +43,7 @@ public class SlideController {
 
     @ApiOperation(value = "根据关键字获取创建的幻灯片列表", notes = "支持定制化分页排序,例:/course/seec?page=3&size=10&sort=id,asc&sort=name,desc,即以id正向排序再以name倒序排序,请求第3页,返回10条数据")
     @GetMapping("")
-    public PageResourceResponse<SlideVO> getSlides(@RequestParam(defaultValue = "") String key,
+    public PageResourceResponse<SlideVO> getSlides(@RequestParam(required = false, defaultValue = "") String key,
                                                    @ApiParam(hidden = true) @PageableDefault(size = Integer.MAX_VALUE, sort = "updateTime", direction = Sort.Direction.DESC) Pageable pageable) {
         List<SlideVO> slideVOs = slideService.getSlides(key, pageable);
         return PageResourceResponse.of(slideVOs, PageResourceResponse.PageInfo.of(pageable.getPageNumber(), slideVOs.size()));