Browse Source

获取国家、省份、城市、区域下拉列表

zhj 2 years ago
parent
commit
e3ab6fad35

+ 152 - 0
src/main/java/com/welampiot/controller/CommonController.java

@@ -0,0 +1,152 @@
+package com.welampiot.controller;
+
+import com.welampiot.common.BaseResult;
+import com.welampiot.dto.GlobalLocationDTO;
+import com.welampiot.service.GlobalLocationService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+
+/**
+ * ClassName: CommonController
+ * Package: com.welampiot.controller
+ * Description:
+ *
+ * @Author: zhj_Start
+ * @Create: 2023/3/22 - 20:02
+ * @Version: v1.0
+ */
+@RestController
+@CrossOrigin
+@RequestMapping("/api/common")
+public class CommonController {
+
+    @Autowired
+    private GlobalLocationService globalLocationService;
+
+    /**
+     * 获取国家下拉列表
+     * @param request
+     * @return
+     */
+    @PostMapping("/get_country")
+    public BaseResult<GlobalLocationDTO> getCountry(HttpServletRequest request){
+        String version = request.getParameter("version") == null ? "0" : request.getParameter("version");
+        List<GlobalLocationDTO> countryList;
+        if (version != null && version.equals("0")){
+            //获取国家的id和国家的中文名称
+           countryList = globalLocationService.getAreaByLevel(0,1);
+        }else if (version != null && version.equals("1")){
+            //获取国家的id和国家的英文名称
+           countryList = globalLocationService.getAreaByLevel(1,1);
+        }else{
+            //获取国家的id和国家的俄语名称
+           countryList = globalLocationService.getAreaByLevel(Integer.parseInt(version),1);
+        }
+        return BaseResult.success(countryList);
+    }
+
+    /**
+     * 获取省级下拉列表
+     * @param request
+     * @return
+     */
+    @PostMapping("/get_province")
+    public BaseResult<GlobalLocationDTO> getProvince(HttpServletRequest request){
+        Integer version = request.getParameter("version") == null ? 0 : Integer.parseInt(request.getParameter("version"));
+        Integer countryId = request.getParameter("countryId") == null ? 0 : Integer.parseInt(request.getParameter("countryId"));
+        List<GlobalLocationDTO> provinceList;
+        if (countryId != 0){
+            if (version == 0){
+                //获取省级id和省级的中文名称
+                provinceList = globalLocationService.getAreaByLevelAndPid(0,2,countryId);
+            }else if (version == 1){
+                //获取省级id和省级的英文名称
+                provinceList = globalLocationService.getAreaByLevelAndPid(1,2,countryId);
+            }else {
+                //获取省级id和省级的俄语名称
+                provinceList = globalLocationService.getAreaByLevelAndPid(version,2,countryId);
+            }
+        }else {
+            if (version == 0){
+                provinceList = globalLocationService.getAreaByLevel(0,2);
+            }else if (version == 1){
+                provinceList = globalLocationService.getAreaByLevel(1,2);
+            }else{
+                provinceList = globalLocationService.getAreaByLevel(version,2);
+            }
+        }
+        return BaseResult.success(provinceList);
+    }
+
+    /**
+     * 获取市级下拉列表
+     * @param request
+     * @return
+     */
+    @PostMapping("/get_city")
+    public BaseResult<GlobalLocationDTO> getCity(HttpServletRequest request){
+        Integer version = request.getParameter("version") == null ? 0 : Integer.parseInt(request.getParameter("version"));
+        Integer provinceId = request.getParameter("provinceId") == null ? 0 : Integer.parseInt(request.getParameter("provinceId"));
+        List<GlobalLocationDTO> cityList;
+        if (provinceId != 0){
+            if (version == 0){
+                //获取市级的id和市级的中文名称
+                cityList = globalLocationService.getAreaByLevelAndPid(0,3,provinceId);
+            }else if (version == 1){
+                //获取市级的id和市级的英文名称
+                cityList = globalLocationService.getAreaByLevelAndPid(1,3,provinceId);
+            }else {
+                //获取市级的id和市级的俄语名称
+                cityList = globalLocationService.getAreaByLevelAndPid(version,3,provinceId);
+            }
+        }else {
+            if (version == 0){
+                cityList = globalLocationService.getAreaByLevel(0,3);
+            }else if (version == 1){
+                cityList = globalLocationService.getAreaByLevel(1,3);
+            }else{
+                cityList = globalLocationService.getAreaByLevel(version,3);
+            }
+        }
+        return BaseResult.success(cityList);
+    }
+
+    /**
+     * 获取区级的下拉列表
+     * @param request
+     * @return
+     */
+    @PostMapping("/get_area")
+    public BaseResult<GlobalLocationDTO> getArea(HttpServletRequest request){
+        Integer version = request.getParameter("version") == null ? 0 : Integer.parseInt(request.getParameter("version"));
+        Integer cityId = request.getParameter("cityId") == null ? 0 : Integer.parseInt(request.getParameter("cityId"));
+        List<GlobalLocationDTO> areaList;
+        if (cityId != 0){
+            if (version == 0){
+                //获取区级的id和区级的中文名称
+                areaList = globalLocationService.getAreaByLevelAndPid(0,4,cityId);
+            }else if (version == 1){
+                //获取区级的id和区级的英文名称
+                areaList = globalLocationService.getAreaByLevelAndPid(1,4,cityId);
+            }else {
+                //获取区级的id和区级的俄语名称
+                areaList = globalLocationService.getAreaByLevelAndPid(version,4,cityId);
+            }
+        }else {
+            if (version == 0){
+                areaList = globalLocationService.getAreaByLevel(0,4);
+            }else if (version == 1){
+                areaList = globalLocationService.getAreaByLevel(1,4);
+            }else{
+                areaList = globalLocationService.getAreaByLevel(version,4);
+            }
+        }
+        return BaseResult.success(areaList);
+    }
+}

+ 21 - 0
src/main/java/com/welampiot/dao/GlobalLocationDao.java

@@ -0,0 +1,21 @@
+package com.welampiot.dao;
+
+import com.welampiot.dto.GlobalLocationDTO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * ClassName: GlobalLocationDao
+ * Package: com.welampiot.dao
+ * Description:
+ *
+ * @Author: zhj_Start
+ * @Create: 2023/3/22 - 17:30
+ * @Version: v1.0
+ */
+public interface GlobalLocationDao {
+    List<GlobalLocationDTO> getAreaByLevel(@Param("version") Integer version, @Param("level") Integer level);
+
+    List<GlobalLocationDTO> getAreaByLevelAndPid(@Param("version") Integer version, @Param("level") Integer level, @Param("pid") Integer pid);
+}

+ 21 - 0
src/main/java/com/welampiot/service/GlobalLocationService.java

@@ -0,0 +1,21 @@
+package com.welampiot.service;
+
+import com.welampiot.dto.GlobalLocationDTO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * ClassName: GlobalLocationService
+ * Package: com.welampiot.service
+ * Description:
+ *
+ * @Author: zhj_Start
+ * @Create: 2023/3/22 - 17:35
+ * @Version: v1.0
+ */
+public interface GlobalLocationService {
+    List<GlobalLocationDTO> getAreaByLevel(Integer version,Integer level);
+
+    List<GlobalLocationDTO> getAreaByLevelAndPid(Integer version, Integer level, Integer pid);
+}

+ 36 - 0
src/main/java/com/welampiot/service/impl/GlobalLocationServiceImpl.java

@@ -0,0 +1,36 @@
+package com.welampiot.service.impl;
+
+import com.welampiot.dao.GlobalLocationDao;
+import com.welampiot.dto.GlobalLocationDTO;
+import com.welampiot.service.GlobalLocationService;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * ClassName: GlobalLocationServiceImpl
+ * Package: com.welampiot.service.impl
+ * Description:
+ *
+ * @Author: zhj_Start
+ * @Create: 2023/3/22 - 17:37
+ * @Version: v1.0
+ */
+@Service
+public class GlobalLocationServiceImpl implements GlobalLocationService {
+
+    @Autowired
+    private GlobalLocationDao globalLocationDao;
+
+    @Override
+    public List<GlobalLocationDTO> getAreaByLevel(Integer version,Integer level) {
+        return globalLocationDao.getAreaByLevel(version,level);
+    }
+
+    @Override
+    public List<GlobalLocationDTO> getAreaByLevelAndPid(Integer version,Integer level, Integer pid) {
+        return globalLocationDao.getAreaByLevelAndPid(version,level,pid);
+    }
+}

+ 37 - 0
src/main/resources/mapper/GlobalLocationMapper.xml

@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.welampiot.dao.GlobalLocationDao">
+    <select id="getAreaByLevel" resultType="com.welampiot.dto.GlobalLocationDTO" parameterType="Integer">
+        <choose>
+            <when test="version == 0">
+                select id,chinese_name chineseName
+                from global_location where level = #{level}
+            </when>
+            <when test="version == 1">
+                select id,english_name englishName
+                from global_location where level = #{level}
+            </when>
+            <otherwise>
+                select id,ru_name ruName
+                from global_location where level = #{level}
+            </otherwise>
+        </choose>
+    </select>
+
+    <select id="getAreaByLevelAndPid" resultType="com.welampiot.dto.GlobalLocationDTO" parameterType="Integer">
+        <choose>
+            <when test="version == 0">
+                select id,chinese_name chineseName
+                from global_location where level = #{level} and pid = #{pid}
+            </when>
+            <when test="version == 1">
+                select id,english_name englishName
+                from global_location where level = #{level} and pid = #{pid}
+            </when>
+            <otherwise>
+                select id,ru_name ruName
+                from global_location where level = #{level} and pid = #{pid}
+            </otherwise>
+        </choose>
+    </select>
+</mapper>