| 
					
				 | 
			
			
				@@ -0,0 +1,100 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+package com.gree.mall.contest.logic.common; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import cn.hutool.http.HttpUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import cn.hutool.json.JSONArray; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import cn.hutool.json.JSONObject; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.gree.mall.contest.bean.common.RegionBean; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import lombok.RequiredArgsConstructor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import lombok.extern.slf4j.Slf4j; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.stereotype.Service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.util.CollectionUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.HashMap; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.Map; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@Slf4j 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@RequiredArgsConstructor 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@Service 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+public class LbsAmapLogic { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private static final String lbsWebKey = "428a7111e02ea8367a3b34804eaa025b"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 根据经纬度反查省市区街道 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @Param lng,lat 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @Return {"area":"番禺区","province":"广东省","city":"广州市","street":"大龙街道"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public RegionBean getRegionByLngLat(String lnglat){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        log.info("根据经纬度反查省市区街道:" + lnglat); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //String lnglat = lng + "," + lat; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //String lbsWebKey = "b772f8b0ace6bc96c04ae8e48f241e36"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String url = "https://restapi.amap.com/v3/geocode/regeo?key="+lbsWebKey+"&location="+lnglat; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String s = HttpUtil.get(url); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        JSONObject jsonObject = new JSONObject(s); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String status = jsonObject.getStr("status"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(!status.equals("1")){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        JSONObject regeocode = jsonObject.getJSONObject("regeocode"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        JSONObject addressComponent = regeocode.getJSONObject("addressComponent"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Map<String,String> map = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        map.put("province",addressComponent.getStr("province")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(addressComponent.getStr("city").equals("[]")) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            map.put("city", addressComponent.getStr("province")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            map.put("city", addressComponent.getStr("city")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(addressComponent.getStr("district").equals("[]")) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            map.put("area", addressComponent.getStr("city")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            map.put("area", addressComponent.getStr("district")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        map.put("street",addressComponent.getStr("township")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //System.out.print(new JSONObject(map).toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        log.info("根据经纬度反查地址,经纬度:{},反查的地址:{}",lnglat,new JSONObject(addressComponent)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String street = map.get("street"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String province = map.get("province"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String city = map.get("city"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String area = map.get("area"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        LbsAmap lbsAmap = this.getByRegion(province, city, area, street); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        if(lbsAmap == null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            return null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        RegionBean regionBean = BeanUtil.copyProperties(lbsAmap, RegionBean.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        RegionBean regionBean = new RegionBean(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        regionBean.setLnglat(lnglat); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        regionBean.setProvinceName(province); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        regionBean.setCityName(city); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        regionBean.setAreaName(area); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        regionBean.setName(street); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return regionBean; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 根据地址反查经纬度 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @Param 中文地址(最好详细) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @return lng,lat 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public String getLocationByAddress(String address){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //String lbsWebKey = "b772f8b0ace6bc96c04ae8e48f241e36"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //String address = "广东省广州市天河区华景新城"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String url = "https://restapi.amap.com/v3/geocode/geo?key="+lbsWebKey+"&address="+address; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String s = HttpUtil.get(url); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        JSONObject jsonObject = new JSONObject(s); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String status = jsonObject.getStr("status"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(!status.equals("1")){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        JSONArray geocodes = jsonObject.getJSONArray("geocodes"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(CollectionUtils.isEmpty(geocodes)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Map<String, Object> map = (Map<String, Object>) geocodes.get(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String location = (String)map.get("location"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        log.info("根据地址【{}】反查经纬度【{}】",address,new JSONObject(map)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return location; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |