|
|
@@ -33,36 +33,48 @@ public class SlideServiceImpl implements SlideService {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public List<SlideVO> getTeacherSlides(String courseId, String key, Pageable pageable) {
|
|
|
- Page<Slide> slidePage = slideDAO.findByCourseIdAndNameContains(courseId, key, pageable);
|
|
|
+ public List<SlideVO> teacherGetSlides(Integer teacherId, Integer courseId, String key, Pageable pageable) {
|
|
|
+ Page<Slide> slidePage = slideDAO.findByTeacherIdAndCourseIdAndNameContains(teacherId, courseId, key, pageable);
|
|
|
|
|
|
- return slidePage.getContent().stream()
|
|
|
+ return slidePage
|
|
|
+ .getContent()
|
|
|
+ .stream()
|
|
|
.map(SlideVO::new)
|
|
|
.collect(Collectors.toList());
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public List<SlideVO> getTeacherSlides(String key, Pageable pageable) {
|
|
|
- Page<Slide> slidePage = slideDAO.findByNameContains(key, pageable);
|
|
|
+ public List<SlideVO> teacherGetSlides(Integer teacherId, String key, Pageable pageable) {
|
|
|
+ Page<Slide> slidePage = slideDAO.findByTeacherIdAndNameContains(teacherId, key, pageable);
|
|
|
|
|
|
- return slidePage.getContent().stream()
|
|
|
+ return slidePage
|
|
|
+ .getContent()
|
|
|
+ .stream()
|
|
|
.map(SlideVO::new)
|
|
|
.collect(Collectors.toList());
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public SlideVO getOneSlide(int slideId) {
|
|
|
+ public SlideVO teacherGetOneSlide(Integer teacherId, Integer slideId) {
|
|
|
Slide slide = slideDAO.findSlideById(slideId);
|
|
|
+
|
|
|
+ if (!slide.getTeacherId().equals(teacherId)) {
|
|
|
+ throw HelperException.of(HelperException.ExceptionType.FORBIDDEN, "你无权查看该幻灯片");
|
|
|
+ }
|
|
|
return new SlideVO(slide);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public SlideVO create(SlideDTO slideDTO) {
|
|
|
- if (slideDAO.existsByName(slideDTO.getName())) {
|
|
|
- throw HelperException.of(HelperException.ExceptionType.CONFLICT, "该幻灯片已存在");
|
|
|
+ public SlideVO create(Integer teacherId, SlideDTO slideDTO) {
|
|
|
+ if (slideDAO.existsByCourseIdAndName(slideDTO.getCourseId(), slideDTO.getName())) {
|
|
|
+ throw HelperException.of(HelperException.ExceptionType.CONFLICT, "该幻灯片名已被使用");
|
|
|
}
|
|
|
+
|
|
|
Slide slide = new Slide();
|
|
|
- this.copySlideDTOToSlide(slideDTO, slide);
|
|
|
+ slide.setTeacherId(teacherId);
|
|
|
+ slide.setName(slideDTO.getName());
|
|
|
+ slide.setState(SlideState.DRAFT);
|
|
|
+
|
|
|
Course course = courseDAO.findCourseById(slideDTO.getCourseId());
|
|
|
slide.setCourseId(course.getId());
|
|
|
slide.setCourseName(course.getName());
|
|
|
@@ -72,42 +84,68 @@ public class SlideServiceImpl implements SlideService {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public SlideVO update(SlideDTO slideDTO) {
|
|
|
- Slide slide = slideDAO.findSlideById(slideDTO.getId());
|
|
|
- this.copySlideDTOToSlide(slideDTO, slide);
|
|
|
- slide = slideDAO.save(slide);
|
|
|
- return new SlideVO(slide);
|
|
|
+ public SlideVO update(Integer teacherId, SlideDTO slideDTO) {
|
|
|
+ if (slideDAO.existsByCourseIdAndName(slideDTO.getCourseId(), slideDTO.getName())) {
|
|
|
+ throw HelperException.of(HelperException.ExceptionType.CONFLICT, "该幻灯片名已被使用");
|
|
|
+ }
|
|
|
+ final Slide slide = slideDAO.findSlideById(slideDTO.getId());
|
|
|
+ if (!slide.getTeacherId().equals(teacherId)) {
|
|
|
+ throw HelperException.of(HelperException.ExceptionType.FORBIDDEN, "你无权修改该幻灯片");
|
|
|
+ }
|
|
|
+ slide.setState(slideDTO.getState());
|
|
|
+ slide.setName(slideDTO.getName());
|
|
|
+ slide.setItems(
|
|
|
+ slideDTO.getItems()
|
|
|
+ .stream()
|
|
|
+ .map(itemDTO -> {
|
|
|
+ Item item = new Item();
|
|
|
+ BeanUtils.copyProperties(itemDTO, item);
|
|
|
+ item.setSlide(slide);
|
|
|
+ return item;
|
|
|
+ })
|
|
|
+ .collect(Collectors.toList())
|
|
|
+ );
|
|
|
+ return new SlideVO(slideDAO.save(slide));
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public SlideVO updateState(int slideId, SlideState state) {
|
|
|
+ public SlideVO updateState(Integer teacherId, Integer slideId, SlideState state) {
|
|
|
Slide slide = slideDAO.findSlideById(slideId);
|
|
|
+ if (!slide.getTeacherId().equals(teacherId)) {
|
|
|
+ throw HelperException.of(HelperException.ExceptionType.FORBIDDEN, "你无权修改该幻灯片");
|
|
|
+ }
|
|
|
slide.setState(state);
|
|
|
slide = slideDAO.save(slide);
|
|
|
return new SlideVO(slide);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public void delete(int slideId) {
|
|
|
+ public void delete(Integer teacherId, Integer slideId) {
|
|
|
+ Slide slide = slideDAO.findSlideById(slideId);
|
|
|
+ if (!slide.getTeacherId().equals(teacherId)) {
|
|
|
+ throw HelperException.of(HelperException.ExceptionType.FORBIDDEN, "你无权删除该幻灯片");
|
|
|
+ }
|
|
|
slideDAO.deleteById(slideId);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public List<SlideVO> getStudentSlides(String courseId, String key, Pageable pageable) {
|
|
|
- Page<Slide> slidePage = slideDAO.findByCourseIdAndStateNotAndNameContains(courseId, SlideState.DRAFT, key, pageable);
|
|
|
- return slidePage.getContent().stream()
|
|
|
+ public List<SlideVO> studentGetSlides(Integer studentId, Integer courseId, String key, Pageable pageable) {
|
|
|
+ Page<Slide> slidePage = slideDAO.findByCourseIdAndStateNotInAndNameContains(courseId, Collections.singleton(SlideState.DRAFT), key, pageable);
|
|
|
+ return slidePage
|
|
|
+ .getContent()
|
|
|
+ .stream()
|
|
|
.map(SlideVO::new)
|
|
|
.collect(Collectors.toList());
|
|
|
}
|
|
|
|
|
|
- private void copySlideDTOToSlide(SlideDTO slideDTO, Slide slide) {
|
|
|
- BeanUtils.copyProperties(slideDTO, slide, "courseId", "courseName", "createTime", "updateTime", "items");
|
|
|
- slide.setItems(slideDTO.getItems().stream()
|
|
|
- .map(itemDTO -> {
|
|
|
- Item item = new Item();
|
|
|
- BeanUtils.copyProperties(itemDTO, item);
|
|
|
- item.setSlide(slide);
|
|
|
- return item;
|
|
|
- }).collect(Collectors.toList()));
|
|
|
+ @Override
|
|
|
+ public SlideVO studentGetOneSlide(Integer studentId, Integer slideId) {
|
|
|
+ Slide slide = slideDAO.findByIdAndStateNotIn(slideId, Collections.singleton(SlideState.DRAFT));
|
|
|
+
|
|
|
+ if (slide == null) {
|
|
|
+ throw HelperException.of(HelperException.ExceptionType.NOT_FOUND, "找不到幻灯片");
|
|
|
+ } else {
|
|
|
+ return new SlideVO(slide);
|
|
|
+ }
|
|
|
}
|
|
|
}
|