From e3d7ec787c2a2b03af577fa151cf78f951a6ae66 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Thu, 23 Feb 2023 11:46:42 +0800
Subject: [PATCH] 百度的地址识别

---
 src/test/java/cc/mrbird/febs/AgentTest.java |   87 +++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 82 insertions(+), 5 deletions(-)

diff --git a/src/test/java/cc/mrbird/febs/AgentTest.java b/src/test/java/cc/mrbird/febs/AgentTest.java
index 553b8b8..7be46b8 100644
--- a/src/test/java/cc/mrbird/febs/AgentTest.java
+++ b/src/test/java/cc/mrbird/febs/AgentTest.java
@@ -5,32 +5,37 @@
 import cc.mrbird.febs.common.enumerates.DataDictionaryEnum;
 import cc.mrbird.febs.common.exception.FebsException;
 import cc.mrbird.febs.common.utils.LoginUserUtil;
+import cc.mrbird.febs.common.utils.RedisUtils;
 import cc.mrbird.febs.mall.conversion.MallGoodsConversion;
-import cc.mrbird.febs.mall.dto.AddOrderItemDto;
-import cc.mrbird.febs.mall.dto.AgentLevelUpdateDto;
-import cc.mrbird.febs.mall.dto.ApiCreateOrderVerifyDto;
-import cc.mrbird.febs.mall.dto.ApiMallActWinDetailsDto;
+import cc.mrbird.febs.mall.dto.*;
 import cc.mrbird.febs.mall.entity.*;
 import cc.mrbird.febs.mall.mapper.*;
 import cc.mrbird.febs.mall.quartz.ProfitJob;
 import cc.mrbird.febs.mall.service.IAgentService;
 import cc.mrbird.febs.mall.vo.*;
+import cc.mrbird.febs.pay.util.WechatConfigure;
 import cc.mrbird.febs.rabbit.consumer.AgentConsumer;
 import cc.mrbird.febs.rabbit.producter.AgentProducer;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.RandomUtil;
 import cn.hutool.core.util.StrUtil;
-import com.alibaba.fastjson.JSONObject;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.exceptions.ApiException;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.extern.slf4j.Slf4j;
+import okhttp3.*;
 import org.aspectj.weaver.loadtime.Agent;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.web.client.RestTemplate;
 
+import javax.annotation.Resource;
+import java.io.IOException;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.util.ArrayList;
@@ -77,6 +82,78 @@
     private  MallGoodsMapper mallGoodsMapper;
     @Autowired
     private  MallGoodsImagesMapper goodsImagesMapper;
+
+
+    @Autowired
+    private RedisUtils redisUtils;
+    @Resource
+    RestTemplate restTemplate;
+
+    public static final String API_KEY = "MPHXcBxkGLIDOmoaahS9pIB7";
+    public static final String SECRET_KEY = "f5ueNY65fE9C6FzFTVKc6Imo8NdZSWMw";
+
+    static final OkHttpClient HTTP_CLIENT = new OkHttpClient().newBuilder().build();
+    @Test
+    public void getAccessToken(){
+        ApiIdentifyAddressDto apiIdentifyAddressDto = new ApiIdentifyAddressDto();
+        apiIdentifyAddressDto.setText("上海市浦东新区纳贤路701号百度上海研发中心 F4A000 张三");
+        MediaType mediaType = MediaType.parse("application/json");
+        RequestBody body = RequestBody.create(mediaType, JSONUtil.toJsonStr(apiIdentifyAddressDto));
+        Request request = new Request.Builder()
+                .url("https://aip.baidubce.com/rpc/2.0/nlp/v1/address?access_token=" + redisUtils.get(WechatConfigure.BAIDU_ACCESS_TOKEN_REDIS_KEY).toString())
+                .method("POST", body)
+                .addHeader("Content-Type", "application/json")
+                .addHeader("Accept", "application/json")
+                .build();
+        try {
+            Response response = HTTP_CLIENT.newCall(request).execute();
+            String responseStr = response.body().string();
+            System.out.println(responseStr);
+            if (responseStr.contains("error_code")) {
+                System.out.println("获取access_token失败");
+                JSONObject jsonObject = JSONUtil.parseObj(responseStr);
+                System.out.print(jsonObject.get("error_code").toString());
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+    @Test
+    public void getAccessToken2(){
+        // 官网获取的 API Key 更新为你注册的
+        String clientId = "MPHXcBxkGLIDOmoaahS9pIB7";
+        // 官网获取的 Secret Key 更新为你注册的
+        String clientSecret = "f5ueNY65fE9C6FzFTVKc6Imo8NdZSWMw";
+        String authHost = "https://aip.baidubce.com/oauth/2.0/token?";
+        String getAccessTokenUrl = authHost
+                // 1. grant_type为固定参数
+                + "grant_type=client_credentials"
+                // 2. 官网获取的 API Key
+                + "&client_id=" + clientId
+                // 3. 官网获取的 Secret Key
+                + "&client_secret=" + clientSecret;
+        String jsonStr = restTemplate.getForObject(getAccessTokenUrl, String.class);
+
+        /**
+         * 返回结果
+         * {"access_token":"ACCESS_TOKEN","expires_in":7200}
+         */
+        if (!jsonStr.contains("access_token")) {
+            System.out.println("获取access_token失败");
+        }
+        com.alibaba.fastjson.JSONObject jsonObject = com.alibaba.fastjson.JSONObject.parseObject(jsonStr);
+        String accessToken = jsonObject.getString("access_token");
+
+        String accessTokenKey = WechatConfigure.BAIDU_ACCESS_TOKEN_REDIS_KEY;
+        if (StrUtil.isEmpty(accessToken)) {
+            log.error("获取baidu access_token失败: {}" , jsonObject.getString("errmsg"));
+            throw new ApiException("获取access token失败");
+        } else {
+            log.info("baidu access_token : {}",accessToken);
+            System.out.println(accessToken);
+            redisUtils.set(accessTokenKey,accessToken);
+        }
+    }
     @Test
     public void goodsDetails(){
         Long id = 68L;

--
Gitblit v1.9.1