红圈通接口
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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());
|
||||
|
||||
Reference in New Issue
Block a user