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