feat:加盟费
This commit is contained in:
@@ -20,6 +20,8 @@ public class FranchiseFeeCallBackRequest {
|
||||
@NotNull
|
||||
private BigDecimal payableFee;
|
||||
@NotNull
|
||||
private BigDecimal paidFees;
|
||||
@NotNull
|
||||
private BigDecimal remainingFee;
|
||||
@NotNull
|
||||
private Integer paymentStatus;
|
||||
|
||||
@@ -56,6 +56,7 @@ public class PushFranchiseFeeRequest {
|
||||
this.setFirstYearFee(new BigDecimal(franchiseFeeDO.getFirstYearFee()));
|
||||
this.setDesignFee(new BigDecimal(franchiseFeeDO.getPerformanceBond()));
|
||||
this.setTotalFee(this.getBond()
|
||||
.add(this.getFranchiseFee())
|
||||
.add(this.getFirstYearManageFee())
|
||||
.add(this.getFirstYearFee())
|
||||
.add(this.getDesignFee()));
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.cool.store.response;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @Author suzhuhong
|
||||
* @Date 2025/6/4 19:06
|
||||
* @Version 1.0
|
||||
*/
|
||||
@Data
|
||||
public class XgjAccessTokenDTO {
|
||||
|
||||
private String access_token;
|
||||
|
||||
private String scope;
|
||||
|
||||
private String token_type;
|
||||
|
||||
private Long expires_in;
|
||||
}
|
||||
@@ -7,6 +7,7 @@ import com.cool.store.request.AuditRequest;
|
||||
import com.cool.store.request.ZxjpApiRequest;
|
||||
import com.cool.store.request.xgj.PushFranchiseFeeRequest;
|
||||
import com.cool.store.request.xgj.ReceiptRequest;
|
||||
import com.cool.store.response.XgjAccessTokenDTO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -78,6 +79,12 @@ public interface PushService {
|
||||
|
||||
List<XgjOrganizationDTO> getXgjOrganization(String parentId);
|
||||
|
||||
/**
|
||||
* 获取新管家token
|
||||
* @return
|
||||
*/
|
||||
XgjAccessTokenDTO getXgjAccessToken();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -205,7 +205,7 @@ public class FranchiseFeeServiceImpl implements FranchiseFeeService {
|
||||
}
|
||||
franchiseFeeDO.setXgjCollectionStatus(request.getPaymentStatus());
|
||||
franchiseFeeDO.setXgjRemainderPayableAmount(request.getRemainingFee());
|
||||
franchiseFeeDO.setXgjFeesPaid(request.getPayableFee());
|
||||
franchiseFeeDO.setXgjFeesPaid(request.getPaidFees());
|
||||
franchiseFeeMapper.updateByPrimaryKeySelective(franchiseFeeDO);
|
||||
if (XGJCollectionStatusEnum.COMPLETED.getCode().equals(request.getPaymentStatus())){
|
||||
shopStageInfoDAO.updateShopStageInfo(request.getShopId(),ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_73);
|
||||
|
||||
@@ -9,6 +9,7 @@ import com.cool.store.exception.ServiceException;
|
||||
import com.cool.store.request.ZxjpApiRequest;
|
||||
import com.cool.store.request.xgj.PushFranchiseFeeRequest;
|
||||
import com.cool.store.request.xgj.ReceiptRequest;
|
||||
import com.cool.store.response.XgjAccessTokenDTO;
|
||||
import com.cool.store.response.XgjBaseResponse;
|
||||
import com.cool.store.response.XgjOrganizationResponse;
|
||||
import com.cool.store.response.huoma.ShopBaseInfoResponse;
|
||||
@@ -28,12 +29,11 @@ import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.io.IOException;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.net.URLEncoder;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
@@ -101,13 +101,13 @@ public class PushServiceImpl implements PushService {
|
||||
@Override
|
||||
public Boolean pushFranchiseFeeToXGJ(PushFranchiseFeeRequest request) {
|
||||
String apiUrl = xgjUrl + "/dmp/dmp-join/open/franchiseeBill";
|
||||
return executeApiCall(apiUrl, request, Boolean.class, xgjUsername, xgjSecret);
|
||||
return executePostApiCall(apiUrl, request, Boolean.class, xgjUsername, xgjSecret,getXgjAccessToken().getAccess_token());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean pushReceiptToXGJ(ReceiptRequest request) {
|
||||
String apiUrl = xgjUrl + "/dmp/dmp-join/open/franchiseeReceipts";
|
||||
return executeApiCall(apiUrl, request, Boolean.class, xgjUsername, xgjSecret);
|
||||
return executePostApiCall(apiUrl, request, Boolean.class, xgjUsername, xgjSecret,getXgjAccessToken().getAccess_token());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -183,13 +183,46 @@ public class PushServiceImpl implements PushService {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public XgjAccessTokenDTO getXgjAccessToken() {
|
||||
String apiUrl = "http://117.139.13.24:29000/oauth2/token?grant_type=client_credentials&scope=server";
|
||||
String clientId = "dmp-join";
|
||||
String clientSecret = "dmp20250528";
|
||||
String auth = clientId + ":" + clientSecret;
|
||||
String encodedAuth = Base64.getEncoder().encodeToString(auth.getBytes(StandardCharsets.UTF_8));
|
||||
byte[] bytes = new byte[0];
|
||||
Request request = new Request.Builder()
|
||||
.url(apiUrl)
|
||||
.post(RequestBody.create(MediaType.parse("application/json; charset=UTF-8"),bytes))
|
||||
.header("Authorization", "Basic " + encodedAuth)
|
||||
.build();
|
||||
try (Response response = okHttpClient.newCall(request).execute()) {
|
||||
if (!response.isSuccessful()) {
|
||||
throw new ServiceException(ErrorCodeEnum.THIRD_API_ERROR,
|
||||
"HTTP请求失败,状态码: " + response.code());
|
||||
}
|
||||
String responseBody = response.body().string();
|
||||
XgjAccessTokenDTO xgjAccessTokenDTO = objectMapper.readValue(responseBody, XgjAccessTokenDTO.class);
|
||||
return xgjAccessTokenDTO;
|
||||
} 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());
|
||||
}
|
||||
}
|
||||
|
||||
private <T> T executeApiCall(String url, Object requestBody, Class<T> responseType, String username, String secret) {
|
||||
private <T> T executeApiCall(String url, Object requestBody, Class<T> responseType, String username, String secret){
|
||||
return executePostApiCall(url,requestBody,responseType,username,secret,null);
|
||||
}
|
||||
|
||||
|
||||
private <T> T executePostApiCall(String url, Object requestBody, Class<T> responseType, String username, String secret,String accessToken) {
|
||||
// 1. 打印请求前日志
|
||||
logRequest(url, requestBody);
|
||||
|
||||
try {
|
||||
Request request = buildRequest(requestBody, url, username, secret);
|
||||
Request request = buildRequest(requestBody, url, username, secret,accessToken);
|
||||
|
||||
request.headers().names().forEach(x->{
|
||||
log.info(x+": {}",request.header(x));
|
||||
@@ -276,7 +309,7 @@ public class PushServiceImpl implements PushService {
|
||||
}
|
||||
|
||||
|
||||
private Request buildRequest(Object requestBody, String url, String username, String secret) {
|
||||
private Request buildRequest(Object requestBody, String url, String username, String secret,String accessToken) {
|
||||
|
||||
try {
|
||||
Map<String, String> authHeaders = HmacSigner.generateHeaders(
|
||||
@@ -294,9 +327,13 @@ public class PushServiceImpl implements PushService {
|
||||
.addHeader("Accept", "application/json")
|
||||
.addHeader("x-Date", authHeaders.get("x-Date"))
|
||||
.addHeader("Digest", authHeaders.get("Digest"));
|
||||
if (!url.contains("get-token-byshopcode")){
|
||||
if (!url.contains("get-token-byshopcode")&&StringUtils.isEmpty(accessToken)){
|
||||
builder.addHeader("Authorization", authHeaders.get("Authorization"));
|
||||
}
|
||||
//新管家特定接口
|
||||
if (StringUtils.isNotEmpty(accessToken)){
|
||||
builder.addHeader("Authorization", "Bearer "+accessToken);
|
||||
}
|
||||
return builder.build();
|
||||
} catch (Exception e) {
|
||||
throw new ServiceException(ErrorCodeEnum.THIRD_API_SIGN_ERROR);
|
||||
|
||||
@@ -280,6 +280,12 @@ public class PCTestController {
|
||||
return ResponseResult.success(pushService.getXgjOrganization(partnerId));
|
||||
}
|
||||
|
||||
@GetMapping("/getXgjAccessToken")
|
||||
@ApiOperation("获取新管家token")
|
||||
public ResponseResult<Object> getXgjAccessToken() {
|
||||
return ResponseResult.success(pushService.getXgjAccessToken());
|
||||
}
|
||||
|
||||
|
||||
@Resource
|
||||
ShopAccountService accountService;
|
||||
|
||||
Reference in New Issue
Block a user