| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- package nju.seec.helper.logic.service.impl;
- import nju.seec.helper.data.dao.SlideDAO;
- import nju.seec.helper.data.entity.Course;
- import nju.seec.helper.data.entity.Slide;
- import nju.seec.helper.logic.convert.DTOConvertFactory;
- import nju.seec.helper.logic.convert.EntityConvertFactory;
- import nju.seec.helper.logic.service.CourseService;
- import nju.seec.helper.logic.service.SlideService;
- import nju.seec.helper.logic.vo.SlideVO;
- import nju.seec.helper.util.enums.SlideState;
- import nju.seec.helper.util.exception.HelperException;
- import nju.seec.helper.web.dto.SlideDTO;
- import org.springframework.cache.annotation.CacheConfig;
- import org.springframework.cache.annotation.CacheEvict;
- import org.springframework.cache.annotation.CachePut;
- import org.springframework.cache.annotation.Cacheable;
- import org.springframework.data.domain.Page;
- import org.springframework.data.domain.Pageable;
- import org.springframework.stereotype.Service;
- import java.util.List;
- import java.util.stream.Collectors;
- /**
- * @author cst
- */
- @Service
- @CacheConfig(cacheNames = "slide")
- public class SlideServiceImpl implements SlideService {
- private final SlideDAO slideDAO;
- private final CourseService courseService;
- public SlideServiceImpl(SlideDAO slideDAO, CourseService courseService) {
- this.slideDAO = slideDAO;
- this.courseService = courseService;
- }
- @Override
- public List<SlideVO> getSlides(String courseId, String key, Pageable pageable) {
- Page<Slide> slidePage = slideDAO.findByCourseIdAndNameContains(courseId, key, pageable);
- return slidePage.getContent().stream()
- .map(slide -> EntityConvertFactory.convert(slide, SlideVO.class))
- .collect(Collectors.toList());
- }
- @Override
- public List<SlideVO> getSlides(String key, Pageable pageable) {
- Page<Slide> slidePage = slideDAO.findByNameContains(key, pageable);
- return slidePage.getContent().stream()
- .map(slide -> EntityConvertFactory.convert(slide, SlideVO.class))
- .collect(Collectors.toList());
- }
- @Cacheable(key = "#slideId")
- @Override
- public SlideVO getOneSlide(int slideId) {
- Slide slide = findSlideById(slideId);
- return EntityConvertFactory.convert(slide, SlideVO.class);
- }
- @Override
- public SlideVO create(SlideDTO slideDTO) {
- Slide slide = new Slide();
- Course course = courseService.findCourseById(slideDTO.getCourseId());
- slide.setCourseId(course.getId());
- slide.setCourseName(course.getName());
- slide.setName(slideDTO.getName());
- slide.setState(SlideState.DRAFT);
- slide = slideDAO.save(slide);
- return EntityConvertFactory.convert(slide, SlideVO.class);
- }
- @CachePut(key = "#slideDTO.id")
- @Override
- public SlideVO update(SlideDTO slideDTO) {
- Slide slide = DTOConvertFactory.convert(slideDTO);
- slideDAO.save(slide);
- return EntityConvertFactory.convert(findSlideById(slideDTO.getId()), SlideVO.class);
- }
- @CacheEvict(key = "#slideId")
- @Override
- public void delete(int slideId) {
- slideDAO.deleteById(slideId);
- }
- private Slide findSlideById(int slideId) {
- return slideDAO.findById(slideId).orElseThrow(() -> HelperException.of(
- HelperException.ExceptionType.NOT_FOUND, "找不到幻灯片")
- );
- }
- }
|