From b8875333f33e5823351dc710e197a4d7bc5b5ffc Mon Sep 17 00:00:00 2001
From: DaxPay
Date: Sun, 5 May 2024 20:55:36 +0800
Subject: [PATCH] =?UTF-8?q?ref=20=E5=AF=B9=E8=B4=A6=E5=B7=AE=E5=BC=82?=
=?UTF-8?q?=E6=98=8E=E7=BB=86?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 283 ++----------------
_doc/Task.md | 1 +
.../daxpay/sdk/param/pay/PayParam.java | 2 +-
.../daxpay/sdk/payment/PayOrderTest.java | 7 +-
.../order/ReconcileOrderController.java | 6 +
.../typehandler/ReconcileDiffTypeHandler.java | 8 +-
.../order/reconcile/entity/ReconcileDiff.java | 18 +-
...cileDiff.java => ReconcileDiffDetail.java} | 2 +-
.../service/ReconcileAssistService.java | 45 +--
.../reconcile/service/ReconcileService.java | 15 +-
.../dto/order/reconcile/ReconcileDiffDto.java | 19 +-
.../param/reconcile/ReconcileDiffQuery.java | 23 +-
12 files changed, 113 insertions(+), 316 deletions(-)
rename daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/domain/{ReconcileDiff.java => ReconcileDiffDetail.java} (92%)
diff --git a/README.md b/README.md
index 2582e5f0..bdab8407 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,3 @@
-
@@ -26,15 +25,12 @@
> DaxPay是一套开源支付网关系统,已经对接支付宝、微信支付相关的接口。可以独立部署,提供接口供业务系统进行调用,不对原有系统产生影响
-gateway为开发分支,本地运行请使用master分支进行测试,当前正在进行整个系统的优化重构工作,**请勿在生产环境中使用,请等待生产可用的版本发布**,
-
-
## 🧭 特色功能
- 封装各类支付通道的接口为统一的接口,方便业务系统进行调用,简化对接多种支付方式的复杂度
- 已对接`微信支付`、`支付宝`和`云闪付`相关的接口,后续版本将支持`V3`版本的接口
- 支持支付、退款、对账、分账等支付相关的能力
- 提供`HTTP`方式接口调用能力,和`Java`版本的`SDK`,方便业务系统进行对接
-- 接口请求和响应数据支持启用签名机制,可根据实际需要进行开关,保证交易安全可靠
+- 接口请求和响应数据支持启用签名机制,保证交易安全可靠
- 提供管理平台,方便运营人员进行管理和操作,不需要懂IT技术也可以轻松使用
- 提供`聚合支付`、`电脑收银台`和`手机收银台`的演示模块,供开发者参考其实现支付功能的逻辑
@@ -108,51 +104,40 @@ gateway为开发分支,本地运行请使用master分支进行测试,当前
> 此处以简单支付接口为例,演示业务系统如何调用支付网关进行支付,其他接口的调用方式类似,具体请参考[支付对接](https://bootx.gitee.io/daxpay/gateway/overview/接口清单.html)。
```java
-package cn.bootx.platform.daxpay.sdk;
-
-import cn.bootx.platform.daxpay.sdk.code.PayChannelEnum;
-import cn.bootx.platform.daxpay.sdk.code.PayMethodEnum;
-import cn.bootx.platform.daxpay.sdk.model.PayOrderModel;
-import cn.bootx.platform.daxpay.sdk.net.DaxPayConfig;
-import cn.bootx.platform.daxpay.sdk.net.DaxPayKit;
-import cn.bootx.platform.daxpay.sdk.param.pay.SimplePayParam;
-import cn.bootx.platform.daxpay.sdk.response.DaxPayResult;
-import org.junit.Before;
-import org.junit.Test;
-
/**
- * 简单支付
+ * 统一支付接口
* @author xxm
- * @since 2024/2/2
+ * @since 2024/2/5
*/
-public class SimplePayOrderTest {
+public class PayOrderTest {
@Before
public void init() {
// 初始化支付配置
DaxPayConfig config = DaxPayConfig.builder()
.serviceUrl("http://127.0.0.1:9000")
- // 需要跟网关中配置一致
.signSecret("123456")
.signType(SignTypeEnum.HMAC_SHA256)
.build();
DaxPayKit.initConfig(config);
}
+ /**
+ * 支付
+ */
@Test
- public void simplePay() {
- // 简单支付参数
- SimplePayParam param = new SimplePayParam();
- param.setBusinessNo("P0001");
- param.setAmount(1);
- param.setTitle("测试支付宝支付");
- param.setChannel(PayChannelEnum.ALI.getCode());
- param.setPayWay(PayWayEnum.QRCODE.getCode());
+ public void pay() {
+ PayParam param = new PayParam();
+ param.setClientIp("127.0.0.1");
+ param.setNotNotify(true);
- DaxPayResult execute = DaxPayKit.execute(param, true);
+ param.setBizOrderNo("P0004");
+ param.setTitle("测试接口支付");
+ param.setChannel(PayChannelEnum.ALI.getCode());
+
+ DaxPayResult execute = DaxPayKit.execute(param);
System.out.println(execute);
- PayOrderModel data = execute.getData();
- System.out.println(data);
+ System.out.println(execute.getData());
}
}
```
@@ -167,13 +152,14 @@ public class SimplePayOrderTest {
### 支付通道配置

## 🛣️ 路线图
-> 当前处于功能开发阶段,部分功能可能会有调整,`V2.1.0`时将作为正式生产可用版本进行发布,之后会保证系统版本非大版本升级时,API接口和数据接口向前兼容
+> gateway为开发分支,本地运行请使用master分支进行测试,当前正在进行整个系统的优化重构工作,各种功能都会有可能调整,
+`V2.1.0`时将作为正式生产可用版本进行发布,之后会保证系统版本非大版本升级时,API接口和数据接口向前兼容。
+**请勿在生产环境中使用,请等待生产可用的版本发布。如在使用,需要自己来保证应用的安全**
[**当前开发进度和任务池**](/_doc/Task.md)
[**历史更新记录**](/_doc/ChangeLog.md)
-
## 🥪 关于我们
扫码加入QQ交流群
@@ -217,232 +203,3 @@ public class SimplePayOrderTest {
## 🍷License
Apache License Version 2.0
-
-## 📚 Dromara 成员项目
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/_doc/Task.md b/_doc/Task.md
index 922d6236..241045f8 100644
--- a/_doc/Task.md
+++ b/_doc/Task.md
@@ -29,6 +29,7 @@
- [x] 云闪付
- [ ] 解析原有文件, 可以转换为指定格式进行下载
- [ ] 增加下载系统对账单功能
+ - [x] 增加对单差异数据查看功能
- [ ] 自动分账改造
- [ ] SDK新增对账接收放添加接口
- [ ] 创建定时任务, 自动对待分账订单进行分账
diff --git a/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/param/pay/PayParam.java b/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/param/pay/PayParam.java
index ac71303f..9b2cd4e0 100644
--- a/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/param/pay/PayParam.java
+++ b/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/param/pay/PayParam.java
@@ -36,7 +36,7 @@ public class PayParam extends DaxPayRequest {
/** 支付描述 */
private String description;
- /** 是否开启分账 */
+ /** 是否开启分账, 不传输为不开启 */
private Boolean allocation;
/** 过期时间 */
diff --git a/daxpay-single-sdk/src/test/java/cn/bootx/platform/daxpay/sdk/payment/PayOrderTest.java b/daxpay-single-sdk/src/test/java/cn/bootx/platform/daxpay/sdk/payment/PayOrderTest.java
index d0e43eb8..3c6ecb05 100644
--- a/daxpay-single-sdk/src/test/java/cn/bootx/platform/daxpay/sdk/payment/PayOrderTest.java
+++ b/daxpay-single-sdk/src/test/java/cn/bootx/platform/daxpay/sdk/payment/PayOrderTest.java
@@ -11,7 +11,7 @@ import org.junit.Before;
import org.junit.Test;
/**
- * 通用支付接口
+ * 统一支付接口
* @author xxm
* @since 2024/2/5
*/
@@ -29,10 +29,10 @@ public class PayOrderTest {
}
/**
- * 单通道支付
+ * 支付
*/
@Test
- public void onePay() {
+ public void pay() {
PayParam param = new PayParam();
param.setClientIp("127.0.0.1");
param.setNotNotify(true);
@@ -45,5 +45,4 @@ public class PayOrderTest {
System.out.println(execute);
System.out.println(execute.getData());
}
-
}
diff --git a/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/order/ReconcileOrderController.java b/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/order/ReconcileOrderController.java
index 299635b2..87b56026 100644
--- a/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/order/ReconcileOrderController.java
+++ b/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/order/ReconcileOrderController.java
@@ -69,6 +69,12 @@ public class ReconcileOrderController {
return reconcileService.downOriginal(id);
}
+ @Operation(summary = "下载原始交易对账单记录(CSV格式)")
+ @GetMapping("/downOriginal")
+ public ResponseEntity downOriginal2Csv(Long id){
+ return reconcileService.downOriginal2Csv(id);
+ }
+
@Operation(summary = "对账单分页")
@GetMapping("/page")
public ResResult> page(PageParam pageParam, ReconcileOrderQuery query){
diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/common/typehandler/ReconcileDiffTypeHandler.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/common/typehandler/ReconcileDiffTypeHandler.java
index ab9ed23d..a8ed0dec 100644
--- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/common/typehandler/ReconcileDiffTypeHandler.java
+++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/common/typehandler/ReconcileDiffTypeHandler.java
@@ -1,7 +1,7 @@
package cn.bootx.platform.daxpay.service.common.typehandler;
import cn.bootx.platform.common.mybatisplus.handler.JacksonTypeReferenceHandler;
-import cn.bootx.platform.daxpay.service.core.payment.reconcile.domain.ReconcileDiff;
+import cn.bootx.platform.daxpay.service.core.payment.reconcile.domain.ReconcileDiffDetail;
import com.fasterxml.jackson.core.type.TypeReference;
import java.util.List;
@@ -11,12 +11,12 @@ import java.util.List;
* @author xxm
* @since 2024/3/4
*/
-public class ReconcileDiffTypeHandler extends JacksonTypeReferenceHandler> {
+public class ReconcileDiffTypeHandler extends JacksonTypeReferenceHandler> {
/**
* 返回要反序列化的类型对象
*/
@Override
- public TypeReference> getTypeReference() {
- return new TypeReference>() {};
+ public TypeReference> getTypeReference() {
+ return new TypeReference>() {};
}
}
diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/reconcile/entity/ReconcileDiff.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/reconcile/entity/ReconcileDiff.java
index a7b9a669..93bfcfb7 100644
--- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/reconcile/entity/ReconcileDiff.java
+++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/reconcile/entity/ReconcileDiff.java
@@ -2,10 +2,12 @@ package cn.bootx.platform.daxpay.service.core.order.reconcile.entity;
import cn.bootx.platform.common.core.function.EntityBaseFunction;
import cn.bootx.platform.common.mybatisplus.base.MpBaseEntity;
+import cn.bootx.platform.daxpay.code.PayChannelEnum;
import cn.bootx.platform.daxpay.code.ReconcileTradeEnum;
import cn.bootx.platform.daxpay.service.code.ReconcileDiffTypeEnum;
import cn.bootx.platform.daxpay.service.common.typehandler.ReconcileDiffTypeHandler;
import cn.bootx.platform.daxpay.service.core.order.reconcile.conver.ReconcileConvert;
+import cn.bootx.platform.daxpay.service.core.payment.reconcile.domain.ReconcileDiffDetail;
import cn.bootx.platform.daxpay.service.dto.order.reconcile.ReconcileDiffDto;
import cn.bootx.table.modify.annotation.DbColumn;
import cn.bootx.table.modify.annotation.DbTable;
@@ -17,6 +19,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
+import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
@@ -46,7 +49,7 @@ public class ReconcileDiff extends MpBaseEntity implements EntityBaseFunction diffs;
+ private List diffs;
@Override
public ReconcileDiffDto toDto() {
diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/domain/ReconcileDiff.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/domain/ReconcileDiffDetail.java
similarity index 92%
rename from daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/domain/ReconcileDiff.java
rename to daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/domain/ReconcileDiffDetail.java
index 5d5cbc05..9be1aad2 100644
--- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/domain/ReconcileDiff.java
+++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/domain/ReconcileDiffDetail.java
@@ -10,7 +10,7 @@ import lombok.experimental.Accessors;
*/
@Data
@Accessors(chain = true)
-public class ReconcileDiff {
+public class ReconcileDiffDetail {
/** 字段名 */
private String fieldName;
diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/service/ReconcileAssistService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/service/ReconcileAssistService.java
index dc4746de..90240ce1 100644
--- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/service/ReconcileAssistService.java
+++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/service/ReconcileAssistService.java
@@ -16,6 +16,7 @@ import cn.bootx.platform.daxpay.service.core.order.reconcile.entity.ReconcileOrd
import cn.bootx.platform.daxpay.service.core.order.refund.dao.RefundOrderManager;
import cn.bootx.platform.daxpay.service.core.order.refund.entity.RefundOrder;
import cn.bootx.platform.daxpay.service.core.payment.reconcile.domain.GeneralTradeInfo;
+import cn.bootx.platform.daxpay.service.core.payment.reconcile.domain.ReconcileDiffDetail;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@@ -91,9 +92,6 @@ public class ReconcileAssistService {
public List generateDiffRecord(ReconcileOrder reconcileOrder,
List localTrades,
List outDetails){
- if (CollUtil.isEmpty(outDetails) || CollUtil.isEmpty(localTrades)){
- return new ArrayList<>();
- }
// 差异内容
List diffRecords = new ArrayList<>();
@@ -114,28 +112,34 @@ public class ReconcileAssistService {
.setTradeNo(outDetail.getTradeNo())
.setDetailId(outDetail.getId())
.setReconcileId(reconcileOrder.getId())
+ .setReconcileNo(reconcileOrder.getReconcileNo())
+ .setReconcileDate(reconcileOrder.getDate())
.setTitle(outDetail.getTitle())
- .setOrderType(outDetail.getType())
- .setOutOrderNo(outDetail.getOutTradeNo())
+ .setTradeType(outDetail.getType())
+ .setOutTradeNo(outDetail.getOutTradeNo())
.setOutAmount(outDetail.getAmount())
+ .setChannel(reconcileOrder.getChannel())
.setTradeTime(outDetail.getTradeTime());
diffRecords.add(diffRecord);
continue;
}
// 如果远程和本地都存在, 比对差异
- List reconcileDiffs = this.reconcileDiff(outDetail, localTrade);
- if (CollUtil.isNotEmpty(reconcileDiffs)) {
+ List reconcileDiffDetails = this.reconcileDiff(outDetail, localTrade);
+ if (CollUtil.isNotEmpty(reconcileDiffDetails)) {
ReconcileDiff diffRecord = new ReconcileDiff()
.setReconcileId(reconcileOrder.getId())
+ .setReconcileNo(reconcileOrder.getReconcileNo())
+ .setReconcileDate(reconcileOrder.getDate())
.setDetailId(outDetail.getId())
.setDiffType(ReconcileDiffTypeEnum.NOT_MATCH.getCode())
.setTradeNo(outDetail.getTradeNo())
.setTitle(outDetail.getTitle())
- .setOrderType(outDetail.getType())
- .setOutOrderNo(outDetail.getOutTradeNo())
+ .setTradeType(outDetail.getType())
+ .setOutTradeNo(outDetail.getOutTradeNo())
.setOutAmount(outDetail.getAmount())
.setAmount(localTrade.getAmount())
- .setDiffs(reconcileDiffs)
+ .setChannel(reconcileOrder.getChannel())
+ .setDiffs(reconcileDiffDetails)
.setTradeTime(outDetail.getTradeTime());
diffRecords.add(diffRecord);
}
@@ -148,11 +152,13 @@ public class ReconcileAssistService {
.setDiffType(ReconcileDiffTypeEnum.LOCAL_NOT_EXISTS.getCode())
.setTradeNo(localTrade.getTradeNo())
.setReconcileId(reconcileOrder.getId())
- .setDetailId(null)
+ .setReconcileNo(reconcileOrder.getReconcileNo())
+ .setReconcileDate(reconcileOrder.getDate())
.setTitle(localTrade.getTitle())
- .setOrderType(localTrade.getType())
- .setOutOrderNo(localTrade.getOutTradeNo())
+ .setTradeType(localTrade.getType())
+ .setOutTradeNo(localTrade.getOutTradeNo())
.setAmount(localTrade.getAmount())
+ .setChannel(reconcileOrder.getChannel())
.setTradeTime(localTrade.getFinishTime());
diffRecords.add(diffRecord);
log.info("远程订单不存在: {}", localTrade.getTradeNo());
@@ -167,35 +173,34 @@ public class ReconcileAssistService {
* @param outDetail 下载的对账订单
* @param localTrade 本地交易订单
*/
- private List reconcileDiff(ReconcileTradeDetail outDetail, GeneralTradeInfo localTrade){
- List diffs = new ArrayList<>();
+ private List reconcileDiff(ReconcileTradeDetail outDetail, GeneralTradeInfo localTrade){
+ List diffs = new ArrayList<>();
// 判断类型是否相同
if (Objects.equals(outDetail.getType(), ReconcileTradeEnum.PAY.getCode())
&& !Objects.equals(localTrade.getType(), PaymentTypeEnum.PAY.getCode())){
log.warn("订单类型不一致: {},{}", outDetail.getType(), localTrade.getType());
- diffs.add(new cn.bootx.platform.daxpay.service.core.payment.reconcile.domain.ReconcileDiff().setFieldName("订单类型").setLocalValue(outDetail.getType()).setOutValue(localTrade.getType()));
+ diffs.add(new ReconcileDiffDetail().setFieldName("订单类型").setLocalValue(outDetail.getType()).setOutValue(localTrade.getType()));
}
if (Objects.equals(outDetail.getType(), ReconcileTradeEnum.REFUND.getCode())
&& !Objects.equals(localTrade.getType(), PaymentTypeEnum.REFUND.getCode())){
log.warn("订单类型不一致: {},{}", outDetail.getType(), localTrade.getType());
- diffs.add(new cn.bootx.platform.daxpay.service.core.payment.reconcile.domain.ReconcileDiff().setFieldName("订单类型").setLocalValue(outDetail.getType()).setOutValue(localTrade.getType()));
+ diffs.add(new ReconcileDiffDetail().setFieldName("订单类型").setLocalValue(outDetail.getType()).setOutValue(localTrade.getType()));
}
// 判断名称是否一致
if (!Objects.equals(outDetail.getTitle(), localTrade.getTitle())){
log.warn("订单名称不一致: {},{}", outDetail.getTitle(), localTrade.getTitle());
- diffs.add(new cn.bootx.platform.daxpay.service.core.payment.reconcile.domain.ReconcileDiff().setFieldName("订单名称").setLocalValue(outDetail.getTitle()).setOutValue(localTrade.getTitle()));
+ diffs.add(new ReconcileDiffDetail().setFieldName("订单名称").setLocalValue(outDetail.getTitle()).setOutValue(localTrade.getTitle()));
}
// 判断金额是否一致
if (!Objects.equals(outDetail.getAmount(), localTrade.getAmount())){
log.warn("订单金额不一致: {},{}", outDetail.getAmount(), localTrade.getAmount());
- diffs.add(new cn.bootx.platform.daxpay.service.core.payment.reconcile.domain.ReconcileDiff().setFieldName("订单金额")
+ diffs.add(new ReconcileDiffDetail().setFieldName("订单金额")
.setLocalValue(String.valueOf(outDetail.getAmount()))
.setOutValue(String.valueOf(localTrade.getAmount())));
}
return diffs;
}
-
}
diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/service/ReconcileService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/service/ReconcileService.java
index 47ea2fbb..94434292 100644
--- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/service/ReconcileService.java
+++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/service/ReconcileService.java
@@ -7,12 +7,12 @@ import cn.bootx.platform.daxpay.service.code.ReconcileFileTypeEnum;
import cn.bootx.platform.daxpay.service.code.ReconcileResultEnum;
import cn.bootx.platform.daxpay.service.common.local.PaymentContextLocal;
import cn.bootx.platform.daxpay.service.core.order.reconcile.dao.ReconcileFileManager;
-import cn.bootx.platform.daxpay.service.core.order.reconcile.dao.ReconcileTradeDetailManager;
import cn.bootx.platform.daxpay.service.core.order.reconcile.dao.ReconcileOrderManager;
-import cn.bootx.platform.daxpay.service.core.order.reconcile.entity.ReconcileFile;
-import cn.bootx.platform.daxpay.service.core.order.reconcile.entity.ReconcileTradeDetail;
+import cn.bootx.platform.daxpay.service.core.order.reconcile.dao.ReconcileTradeDetailManager;
import cn.bootx.platform.daxpay.service.core.order.reconcile.entity.ReconcileDiff;
+import cn.bootx.platform.daxpay.service.core.order.reconcile.entity.ReconcileFile;
import cn.bootx.platform.daxpay.service.core.order.reconcile.entity.ReconcileOrder;
+import cn.bootx.platform.daxpay.service.core.order.reconcile.entity.ReconcileTradeDetail;
import cn.bootx.platform.daxpay.service.core.order.reconcile.service.ReconcileDiffService;
import cn.bootx.platform.daxpay.service.core.order.reconcile.service.ReconcileOrderService;
import cn.bootx.platform.daxpay.service.core.payment.reconcile.domain.GeneralTradeInfo;
@@ -223,19 +223,24 @@ public class ReconcileService {
/**
* 下载基于原始交易对账单数据转换的对账单文件, 例如csv, json方式
*/
- public void downOriginal2Csv(Long id){
+ @SneakyThrows
+ public ResponseEntity downOriginal2Csv(Long id){
ReconcileOrder reconcileOrder = reconcileOrderService.findById(id)
.orElseThrow(() -> new DataNotExistException("未找到对账订单"));
// 查询对账-第三方交易明细
List reconcileTradeDetails = reconcileTradeDetailManager.findAllByReconcileId(reconcileOrder.getId());
// 转换为csv文件
+
+ return null;
}
/**
* 下载对账单(本系统中的订单)
*/
- public void downLocal(Long id){
+ @SneakyThrows
+ public ResponseEntity downLocal(Long id){
+ return null;
}
}
diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/reconcile/ReconcileDiffDto.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/reconcile/ReconcileDiffDto.java
index 68aa0fbf..5612af7c 100644
--- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/reconcile/ReconcileDiffDto.java
+++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/reconcile/ReconcileDiffDto.java
@@ -1,15 +1,17 @@
package cn.bootx.platform.daxpay.service.dto.order.reconcile;
import cn.bootx.platform.common.core.rest.dto.BaseDto;
+import cn.bootx.platform.daxpay.code.PayChannelEnum;
import cn.bootx.platform.daxpay.code.ReconcileTradeEnum;
import cn.bootx.platform.daxpay.service.code.ReconcileDiffTypeEnum;
-import cn.bootx.platform.daxpay.service.core.payment.reconcile.domain.ReconcileDiff;
+import cn.bootx.platform.daxpay.service.core.payment.reconcile.domain.ReconcileDiffDetail;
import cn.bootx.table.modify.annotation.DbColumn;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
+import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
@@ -38,7 +40,7 @@ public class ReconcileDiffDto extends BaseDto {
/** 对账日期 */
@Schema(description = "对账日期")
- private LocalDateTime reconcileDate;
+ private LocalDate reconcileDate;
/** 本地交易号 */
@Schema(description = "本地交易号")
@@ -46,7 +48,7 @@ public class ReconcileDiffDto extends BaseDto {
/** 外部交易号 */
@Schema(description = "外部交易号")
- private String outOrderNo;
+ private String outTradeNo;
/** 交易时间 */
@Schema(description = "交易时间")
@@ -56,6 +58,13 @@ public class ReconcileDiffDto extends BaseDto {
@Schema(description = "订单标题")
private String title;
+ /**
+ * 通道
+ * @see PayChannelEnum
+ */
+ @Schema(description = "通道")
+ private String channel;
+
/** 交易金额 */
@Schema(description = "交易金额")
private Integer amount;
@@ -81,8 +90,8 @@ public class ReconcileDiffDto extends BaseDto {
/**
* 差异内容, 存储json字符串, 格式为
* {属性: '标题', 本地字段值:'标题1', 网关字段值: '标题2'}
- * @see ReconcileDiff
+ * @see ReconcileDiffDetail
*/
@Schema(description = "差异内容")
- private List diffs;
+ private List diffs;
}
diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/reconcile/ReconcileDiffQuery.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/reconcile/ReconcileDiffQuery.java
index e866431c..67b890f5 100644
--- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/reconcile/ReconcileDiffQuery.java
+++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/reconcile/ReconcileDiffQuery.java
@@ -1,8 +1,10 @@
package cn.bootx.platform.daxpay.service.param.reconcile;
import cn.bootx.platform.common.core.rest.param.QueryOrder;
+import cn.bootx.platform.daxpay.code.PayChannelEnum;
import cn.bootx.platform.daxpay.code.ReconcileTradeEnum;
import cn.bootx.platform.daxpay.service.code.ReconcileDiffTypeEnum;
+import cn.bootx.table.modify.annotation.DbColumn;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -19,13 +21,9 @@ import lombok.experimental.Accessors;
@Schema(title = "对账差异查询参数")
public class ReconcileDiffQuery extends QueryOrder {
- /** 对账单ID */
- @Schema(description = "对账单ID")
- private Long reconcileId;
-
- /** 对账单明细ID */
- @Schema(description = "对账单明细ID")
- private Long detailId;
+ /** 对账号 */
+ @DbColumn(comment = "对账号")
+ private String reconcileNo;
/** 本地交易号 */
@Schema(description = "本地交易号")
@@ -33,18 +31,25 @@ public class ReconcileDiffQuery extends QueryOrder {
/** 外部交易号 */
@Schema(description = "外部交易号")
- private String outOrderNo;
+ private String outTradeNo;
/** 订单标题 */
@Schema(description = "订单标题")
private String title;
+ /**
+ * 通道
+ * @see PayChannelEnum
+ */
+ @Schema(description = "通道")
+ private String channel;
+
/**
* 对账订单类型
* @see ReconcileTradeEnum
*/
@Schema(description = "对账订单类型")
- private String orderType;
+ private String tradeType;
/**
* 差异类型