From e7e0a1b534c9ac0ab76102a0ffc0939ba1d447ee Mon Sep 17 00:00:00 2001
From: cloudroam <cloudroam>
Date: 星期四, 07 八月 2025 13:39:22 +0800
Subject: [PATCH] add:热门城市

---
 src/main/java/com/mzl/flower/dto/request/film/FilmLocationQueryDTO.java     |    2 +
 src/main/java/com/mzl/flower/entity/film/FilmLocation.java                  |    3 +
 src/main/java/com/mzl/flower/service/film/impl/FilmLocationServiceImpl.java |   41 ++++++++++++++++++++
 src/main/java/com/mzl/flower/mapper/film/FilmLocationMapper.java            |   19 +++++++++
 src/main/resources/mapper/film/FilmLocationMapper.xml                       |    3 +
 src/main/java/com/mzl/flower/web/film/FilmLocationController.java           |   20 ++++++++++
 src/main/java/com/mzl/flower/dto/response/film/FilmLocationVO.java          |    2 +
 src/main/java/com/mzl/flower/service/film/FilmLocationService.java          |    6 +++
 8 files changed, 96 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/mzl/flower/dto/request/film/FilmLocationQueryDTO.java b/src/main/java/com/mzl/flower/dto/request/film/FilmLocationQueryDTO.java
index 2638daa..27f991f 100644
--- a/src/main/java/com/mzl/flower/dto/request/film/FilmLocationQueryDTO.java
+++ b/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;
 }
diff --git a/src/main/java/com/mzl/flower/dto/response/film/FilmLocationVO.java b/src/main/java/com/mzl/flower/dto/response/film/FilmLocationVO.java
index e17aee7..4de2208 100644
--- a/src/main/java/com/mzl/flower/dto/response/film/FilmLocationVO.java
+++ b/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;
 
 }
diff --git a/src/main/java/com/mzl/flower/entity/film/FilmLocation.java b/src/main/java/com/mzl/flower/entity/film/FilmLocation.java
index 3cd3e7d..7616b4e 100644
--- a/src/main/java/com/mzl/flower/entity/film/FilmLocation.java
+++ b/src/main/java/com/mzl/flower/entity/film/FilmLocation.java
@@ -152,4 +152,7 @@
 
     private String continent;
 
+    private String pinyin;
+    private String country;
+
 }
diff --git a/src/main/java/com/mzl/flower/mapper/film/FilmLocationMapper.java b/src/main/java/com/mzl/flower/mapper/film/FilmLocationMapper.java
index 1aa3157..2604b5f 100644
--- a/src/main/java/com/mzl/flower/mapper/film/FilmLocationMapper.java
+++ b/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);
 }
diff --git a/src/main/java/com/mzl/flower/service/film/FilmLocationService.java b/src/main/java/com/mzl/flower/service/film/FilmLocationService.java
index 5fdab4d..86aa726 100644
--- a/src/main/java/com/mzl/flower/service/film/FilmLocationService.java
+++ b/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);
 }
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 49a67a5..3222344 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
@@ -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<>();
diff --git a/src/main/java/com/mzl/flower/web/film/FilmLocationController.java b/src/main/java/com/mzl/flower/web/film/FilmLocationController.java
index 6e98f4f..4f4e218 100644
--- a/src/main/java/com/mzl/flower/web/film/FilmLocationController.java
+++ b/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));
+    }
+
+
 }
diff --git a/src/main/resources/mapper/film/FilmLocationMapper.xml b/src/main/resources/mapper/film/FilmLocationMapper.xml
index 011a66a..0a616ae 100644
--- a/src/main/resources/mapper/film/FilmLocationMapper.xml
+++ b/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>

--
Gitblit v1.9.3