src/main/java/com/mzl/flower/dto/request/film/FilmLocationQueryDTO.java
@@ -20,4 +20,6 @@ @ApiModelProperty("启用/禁用(USER_ENABLED_OR_DISABLED)") private Integer isEnabled; private String continent; } src/main/java/com/mzl/flower/dto/response/film/FilmLocationVO.java
@@ -144,5 +144,7 @@ private Integer operationWeight; private String continent; private String pinyin; private String country; } src/main/java/com/mzl/flower/entity/film/FilmLocation.java
@@ -152,4 +152,7 @@ private String continent; private String pinyin; private String country; } src/main/java/com/mzl/flower/mapper/film/FilmLocationMapper.java
@@ -13,6 +13,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Set; /** * <p> @@ -46,4 +47,22 @@ @Select("select * from film_location where is_enabled = '1' and deleted = '0' order by location_weight desc limit 3") List<FilmLocationVO> getFilmLocationListTop3(); @Select("select id,city,pinyin,country,continent from film_location WHERE continent = #{continent} and deleted = '0' and city is not NULL GROUP BY city,pinyin") List<FilmLocationVO> getFilmLocationLifo(String continent); @Select("select * from film_location WHERE city = #{city} and deleted = '0'") List<FilmLocationVO> getFilmLocationByCity(String city); @Select("<script>" + "SELECT * FROM film_location " + "WHERE id IN " + "<foreach item='id' collection='list' open='(' separator=',' close=')'>" + "#{id}" + "</foreach>" + "</script>") List<FilmLocationVO> findLocationIdByids(@Param("list") List<Long> ids); } src/main/java/com/mzl/flower/service/film/FilmLocationService.java
@@ -42,4 +42,10 @@ List<FilmWorksVO> related(Long locationId); List<FilmLocationVO> getFilmLocationListTop3(); List<FilmLocationVO> getFilmLocationLifo(FilmLocationQueryDTO dto); List<FilmWorksVO> city(String name); List<FilmLocationVO> location(String name); } src/main/java/com/mzl/flower/service/film/impl/FilmLocationServiceImpl.java
@@ -245,11 +245,52 @@ } } @Override public List<FilmWorksVO> city(String name) { if(!StringUtils.isEmpty(name)){ List<FilmLocationVO> filmLocationVOS = filmLocationMapper.getFilmLocationByCity(name); List<Long> ids = new ArrayList<>(); if(!CollectionUtils.isEmpty(filmLocationVOS)){ filmLocationVOS.forEach(f->ids.add(f.getId())); } Set<Long> filmIds = filmLocationWorkMapper.findFilmIdsWithWorks(ids); if (!filmIds.isEmpty()) { List<FilmWorksVO> filmWorksVOS = filmWorksMapper.getFilmWorksByIds(new ArrayList<>(filmIds)); return filmWorksVOS; } else { return null; } }else{ return null; } } @Override public List<FilmLocationVO> location(String name) { if (!StringUtils.isEmpty(name)) { List<FilmLocationVO> filmLocationVOS = filmLocationMapper.getFilmLocationByCity(name); List<Long> ids = new ArrayList<>(); if (!CollectionUtils.isEmpty(filmLocationVOS)) { filmLocationVOS.forEach(f -> ids.add(f.getId())); } List<FilmLocationVO> filmIds = filmLocationMapper.findLocationIdByids(ids); return filmIds; } else { return null; } } @Override public List<FilmLocationVO> getFilmLocationListTop3() { return filmLocationMapper.getFilmLocationListTop3(); } @Override public List<FilmLocationVO> getFilmLocationLifo(FilmLocationQueryDTO dto) { return filmLocationMapper.getFilmLocationLifo(dto.getContinent()); } private void updateLocationRelations(Long targetId, List<Long> mergeIds) { // 查询所有待更新的工作记录 LambdaQueryWrapper<FilmLocationWork> query = new LambdaQueryWrapper<>(); src/main/java/com/mzl/flower/web/film/FilmLocationController.java
@@ -42,6 +42,13 @@ return returnData(R.SUCCESS.getCode(), filmLocationService.queryPage(dto, page)); } @GetMapping("/filmLocation/info") @ApiOperation(value = "城市列表", httpMethod = "GET") public ResponseEntity<ReturnDataDTO<List<FilmLocationVO>>> getFilmLocationLifo(FilmLocationQueryDTO dto) { return returnData(R.SUCCESS.getCode(), filmLocationService.getFilmLocationLifo(dto)); } @GetMapping("/filmLocation/getTop3") @ApiOperation(value = "影视拍摄场地前三", httpMethod = "GET") public ResponseEntity<ReturnDataDTO<List<FilmLocationVO>>> getFilmLocationListTop3() { @@ -110,4 +117,17 @@ return returnData(R.SUCCESS.getCode(), filmLocationService.related(locationId)); } @GetMapping("/filmLocation/city") @ApiOperation(value = "城市对应的影视作品", notes = "城市对应的影视作品") public ResponseEntity<ReturnDataDTO<List<FilmWorksVO>>> city(@NotNull(message = "name不能为空") String name) { return returnData(R.SUCCESS.getCode(), filmLocationService.city(name)); } @GetMapping("/filmLocation/location") @ApiOperation(value = "城市对应的影视作品", notes = "城市对应的影视作品") public ResponseEntity<ReturnDataDTO<List<FilmLocationVO>>> location(@NotNull(message = "name不能为空") String name) { return returnData(R.SUCCESS.getCode(), filmLocationService.location(name)); } } src/main/resources/mapper/film/FilmLocationMapper.xml
@@ -21,6 +21,9 @@ <if test="dto.region != null and dto.region != ''"> AND t.region LIKE concat('%', #{dto.region},'%') </if> <if test="dto.continent != null and dto.continent != ''"> AND t.continent LIKE concat('%', #{dto.continent},'%') </if> <if test="dto.isEnabled!=null"> AND t.is_enabled = #{dto.isEnabled} </if>