| | |
| | | import com.mzl.flower.dto.BatchDTO; |
| | | import com.mzl.flower.dto.request.film.FilmLocationDTO; |
| | | import com.mzl.flower.dto.request.film.FilmLocationQueryDTO; |
| | | import com.mzl.flower.dto.response.film.FilmLocationNameDTO; |
| | | import com.mzl.flower.dto.response.film.FilmLocationVO; |
| | | import com.mzl.flower.dto.response.film.FilmWorksVO; |
| | | import com.mzl.flower.entity.film.FilmLocation; |
| | | import com.mzl.flower.entity.film.FilmLocationWork; |
| | | import com.mzl.flower.entity.film.FilmWorks; |
| | | import com.mzl.flower.entity.system.Role; |
| | | import com.mzl.flower.mapper.film.FilmLocationMapper; |
| | | import com.mzl.flower.mapper.film.FilmLocationWorkMapper; |
| | | import com.mzl.flower.mapper.film.FilmWorksMapper; |
| | | import com.mzl.flower.service.film.FilmLocationService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.mzl.flower.service.film.FilmLocationWorkService; |
| | |
| | | import org.springframework.util.ObjectUtils; |
| | | import org.springframework.util.StringUtils; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Objects; |
| | | import java.util.function.Function; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | |
| | | public class FilmLocationServiceImpl extends ServiceImpl<FilmLocationMapper, FilmLocation> implements FilmLocationService { |
| | | |
| | | private final FilmLocationMapper filmLocationMapper; |
| | | |
| | | |
| | | private final RoleService roleService; |
| | | |
| | | private final FilmLocationWorkMapper filmLocationWorkMapper; |
| | | |
| | | private final FilmWorksMapper filmWorksMapper; |
| | | private final FilmLocationWorkService filmLocationWorkService; |
| | | |
| | | @Override |
| | |
| | | BeanUtils.copyProperties(filmLocationDTO, filmLocation); |
| | | filmLocation.create(); |
| | | filmLocationMapper.insert(filmLocation); |
| | | //此处传入参数是否有影视作品ID,如果不等于空,则需要保存关联关系 |
| | | if (!StringUtils.isEmpty(filmLocationDTO.getFilmId())) { |
| | | FilmLocationWork filmLocationWork = new FilmLocationWork(); |
| | | filmLocationWork.setFilmId(filmLocationDTO.getFilmId()); |
| | | filmLocationWork.setLocationId(filmLocation.getId()); |
| | | filmLocationWorkMapper.insert(filmLocationWork); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | |
| | | if (!filmLocation1.getId().equals(filmLocation.getId())) { |
| | | throw new ValidationException("景点名称重复"); |
| | | } |
| | | BeanUtils.copyProperties(filmLocationDTO, filmLocation); |
| | | BeanUtils.copyProperties(filmLocationDTO, filmLocation,"filmId","startDate","endDate","visitorPhotos","isEnabled","transportGuide"); |
| | | filmLocation.update(SecurityUtils.getUserId()); |
| | | filmLocationMapper.updateById(filmLocation); |
| | | } |
| | |
| | | |
| | | } |
| | | |
| | | @Override |
| | | @Transactional |
| | | public void batchDelete(BatchDTO dto) { |
| | | if (CollectionUtils.isEmpty(dto.getIds())) { |
| | | throw new ValidationException("删除ID列表不能为空"); |
| | | } |
| | | |
| | | Set<Long> protectedIds = filmLocationWorkMapper.findLocationIdsWithWorks(dto.getIds()); |
| | | if (!protectedIds.isEmpty()) { |
| | | Map<Long, FilmLocationNameDTO> locationDTOs = filmLocationMapper.getLocationNamesByIds( |
| | | new ArrayList<>(protectedIds) |
| | | ); |
| | | |
| | | String errorMsg = protectedIds.stream() |
| | | .map(id -> { |
| | | FilmLocationNameDTO locationNameDTO = locationDTOs.get(id); |
| | | String name = (locationNameDTO != null && locationNameDTO.getName() != null) ? |
| | | locationNameDTO.getName() : "未知景点"; |
| | | return String.format("%s(ID:%d)", name, id); |
| | | }) |
| | | .collect(Collectors.joining("、")); |
| | | |
| | | throw new ValidationException("以下景点有对应的影视作品,无法删除: " + errorMsg); |
| | | } |
| | | |
| | | filmLocationMapper.deleteBatchIds(dto.getIds()); |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public List<FilmWorksVO> related(Long locationId) { |
| | | List<Long> ids = new ArrayList<>(); |
| | | ids.add(locationId); |
| | | Set<Long> filmIds = filmLocationWorkMapper.findFilmIdsWithWorks(ids); |
| | | if (!filmIds.isEmpty()) { |
| | | List<FilmWorksVO> filmWorksVOS = filmWorksMapper.getFilmWorksByIds(new ArrayList<>(filmIds)); |
| | | return filmWorksVOS; |
| | | } else { |
| | | return null; |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public List<FilmLocationVO> getFilmLocationListTop3() { |
| | | return filmLocationMapper.getFilmLocationListTop3(); |
| | | } |
| | | |
| | | private void updateLocationRelations(Long targetId, List<Long> mergeIds) { |
| | | // 查询所有待更新的工作记录 |
| | |
| | | filmLocationWorkService.updateBatchById(toUpdate); |
| | | } |
| | | } |
| | | |
| | | } |