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