From 8ddec1fa60bdbd2d970cff7b4bf2ae5b4ded1627 Mon Sep 17 00:00:00 2001 From: 陶杰 <1378534974@qq.com> Date: 星期日, 29 十二月 2024 14:58:28 +0800 Subject: [PATCH] 1.腾讯地图:定时任务每天凌晨5点 --- src/main/java/com/mzl/flower/service/impl/map/MapGaodeServiceImpl.java | 107 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 107 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/mzl/flower/service/impl/map/MapGaodeServiceImpl.java b/src/main/java/com/mzl/flower/service/impl/map/MapGaodeServiceImpl.java new file mode 100644 index 0000000..24935d5 --- /dev/null +++ b/src/main/java/com/mzl/flower/service/impl/map/MapGaodeServiceImpl.java @@ -0,0 +1,107 @@ +package com.mzl.flower.service.impl.map; + +import cn.hutool.core.util.IdUtil; +import cn.hutool.http.HttpUtil; +import com.google.gson.Gson; +import com.mzl.flower.config.GaodeMapProperties; +import com.mzl.flower.dto.map.gaode.GaodeDistrict; +import com.mzl.flower.dto.map.gaode.GaodeMapResponse; +import com.mzl.flower.dto.response.coupon.CouponTemplateActivyVO; +import com.mzl.flower.entity.district.DistrictDO; +import com.mzl.flower.service.district.DistrictService; +import com.mzl.flower.service.map.MapGaodeService; +import com.mzl.flower.utils.ConverterUtil; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.codec.digest.Md5Crypt; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +@Service +@Slf4j +public class MapGaodeServiceImpl implements MapGaodeService { + + @Autowired + private GaodeMapProperties gaodeMapProperties; + + @Autowired + private DistrictService districtService; + + @Override + public void getAdministrativeDivision() { + + String administrativeDivisionsUrl = gaodeMapProperties.getAdministrativeDivisionsUrl(); + System.out.println(administrativeDivisionsUrl); + //可以单独传入http参数,这样参数会自动做URL编码,拼接在URL中 + HashMap<String, Object> paramMap = new HashMap<>(); + + String result= HttpUtil.get(administrativeDivisionsUrl, paramMap); + System.out.println(result); + // 使用 Gson 解析 JSON 字符串 + Gson gson = new Gson(); + GaodeMapResponse response = gson.fromJson(result, GaodeMapResponse.class); + if(response.getStatus().equals("1")&&response.getInfocode().equals("10000")){ + log.info("高德地图获取行政区划成功"); + log.info(response.getDistricts().toString()); + List<GaodeDistrict> allTengxunDistricts = new ArrayList<>(); + for (GaodeDistrict gaodeDistrict : response.getDistricts()){ + addDistrictToList(gaodeDistrict, null, allTengxunDistricts); // 从根节点开始,父节点 ID 为 null + } + // 打印所有区划信息 + for (GaodeDistrict gaodeDistrict :allTengxunDistricts){ + printDistrictInfo(gaodeDistrict); + } + // 保存所有的行政区划数据到数据库中 + // 将allTengxunDistricts转换成List<DsitrictVO> + List<DistrictDO> districtDOList= ConverterUtil.transList(allTengxunDistricts, DistrictDO.class); + + /** + * 保存数据到数据库中 + */ + districtService.saveRemoteDistricts(districtDOList); + + + System.out.println("保存成功"); + }else{ + log.error("高德地图获取行政区划失败"); + } + + + + } + + public static void addDistrictToList(GaodeDistrict gaodeDistrict, String parentId, List<GaodeDistrict> allTengxunDistricts) { + // 设置id + gaodeDistrict.setId(IdUtil.simpleUUID()); +// String idStr=gaodeDistrict.getAdcode()+gaodeDistrict.getLevel(); +// gaodeDistrict.setId(idStr); + // 设置父节点 ID + gaodeDistrict.setParentId(parentId); + // 将当前区划添加到结果列表 + allTengxunDistricts.add(gaodeDistrict); + + // 递归遍历子区划 + if (gaodeDistrict.getDistricts() != null) { + for (GaodeDistrict child : gaodeDistrict.getDistricts()) { + addDistrictToList(child, gaodeDistrict.getId(), allTengxunDistricts); // 将当前节点的 ID 作为子节点的父节点 ID + } + } + } + + public static void printDistrictInfo(GaodeDistrict gaodeDistrict) { + // 打印相关信息 + System.out.println("ID: " + gaodeDistrict.getId() + ", 父节点ID: " + gaodeDistrict.getParentId()); + System.out.println("名称: " + gaodeDistrict.getName()); + System.out.println("编码: " + gaodeDistrict.getAdcode()); + System.out.println("级别: " + gaodeDistrict.getLevel()); + System.out.println("边界线: " + gaodeDistrict.getPolyline()); + System.out.println("中心点: " + gaodeDistrict.getCenter()); + System.out.println("子节点数量: " + gaodeDistrict.getDistricts().size()); + + System.out.println("--------------------------"); + } + +} -- Gitblit v1.9.3