From 91da9aa0de1b183978d82b16dceba1266570ce4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Tue, 11 Mar 2025 15:17:00 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=8C=E6=94=BF=E5=8C=BA=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/user/UserGeoController.java | 29 +++++++++++++ .../com/czg/account/service/GeoService.java | 2 + .../java/com/czg/account/vo/DistrictVo.java | 42 +++++++++++++++++++ cash-dependencies/pom.xml | 6 +++ cash-service/account-service/pom.xml | 4 ++ .../account/service/impl/GeoServiceImpl.java | 20 +++++++++ 6 files changed, 103 insertions(+) create mode 100644 cash-common/cash-common-service/src/main/java/com/czg/account/vo/DistrictVo.java diff --git a/cash-api/account-server/src/main/java/com/czg/controller/user/UserGeoController.java b/cash-api/account-server/src/main/java/com/czg/controller/user/UserGeoController.java index a53f118a..960fd804 100644 --- a/cash-api/account-server/src/main/java/com/czg/controller/user/UserGeoController.java +++ b/cash-api/account-server/src/main/java/com/czg/controller/user/UserGeoController.java @@ -1,7 +1,11 @@ package com.czg.controller.user; import com.czg.account.service.GeoService; +import com.czg.account.vo.DistrictVo; import com.czg.resp.CzgResult; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; import jakarta.annotation.Resource; import jakarta.validation.constraints.NotEmpty; import org.springframework.web.bind.annotation.GetMapping; @@ -9,6 +13,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import java.util.List; + /** * geo位置管理 * @author Administrator @@ -19,8 +25,31 @@ public class UserGeoController { @Resource private GeoService geoService; + /** + * 经纬度换取位置信息 + * @param lat 经度 + * @param lng 纬度 + * @return 位置西悉尼 + */ @GetMapping("/geocode") public CzgResult getAddress(@RequestParam @NotEmpty String lat, @RequestParam @NotEmpty String lng) { return CzgResult.success(geoService.getAddress(lat, lng)); } + + /** + * 根据市换取所有下属行政区 + */ + @GetMapping("/district") + public CzgResult> district(String keywords) throws JsonProcessingException { + String districtJson = geoService.district(keywords,null); + ObjectMapper mapper = new ObjectMapper(); + JsonNode jsonNode = mapper.readTree(districtJson); + JsonNode districts = jsonNode.get("districts"); + String text = districts.toString(); + List cityInfoList = mapper.readValue(text, mapper.getTypeFactory().constructCollectionType(List.class, DistrictVo.class)); + DistrictVo allCity = new DistrictVo(); + allCity.setName("全城"); + cityInfoList.addFirst(allCity); + return CzgResult.success(cityInfoList); + } } diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/service/GeoService.java b/cash-common/cash-common-service/src/main/java/com/czg/account/service/GeoService.java index 4ca11f90..0d84ee6d 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/account/service/GeoService.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/service/GeoService.java @@ -7,4 +7,6 @@ import jakarta.validation.constraints.NotEmpty; */ public interface GeoService { Object getAddress(@NotEmpty String lat, @NotEmpty String lng); + + String district(String keywords, String subdistrict); } diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/vo/DistrictVo.java b/cash-common/cash-common-service/src/main/java/com/czg/account/vo/DistrictVo.java new file mode 100644 index 00000000..6ec835e5 --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/vo/DistrictVo.java @@ -0,0 +1,42 @@ +package com.czg.account.vo; + +import lombok.Data; +import net.sourceforge.pinyin4j.PinyinHelper; +import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType; +import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat; +import net.sourceforge.pinyin4j.format.HanyuPinyinToneType; +import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination; + +import java.util.List; + +/** + * 行政区域返回vo + */ +@Data +public class DistrictVo { + private Object citycode; + private String adcode; + private String name; + private String center; + private String level; + private List districts; + + public String getNameAsPY() { + return getPinYin(name); + } + + public String getPinYin(String name){ + HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat(); + // 设置声调类型为WITH_TONE_MARK + format.setToneType(HanyuPinyinToneType.WITHOUT_TONE); + // 设置拼音输出的大小写格式为小写 + format.setCaseType(HanyuPinyinCaseType.LOWERCASE); + String pinyin = ""; + try { + pinyin = PinyinHelper.toHanYuPinyinString(name,format , "", false); + } catch (BadHanyuPinyinOutputFormatCombination e) { + return pinyin; + } + return pinyin; + } +} diff --git a/cash-dependencies/pom.xml b/cash-dependencies/pom.xml index fcf77de3..a6ea4263 100644 --- a/cash-dependencies/pom.xml +++ b/cash-dependencies/pom.xml @@ -39,10 +39,16 @@ 2.8.3 3.5.3 3.8.0 + 2.5.1 + + com.belerweb + pinyin4j + ${pinyin.version} + com.czg cash-common-tools diff --git a/cash-service/account-service/pom.xml b/cash-service/account-service/pom.xml index 3b673379..ca3fe5b4 100644 --- a/cash-service/account-service/pom.xml +++ b/cash-service/account-service/pom.xml @@ -18,6 +18,10 @@ + + com.belerweb + pinyin4j + diff --git a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/GeoServiceImpl.java b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/GeoServiceImpl.java index aa4c6f56..390081b2 100644 --- a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/GeoServiceImpl.java +++ b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/GeoServiceImpl.java @@ -1,14 +1,19 @@ package com.czg.service.account.service.impl; +import cn.hutool.http.HttpUtil; import com.alibaba.fastjson2.JSONObject; import com.czg.account.service.GeoService; import com.czg.exception.ApiNotPrintException; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; +import io.seata.common.util.HttpClientUtil; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import org.springframework.web.client.RestClient; +import java.util.HashMap; +import java.util.Map; import java.util.Objects; /** @@ -40,6 +45,21 @@ public class GeoServiceImpl implements GeoService { } return jsonObject.getJSONObject("regeocode"); } + + @Override + public String district(String keywords, String subdistrict) { + Map param = new HashMap<>(); + //超掌柜生活-用户端 + param.put("key", "7a7f2e4790ea222660a027352ee3af39"); + param.put("keywords", keywords); + param.put("subdistrict", "1"); + if (StringUtils.isNotBlank(subdistrict)) { + param.put("subdistrict", "2"); + } + param.put("extensions", "base"); + String s = HttpUtil.get("https://restapi.amap.com/v3/config/district", param); + return s; + } }