This commit is contained in:
shuo.wang
2025-07-25 15:14:28 +08:00
parent 1776f3a262
commit c64cf5ddcd
2 changed files with 72 additions and 8 deletions

View File

@@ -1,12 +1,23 @@
package com.cool.store.service.impl;
import com.cool.store.dto.HqtTokenDTO;
import com.cool.store.enums.ErrorCodeEnum;
import com.cool.store.exception.ServiceException;
import com.cool.store.request.ConfirmQuotationRequest;
import com.cool.store.request.HqtBuildRequest;
import com.cool.store.request.HqtPartnerAcceptanceRequest;
import com.cool.store.service.HqtAPIService;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
import okhttp3.*;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
/**
* @Author: WangShuo
* @Date: 2025/07/23/14:05
@@ -14,21 +25,72 @@ import org.springframework.stereotype.Service;
* @注释:
*/
@Service
@Slf4j
public class HqtAPIServiceImpl implements HqtAPIService {
@Value("${hqt.token.url}")
private String hqtTokenUrl;
@Value("${hqt.token.username}")
private String hqtUsername;
@Value("${hqt.token.grant_type}")
private String hqtGrantType;
@Value("${hqt.token.client.id}")
private String hqtClientId;
@Value("${hqt.token.client.secret}")
private String hqtClientSecret;
@Resource
OkHttpClient okHttpClient;
@Resource
ObjectMapper objectMapper;
@Override
//@Async
public void pushHqtBuild(HqtBuildRequest request) {
HqtTokenDTO hqtToken = this.getHqtToken();
}
@Override
// @Async
public void confirmQuotation(ConfirmQuotationRequest request) {
HqtTokenDTO hqtToken = this.getHqtToken();
}
//@Async
@Override
public void hqtPartnerAcceptance(HqtPartnerAcceptanceRequest request) {
HqtTokenDTO hqtToken = this.getHqtToken();
}
public HqtTokenDTO getHqtToken() {
String url = hqtTokenUrl + "/hecom-tenancy/oauth/token";
String auth = hqtClientId + ":" + hqtClientSecret;
String encodedAuth = Base64.getEncoder().encodeToString(auth.getBytes(StandardCharsets.UTF_8));
RequestBody formBody = new FormBody.Builder()
.add("grant_type", hqtGrantType)
.add("username", hqtUsername)
.build();
Request request = new Request.Builder()
.url(url)
.post(formBody)
.addHeader("Authorization", "Basic " + encodedAuth)
.addHeader("Host", "tc.cloud.hecom.cn")
.addHeader("Content-Type", "application/json")
.build();
try (Response response = okHttpClient.newCall(request).execute()) {
if (!response.isSuccessful()) {
log.info("HTTP请求失败msg: " + response.message());
throw new ServiceException(ErrorCodeEnum.THIRD_API_ERROR,
"HTTP请求失败状态码: " + response.code());
}
String responseBody = response.body().string();
HqtTokenDTO hqtTokenDTO = objectMapper.readValue(responseBody, HqtTokenDTO.class);
return hqtTokenDTO;
} catch (ServiceException e) {
throw e;
} catch (Exception e) {
log.error("API调用异常 - URL: {}, 错误: {}", url, e.getMessage(), e);
throw new ServiceException(ErrorCodeEnum.THIRD_API_ERROR, "接口调用异常: " + e.getMessage());
}
}
}

View File

@@ -25,6 +25,7 @@ import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
import okhttp3.*;
import okio.Buffer;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
@@ -268,14 +269,15 @@ public class PushServiceImpl implements PushService {
String url = hqtTokenUrl + "/hecom-tenancy/oauth/token";
String auth = hqtClientId + ":" + hqtClientSecret;
String encodedAuth = Base64.getEncoder().encodeToString(auth.getBytes(StandardCharsets.UTF_8));
Map<String,String> requestBody = new HashMap<>();
requestBody.put("grant_type",hqtGrantType);
requestBody.put("username",hqtUsername);
String jsonString = JSONObject.toJSONString(requestBody);
RequestBody formBody = new FormBody.Builder()
.add("grant_type", hqtGrantType)
.add("username", hqtUsername)
.build();
Request request = new Request.Builder()
.url(url)
.post(RequestBody.create(MediaType.parse("application/json"),jsonString))
.header("Authorization", "Basic " + encodedAuth)
.post(formBody)
.addHeader("Authorization", "Basic " + encodedAuth)
.addHeader("Host", "tc.cloud.hecom.cn")
.addHeader("Content-Type", "application/json")
.build();
try (Response response = okHttpClient.newCall(request).execute()) {