feat:清分功能

main
wb2476 2026-01-15 13:58:03 +08:00
parent 0315387bc7
commit 8791ce454b
9 changed files with 518 additions and 113 deletions

View File

@ -64,4 +64,31 @@ public class OrderSettleService {
return httpResponse.getServiceResponse();
}
/**
* 301510-
*
* @author H.T
* @since 2026/1/15
*/
public OrderBaseResponse settleAccept(OrderSettleAcceptRequest request) {
String url = "/order/settle/accept";
HttpHeaders headers = new HttpHeaders();
headers.addHeader(API_VERSION, V_2);
HttpResponse<OrderBaseResponse> httpResponse = apiClient.post(url, headers, request.toJsonRequest(), OrderBaseResponse.class);
return httpResponse.getServiceResponse();
}
/**
* 301511-
*
* @author H.T
* @since 2026/1/15
*/
public OrderSettleQueryBySerialResponse settleQueryBySerial(OrderSettleQueryBySerialRequest request) {
String url = "/order/settle/query/by-serial";
HttpHeaders headers = new HttpHeaders();
headers.addHeader(API_VERSION, V_2);
HttpResponse<OrderSettleQueryBySerialResponse> httpResponse = apiClient.post(url, headers, request.toJsonRequest(), OrderSettleQueryBySerialResponse.class);
return httpResponse.getServiceResponse();
}
}

View File

@ -0,0 +1,42 @@
package com.czcb.scfs.api.service.v2.order.model;
import com.czcb.scfs.api.core.ApiRequest;
import com.google.gson.annotations.SerializedName;
import lombok.Data;
import lombok.experimental.Accessors;
/**
*
*
* @author H.T
* @since 2026-01-15
*/
@Data
@Accessors(chain = true)
public class OrderBaseRequest implements ApiRequest {
/**
*
*/
@SerializedName("channel_no")
private String channelNo;
/**
*
*/
@SerializedName("app_no")
private String appNo;
/**
*
*/
@SerializedName("serial_no")
private String serialNo;
/**
*
*/
@SerializedName("trans_date")
private String transDate;
/**
*
*/
@SerializedName("trans_tradetime")
private String transTradeTime;
}

View File

@ -0,0 +1,42 @@
package com.czcb.scfs.api.service.v2.order.model;
import com.czcb.scfs.api.core.ApiResponse;
import com.google.gson.annotations.SerializedName;
import lombok.Data;
import lombok.experimental.Accessors;
/**
*
*
* @author H.T
* @since 2026-01-15
*/
@Data
@Accessors(chain = true)
public class OrderBaseResponse implements ApiResponse {
/**
* 000000
*/
@SerializedName("recode")
private String recode;
/**
*
*/
@SerializedName("recode_info")
private String recodeInfo;
/**
*
*/
@SerializedName("sys_serial_no")
private String sysSerialNo;
/**
* YYYY-MM-DD
*/
@SerializedName("sys_date")
private String sysDate;
/**
* YYYY-MM-DD hh:mm:ss
*/
@SerializedName("sys_time")
private String sysTime;
}

View File

@ -0,0 +1,111 @@
package com.czcb.scfs.api.service.v2.order.model;
import com.czcb.scfs.api.core.agrs.TransType;
import com.google.gson.annotations.SerializedName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
/**
* 301510-
*
* @author H.T
* @since 2026-01-06
*/
@Data
@Accessors(chain = true)
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@TransType("301510")
public class OrderSettleAcceptRequest extends OrderBaseRequest implements Serializable {
/**
*
*/
@SerializedName("merchantid")
private String merchantid;
/**
*
*/
@SerializedName("pay_channel_merchantid")
private String payChannelMerchantid;
/**
* 3-4-5-6-7-
*/
@SerializedName("settle_type")
private String settleType;
/**
*
*/
@SerializedName("settle_amount_total")
private BigDecimal settleAmountTotal;
/**
*
*/
@SerializedName("fee_total")
private BigDecimal feeTotal;
/**
*
*/
@SerializedName("order_amount_total")
private BigDecimal orderAmountTotal;
/**
*
*/
@SerializedName("remark")
private String remark;
/**
* List
*/
@SerializedName("settle_detail_list")
private List<SettleDetail> settleDetailList;
@Data
public static class SettleDetail implements Serializable {
/**
*
*/
@SerializedName("settle_index")
private Integer settleIndex;
/**
* 1-2-
*/
@SerializedName("settle_type")
private String settleType;
/**
*
*/
@SerializedName("opp_account_no")
private String oppAccountNo;
/**
*
*/
@SerializedName("opp_account_name")
private String oppAccountName;
/**
*
*/
@SerializedName("opp_bank_no")
private String oppBankNo;
/**
*
*/
@SerializedName("opp_bank_name")
private String oppBankName;
/**
* 0
*/
@SerializedName("opp_amount")
private BigDecimal oppAmount;
/**
*
*/
@SerializedName("remark")
private String remark;
}
}

View File

@ -0,0 +1,29 @@
package com.czcb.scfs.api.service.v2.order.model;
import com.czcb.scfs.api.core.agrs.TransType;
import com.google.gson.annotations.SerializedName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* 301511-
*
* @author H.T
* @since 2026-01-08
*/
@Data
@ToString(callSuper = true)
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@TransType("301511")
public class OrderSettleQueryBySerialRequest extends OrderBaseRequest implements Serializable {
/**
*
*/
@SerializedName("original_req_no")
private String originalReqNo;
}

View File

@ -0,0 +1,199 @@
package com.czcb.scfs.api.service.v2.order.model;
import com.google.gson.annotations.SerializedName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
/**
* 301511-
*
* @author H.T
* @since 2026-01-08
*/
@Data
@ToString(callSuper = true)
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
public class OrderSettleQueryBySerialResponse extends OrderBaseResponse implements Serializable {
/**
*
*/
@SerializedName("req_serial_no")
private String reqSerialNo;
/**
*
*/
@SerializedName("data_sys_serial_no")
private String dataSysSerialNo;
/**
*
*/
@SerializedName("settle_serial_no")
private String settleSerialNo;
/**
* e
*/
@SerializedName("merchantid")
private String merchantid;
/**
*
*/
@SerializedName("pay_channel_merchantid")
private String payChannelMerchantid;
/**
*
*/
@SerializedName("settle_type")
private String settleType;
/**
*
*/
@SerializedName("settle_date")
private String settleDate;
/**
*
*/
@SerializedName("settle_time")
private String settleTime;
/**
* 1 2
*/
@SerializedName("settle_status")
private String settleStatus;
/**
*
*/
@SerializedName("settle_result")
private String settleResult;
/**
*
*/
@SerializedName("settle_total_amount")
private BigDecimal settleTotalAmount;
/**
*
*/
@SerializedName("total_fee")
private BigDecimal totalFee;
/**
*
*/
@SerializedName("order_total_amount")
private BigDecimal orderTotalAmount;
/**
*
*/
@SerializedName("remark")
private String remark;
/**
* List
*/
@SerializedName("settle_detail_list")
private List<SettleDetailData> settleDetailList;
@Data
public static class SettleDetailData implements Serializable {
/**
*
*/
@SerializedName("req_serial_no")
private String reqSerialNo;
/**
*
*/
@SerializedName("data_sys_serial_no")
private String dataSysSerialNo;
/**
*
*/
@SerializedName("settle_serial_no")
private String settleSerialNo;
/**
* e
*/
@SerializedName("merchantid")
private String merchantid;
/**
*
*/
@SerializedName("pay_channel_merchantid")
private String payChannelMerchantid;
/**
*
*/
@SerializedName("settle_index")
private Integer settleIndex;
/**
*
*/
@SerializedName("settle_type")
private String settleType;
/**
*
*/
@SerializedName("settle_time")
private String settleTime;
/**
* 1 2
*/
@SerializedName("settle_status")
private String settleStatus;
/**
*
*/
@SerializedName("settle_result")
private String settleResult;
/**
*
*/
@SerializedName("account_no")
private String accountNo;
/**
*
*/
@SerializedName("account_name")
private String accountName;
/**
*
*/
@SerializedName("pay_amount")
private BigDecimal payAmount;
/**
*
*/
@SerializedName("opp_account_no")
private String oppAccountNo;
/**
*
*/
@SerializedName("opp_account_name")
private String oppAccountName;
/**
*
*/
@SerializedName("opp_bank_no")
private String oppBankNo;
/**
*
*/
@SerializedName("opp_bank_name")
private String oppBankName;
/**
*
*/
@SerializedName("opp_amount")
private BigDecimal oppAmount;
/**
*
*/
@SerializedName("remark")
private String remark;
}
}

View File

@ -7,7 +7,6 @@ import lombok.experimental.Accessors;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
@ -112,13 +111,13 @@ public class OrderSettleResultQueryPageResponse implements PageApiResponse {
*
*/
@SerializedName("settle_date")
private Date settleDate;
private String settleDate;
/**
*
*/
@SerializedName("settle_time")
private Date settleTime;
private String settleTime;
/**
* 1 2
@ -155,113 +154,5 @@ public class OrderSettleResultQueryPageResponse implements PageApiResponse {
*/
@SerializedName("remark")
private String remark;
@SerializedName("detail_data")
private List<OrderSettleDetailData> detailData;
}
@Data
public static class OrderSettleDetailData implements Serializable {
/**
*
*/
@SerializedName("req_serial_no")
private String reqSerialNo;
/**
*
*/
@SerializedName("data_sys_serial_no")
private String dataSysSerialNo;
/**
*
*/
@SerializedName("settle_serial_no")
private String settleSerialNo;
/**
* e
*/
@SerializedName("merchantid")
private String merchantid;
/**
*
*/
@SerializedName("pay_channel_merchantid")
private String payChannelMerchantid;
/**
*
*/
@SerializedName("settle_index")
private Integer settleIndex;
/**
*
*/
@SerializedName("settle_type")
private String settleType;
/**
*
*/
@SerializedName("settle_time")
private Date settleTime;
/**
* 1 2
*/
@SerializedName("settle_status")
private String settleStatus;
/**
*
*/
@SerializedName("settle_result")
private String settleResult;
/**
*
*/
@SerializedName("account_no")
private String accountNo;
/**
*
*/
@SerializedName("account_name")
private String accountName;
/**
*
*/
@SerializedName("pay_amount")
private BigDecimal payAmount;
/**
*
*/
@SerializedName("opp_account_no")
private String oppAccountNo;
/**
*
*/
@SerializedName("opp_account_name")
private String oppAccountName;
/**
*
*/
@SerializedName("opp_amount")
private BigDecimal oppAmount;
/**
*
*/
@SerializedName("remark")
private String remark;
}
}

View File

@ -105,7 +105,6 @@ class OrderSettleServiceTest {
}
void extractedOrderSettleResultQueryPageResponseOrderSettleInfoDataNestParams(OrderSettleResultQueryPageResponse.OrderSettleInfoData nest) {
nest.setReqSerialNo("setReqSerialNo");
nest.setDetailData(Lists.list());
nest.setRemark("setRemark");
nest.setSettleResult("setSettleResult");
nest.setTotalFee(BigDecimal.valueOf(100.00));
@ -120,7 +119,6 @@ class OrderSettleServiceTest {
}
void extractedOrderSettleResultQueryPageResponseOrderSettleInfoDataNestAssertions(OrderSettleResultQueryPageResponse.OrderSettleInfoData nest) {
Assertions.assertEquals("setReqSerialNo", nest.getReqSerialNo());
Assertions.assertNotNull(nest.getDetailData());
Assertions.assertEquals("setRemark", nest.getRemark());
Assertions.assertEquals("setSettleResult", nest.getSettleResult());
Assertions.assertEquals(BigDecimal.valueOf(100.00), nest.getTotalFee());

View File

@ -0,0 +1,66 @@
package com.czcb.scfs.api.test.service;
import com.czcb.scfs.api.service.v2.order.OrderSettleService;
import com.czcb.scfs.api.service.v2.order.model.*;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import javax.annotation.Resource;
import java.util.UUID;
/**
*
*
* @author H.T
* @since 2025-12-08
*/
@SpringBootTest
class OrderServiceTest {
@Resource
private OrderSettleService orderSettleService;
@Test
void orderSettleResultQueryPage() {
OrderSettleResultQueryPageRequest request = new OrderSettleResultQueryPageRequest();
request.setChannelNo("1038");
request.setAppNo("10");
request.setSerialNo(UUID.randomUUID().toString().replace("-", ""));
request.setTransDate("2024-03-20");
request.setTransTradeTime("2024-01-02 09:11:53");
OrderSettleResultQueryPageResponse response = orderSettleService.orderSettleResultQueryPage(request);
System.out.println(response);
}
@Test
void settleAccept() {
OrderSettleAcceptRequest request = new OrderSettleAcceptRequest();
request.setChannelNo("1038");
request.setAppNo("10");
request.setSerialNo(UUID.randomUUID().toString().replace("-", ""));
request.setTransDate("2024-03-20");
request.setTransTradeTime("2024-01-02 09:11:53");
OrderBaseResponse response = orderSettleService.settleAccept(request);
System.out.println(response);
}
@Test
void settleQueryBySerial() {
OrderSettleQueryBySerialRequest request = new OrderSettleQueryBySerialRequest();
request.setChannelNo("1038");
request.setAppNo("10");
request.setSerialNo(UUID.randomUUID().toString().replace("-", ""));
request.setTransDate("2024-03-20");
request.setTransTradeTime("2024-01-02 09:11:53");
request.setOriginalReqNo("202601091547370990409158");
OrderSettleQueryBySerialResponse response = orderSettleService.settleQueryBySerial(request);
System.out.println(response);
}
}