From 8791ce454b84f9ccc2be86a152a42eb7b1c697cf Mon Sep 17 00:00:00 2001 From: wb2476 Date: Thu, 15 Jan 2026 13:58:03 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E6=B8=85=E5=88=86=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/v2/order/OrderSettleService.java | 27 +++ .../v2/order/model/OrderBaseRequest.java | 42 ++++ .../v2/order/model/OrderBaseResponse.java | 42 ++++ .../order/model/OrderSettleAcceptRequest.java | 111 ++++++++++ .../OrderSettleQueryBySerialRequest.java | 29 +++ .../OrderSettleQueryBySerialResponse.java | 199 ++++++++++++++++++ .../OrderSettleResultQueryPageResponse.java | 113 +--------- .../v2/order/OrderSettleServiceTest.java | 2 - .../api/test/service/OrderServiceTest.java | 66 ++++++ 9 files changed, 518 insertions(+), 113 deletions(-) create mode 100644 scfs-api-service/src/main/java/com/czcb/scfs/api/service/v2/order/model/OrderBaseRequest.java create mode 100644 scfs-api-service/src/main/java/com/czcb/scfs/api/service/v2/order/model/OrderBaseResponse.java create mode 100644 scfs-api-service/src/main/java/com/czcb/scfs/api/service/v2/order/model/OrderSettleAcceptRequest.java create mode 100644 scfs-api-service/src/main/java/com/czcb/scfs/api/service/v2/order/model/OrderSettleQueryBySerialRequest.java create mode 100644 scfs-api-service/src/main/java/com/czcb/scfs/api/service/v2/order/model/OrderSettleQueryBySerialResponse.java create mode 100644 scfs-api-test/src/test/java/com/czcb/scfs/api/test/service/OrderServiceTest.java diff --git a/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v2/order/OrderSettleService.java b/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v2/order/OrderSettleService.java index cc4e1f5..5a0b1a4 100644 --- a/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v2/order/OrderSettleService.java +++ b/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v2/order/OrderSettleService.java @@ -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 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 httpResponse = apiClient.post(url, headers, request.toJsonRequest(), OrderSettleQueryBySerialResponse.class); + return httpResponse.getServiceResponse(); + } } diff --git a/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v2/order/model/OrderBaseRequest.java b/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v2/order/model/OrderBaseRequest.java new file mode 100644 index 0000000..c1b869b --- /dev/null +++ b/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v2/order/model/OrderBaseRequest.java @@ -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; +} diff --git a/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v2/order/model/OrderBaseResponse.java b/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v2/order/model/OrderBaseResponse.java new file mode 100644 index 0000000..060434d --- /dev/null +++ b/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v2/order/model/OrderBaseResponse.java @@ -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; +} diff --git a/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v2/order/model/OrderSettleAcceptRequest.java b/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v2/order/model/OrderSettleAcceptRequest.java new file mode 100644 index 0000000..5641493 --- /dev/null +++ b/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v2/order/model/OrderSettleAcceptRequest.java @@ -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 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; + } +} diff --git a/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v2/order/model/OrderSettleQueryBySerialRequest.java b/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v2/order/model/OrderSettleQueryBySerialRequest.java new file mode 100644 index 0000000..fbd505c --- /dev/null +++ b/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v2/order/model/OrderSettleQueryBySerialRequest.java @@ -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; +} diff --git a/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v2/order/model/OrderSettleQueryBySerialResponse.java b/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v2/order/model/OrderSettleQueryBySerialResponse.java new file mode 100644 index 0000000..b455103 --- /dev/null +++ b/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v2/order/model/OrderSettleQueryBySerialResponse.java @@ -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 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; + } +} diff --git a/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v2/order/model/OrderSettleResultQueryPageResponse.java b/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v2/order/model/OrderSettleResultQueryPageResponse.java index 3ac4b55..94eb6b4 100644 --- a/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v2/order/model/OrderSettleResultQueryPageResponse.java +++ b/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v2/order/model/OrderSettleResultQueryPageResponse.java @@ -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 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; } } diff --git a/scfs-api-service/src/test/java/com/czcb/scfs/api/service/v2/order/OrderSettleServiceTest.java b/scfs-api-service/src/test/java/com/czcb/scfs/api/service/v2/order/OrderSettleServiceTest.java index 9fe0da9..7de0b42 100644 --- a/scfs-api-service/src/test/java/com/czcb/scfs/api/service/v2/order/OrderSettleServiceTest.java +++ b/scfs-api-service/src/test/java/com/czcb/scfs/api/service/v2/order/OrderSettleServiceTest.java @@ -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()); diff --git a/scfs-api-test/src/test/java/com/czcb/scfs/api/test/service/OrderServiceTest.java b/scfs-api-test/src/test/java/com/czcb/scfs/api/test/service/OrderServiceTest.java new file mode 100644 index 0000000..1c06f1b --- /dev/null +++ b/scfs-api-test/src/test/java/com/czcb/scfs/api/test/service/OrderServiceTest.java @@ -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); + } + + +}