红圈通接口

This commit is contained in:
shuo.wang
2025-07-31 15:47:33 +08:00
parent 0c867e6f81
commit a7065fabd9
24 changed files with 878 additions and 187 deletions

View File

@@ -1,6 +1,7 @@
package com.cool.store.service;
import com.cool.store.entity.BigRegionDO;
import com.cool.store.request.ConfirmQuotationRequest;
import com.cool.store.request.HqtBuildRequest;
import com.cool.store.request.HqtPartnerAcceptanceRequest;
@@ -31,4 +32,11 @@ public interface HqtAPIService {
* @description: 加盟商验收、评价
*/
void hqtPartnerAcceptance(HqtPartnerAcceptanceRequest request);
/**
* @Auther: wangshuo
* @Date: 2025/7/31
* @description: 推送加盟片区 并且返回红圈通加盟片区ID
*/
BigRegionDO pushHqtRegion( BigRegionDO bigRegionDO);
}

View File

@@ -1,15 +1,26 @@
package com.cool.store.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.cool.store.dao.BigRegionDAO;
import com.cool.store.dto.HqtTokenDTO;
import com.cool.store.entity.BigRegionDO;
import com.cool.store.enums.ErrorCodeEnum;
import com.cool.store.enums.FranchiseBrandEnum;
import com.cool.store.enums.HqtEnum.HqtShopDecorationAttributesEnum;
import com.cool.store.enums.HqtEnum.HqtSignFeeEnum;
import com.cool.store.enums.SatisfactionEnum;
import com.cool.store.enums.ShopDecorationAttributesEnum;
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.request.hqt.*;
import com.cool.store.response.HqtAPIResponse;
import com.cool.store.service.HqtAPIService;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
import okhttp3.*;
import org.jetbrains.annotations.NotNull;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
@@ -17,6 +28,8 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
import java.util.HashMap;
import java.util.Map;
/**
* @Author: WangShuo
@@ -45,23 +58,203 @@ public class HqtAPIServiceImpl implements HqtAPIService {
OkHttpClient okHttpClient;
@Resource
ObjectMapper objectMapper;
@Resource
private BigRegionDAO bigRegionDAO;
@Override
//@Async
public void pushHqtBuild(HqtBuildRequest request) {
log.info("开始推送门店信息request:{}",JSONObject.toJSONString(request));
Boolean check = request.check();
if (!check) {
throw new ServiceException(ErrorCodeEnum.HQT_PARAMS_ERROR);
}
HqtTokenDTO hqtToken = this.getHqtToken();
//构建门店装修属性
HqtBuildAPIRequest.Field13__c field13__c = getField13__c(request);
//构建所属片区
HqtBuildAPIRequest.Field124__c field124__c = getField124__c(request);
//构建是否已收设计费
HqtBuildAPIRequest.Field8__c field8__c = getField8__c(request);
//构建加盟品牌
HqtBuildAPIRequest.Field123__c field123__c = getField123__c(request);
HqtBuildAPIRequest hqtBuildAPIRequest = new HqtBuildAPIRequest();
getHqtBuildAPIRequest(request, hqtBuildAPIRequest, field13__c, field124__c, field8__c, field123__c);
//资源服务URL
String url = hqtToken.getEndPoint();
String requestUrl = url + "/v1/data/objects/project3X";
sendPostRequest(JSONObject.toJSONString(hqtBuildAPIRequest), requestUrl, hqtToken);
}
@Override
// @Async
// @Async
public void confirmQuotation(ConfirmQuotationRequest request) {
log.info("开始推送加盟商确认报价单信息request:{}",JSONObject.toJSONString(request));
Boolean check = request.check();
if (!check) {
log.info("参数错误");
throw new ServiceException(ErrorCodeEnum.HQT_PARAMS_ERROR);
}
//构建CRM系统门店编码红圈通门店id
HqtQuotationSheetAPIRequest.Field1__c field1__c = new HqtQuotationSheetAPIRequest.Field1__c();
field1__c.setCode(request.getShopCode());
HqtTokenDTO hqtToken = this.getHqtToken();
String requestUrl = hqtToken.getEndPoint() + "/v1/data/objects/CustomObject77__c";
HqtQuotationSheetAPIRequest apiRequest = new HqtQuotationSheetAPIRequest();
apiRequest.setField1__c(field1__c);
apiRequest.setName(request.getQuotationSheetId());
sendPostRequest(JSONObject.toJSONString(apiRequest), requestUrl, hqtToken);
}
//@Async
@Override
public void hqtPartnerAcceptance(HqtPartnerAcceptanceRequest request) {
log.info("开始推送加盟商验收信息request:{}",JSONObject.toJSONString(request));
if (!request.check()){
log.info("参数错误");
throw new ServiceException(ErrorCodeEnum.HQT_PARAMS_ERROR);
}
SatisfactionEnum satisfactionEnum = SatisfactionEnum.getEnumByCode(request.getSatisfaction());
HqtTokenDTO hqtToken = this.getHqtToken();
String requestUrl = hqtToken.getEndPoint() + "/v1/data/objects/CustomObject138__c";
HqtPartnerAcceptanceAPIRequest apiRequest = getHqtPartnerAcceptanceAPIRequest(request, satisfactionEnum);
sendPostRequest(JSONObject.toJSONString(apiRequest), requestUrl, hqtToken);
}
private static @NotNull HqtPartnerAcceptanceAPIRequest getHqtPartnerAcceptanceAPIRequest(HqtPartnerAcceptanceRequest request, SatisfactionEnum satisfactionEnum) {
HqtPartnerAcceptanceAPIRequest apiRequest = new HqtPartnerAcceptanceAPIRequest();
//加盟商满意度
HqtPartnerAcceptanceAPIRequest.Field1__c field1__c = new HqtPartnerAcceptanceAPIRequest.Field1__c();
if (satisfactionEnum != null){
field1__c.setId(satisfactionEnum.getHqtCode());
field1__c.setLabel(satisfactionEnum.getName());
field1__c.setName(satisfactionEnum.getHqtCode());
}
//门店编码
HqtPartnerAcceptanceAPIRequest.Field13__c field13__c = new HqtPartnerAcceptanceAPIRequest.Field13__c();
field13__c.setCode(request.getShopCode());
apiRequest.setField1__c(field1__c);
apiRequest.setField13__c(field13__c);
apiRequest.setField14__c(request.getComment());
return apiRequest;
}
@Override
public BigRegionDO pushHqtRegion(BigRegionDO bigRegionDO) {
HqtTokenDTO hqtToken = this.getHqtToken();
String requestUrl = hqtToken.getEndPoint() + "/v1/data/objects/CustomObject494__c";
Map<String, String> requestBody = new HashMap<>();
requestBody.put("name",bigRegionDO.getRegionName());
HqtAPIResponse responseBody = sendPostRequest(JSONObject.toJSONString(requestBody), requestUrl, hqtToken);
String hqtRegionCode = responseBody.getData();
bigRegionDO.setHqtRegionCode(hqtRegionCode);
bigRegionDO.setHqtRegionName(bigRegionDO.getRegionName());
bigRegionDAO.updateHqtDate(bigRegionDO);
return bigRegionDO;
}
private HqtAPIResponse sendPostRequest(String requestBody, String requestUrl,HqtTokenDTO hqtToken ){
log.info("开始发送请求,url:{},requestBody:{}",requestUrl,requestBody);
Request request = new Request.Builder()
.url(requestUrl)
.post(RequestBody.create(MediaType.parse( "application/json"),requestBody))
.addHeader("Authorization", "Bearer " + hqtToken.getAccess_token())
.addHeader("Content-Type", "application/json")
.build();
try (Response response = okHttpClient.newCall(request).execute()) {
log.info("发起请求 time{}",System.currentTimeMillis());
if (!response.isSuccessful()) {
log.info("HTTP请求失败msg: " + response.message());
throw new ServiceException(ErrorCodeEnum.THIRD_API_ERROR,
"HTTP请求失败状态码: " + response.code());
}
log.info("请求成功responseBody:{}",JSONObject.toJSONString(response.body().string()));
HqtAPIResponse hqtAPIResponse = objectMapper.readValue(response.body().string(), HqtAPIResponse.class);
return hqtAPIResponse;
} catch (ServiceException e) {
throw e;
} catch (Exception e) {
log.error("API调用异常 - URL: {}, 错误: {}", requestUrl, e.getMessage(), e);
throw new ServiceException(ErrorCodeEnum.THIRD_API_ERROR, "接口调用异常: " + e.getMessage());
}
}
private static void getHqtBuildAPIRequest(HqtBuildRequest request, HqtBuildAPIRequest hqtBuildAPIRequest, HqtBuildAPIRequest.Field13__c field13__c, HqtBuildAPIRequest.Field124__c field124__c, HqtBuildAPIRequest.Field8__c field8__c, HqtBuildAPIRequest.Field123__c field123__c) {
hqtBuildAPIRequest.setProjectNo(request.getShopCode());
hqtBuildAPIRequest.setName(request.getShopName());
hqtBuildAPIRequest.setField13__c(field13__c);
hqtBuildAPIRequest.setField124__c(field124__c);
hqtBuildAPIRequest.setField94__c(request.getSupervisorName());
hqtBuildAPIRequest.setField4__c(request.getSupervisorMobile());
hqtBuildAPIRequest.setField5__c(request.getPartnershipSignatoryFirst());
hqtBuildAPIRequest.setField62__c(request.getPartnershipSignatoryFirstMobile());
hqtBuildAPIRequest.setStreet(request.getShopAddress());
hqtBuildAPIRequest.setField8__c(field8__c);
hqtBuildAPIRequest.setField123__c(field123__c);
hqtBuildAPIRequest.setField4__c(request.getSupervisorMobile());
}
private HqtBuildAPIRequest.Field123__c getField123__c(HqtBuildRequest request) {
FranchiseBrandEnum franchiseBrand = FranchiseBrandEnum.getEnumByCode(request.getFranchiseBrand());
if (franchiseBrand != null) {
HqtBuildAPIRequest.Field123__c field123__c = new HqtBuildAPIRequest.Field123__c();
field123__c.setId(field123__c.getId() + franchiseBrand.getHqtCode());
field123__c.setLabel(franchiseBrand.getDesc());
field123__c.setName(franchiseBrand.getHqtCode());
field123__c.setPath(field123__c.getPath() + franchiseBrand.getHqtCode());
return field123__c;
}
return new HqtBuildAPIRequest.Field123__c();
}
private HqtBuildAPIRequest.Field13__c getField13__c(HqtBuildRequest request) {
HqtBuildAPIRequest.Field13__c field13__c = new HqtBuildAPIRequest.Field13__c();
//获取门店装修属性
ShopDecorationAttributesEnum shopDecorationAttributesEnum = ShopDecorationAttributesEnum.getShopDecorationAttributesEnumByCode(request.getShopDecorationAttributes());
HqtShopDecorationAttributesEnum hqtShopDecorationAttributesEnum = HqtShopDecorationAttributesEnum.getHqtShopDecorationAttributesEnumByShopDecorationAttributesEnum(shopDecorationAttributesEnum);
if (hqtShopDecorationAttributesEnum == null) {
throw new ServiceException(ErrorCodeEnum.HQT_SHOP_DECORATION_ATTRIBUTES);
}
field13__c.setId(hqtShopDecorationAttributesEnum.getCode());
field13__c.setLabel(hqtShopDecorationAttributesEnum.getMsg());
field13__c.setName(hqtShopDecorationAttributesEnum.getCode());
return field13__c;
}
private HqtBuildAPIRequest.Field124__c getField124__c(HqtBuildRequest request) {
HqtBuildAPIRequest.Field124__c field124__c = new HqtBuildAPIRequest.Field124__c();
field124__c.setCode(request.getHqtRegionCode());
field124__c.setName(request.getHqtRegionName());
return field124__c;
}
private HqtBuildAPIRequest.Field8__c getField8__c(HqtBuildRequest request) {
HqtSignFeeEnum hqtSignFee = HqtSignFeeEnum.getCodeByValue(request.getIsPayDesignFee());
if (hqtSignFee != null) {
HqtBuildAPIRequest.Field8__c field8__c = new HqtBuildAPIRequest.Field8__c();
field8__c.setId(hqtSignFee.getCode());
field8__c.setLabel(hqtSignFee.getMsg());
field8__c.setName(hqtSignFee.getCode());
return field8__c;
}
return new HqtBuildAPIRequest.Field8__c();
}
public HqtTokenDTO getHqtToken() {
String url = hqtTokenUrl + "/hecom-tenancy/oauth/token";
String auth = hqtClientId + ":" + hqtClientSecret;

View File

@@ -293,11 +293,15 @@ public class OrderSysInfoServiceImpl implements OrderSysInfoService {
LineInfoDO lineInfoDO = lineInfoDAO.getLineInfo(shopInfo.getLineId());
EnterpriseUserDO userInfoById = enterpriseUserDAO.getUserInfoById(shopInfo.getInvestmentManager());
BigRegionDO bigRegionDO = bigRegionDAO.getByRegionId(shopInfo.getRegionId());
if (StringUtils.isBlank(bigRegionDO.getHqtRegionCode())){
bigRegionDO = hqtAPIService.pushHqtRegion(bigRegionDO);
}
HqtBuildRequest request = new HqtBuildRequest();
request.setShopCode(shopInfo.getShopCode());
request.setShopName(shopInfo.getShopName());
request.setShopDecorationAttributes(shopInfo.getShopDecorationAttributes());
request.setHqtRegionCode(bigRegionDO.getHqtRegionCode());
request.setHqtRegionName(bigRegionDO.getHqtRegionName());
request.setSupervisorName(userInfoById.getName());
request.setSupervisorMobile(userInfoById.getMobile());
request.setPartnershipSignatoryFirst(lineInfoDO.getUsername());