From d678db8fe85e51b65403f3edae4bff18aa23ee15 Mon Sep 17 00:00:00 2001 From: cloudroam <cloudroam> Date: 星期二, 01 七月 2025 10:28:07 +0800 Subject: [PATCH] add:影视景点管理 --- src/main/java/com/mzl/flower/service/film/impl/FilmLocationServiceImpl.java | 59 +++++++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 49 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/mzl/flower/service/film/impl/FilmLocationServiceImpl.java b/src/main/java/com/mzl/flower/service/film/impl/FilmLocationServiceImpl.java index 9c27933..4528c16 100644 --- a/src/main/java/com/mzl/flower/service/film/impl/FilmLocationServiceImpl.java +++ b/src/main/java/com/mzl/flower/service/film/impl/FilmLocationServiceImpl.java @@ -7,13 +7,15 @@ 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; @@ -26,11 +28,7 @@ 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; /** @@ -47,11 +45,10 @@ 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 @@ -84,7 +81,7 @@ 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); } @@ -199,6 +196,47 @@ } + @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; + } + } private void updateLocationRelations(Long targetId, List<Long> mergeIds) { // 查询所有待更新的工作记录 @@ -219,4 +257,5 @@ filmLocationWorkService.updateBatchById(toUpdate); } } + } -- Gitblit v1.9.3