diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/reconcile/service/PayReconcileDiffRecordService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/reconcile/service/PayReconcileDiffRecordService.java new file mode 100644 index 00000000..5cf6131c --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/reconcile/service/PayReconcileDiffRecordService.java @@ -0,0 +1,20 @@ +package cn.bootx.platform.daxpay.service.core.order.reconcile.service; + +import cn.bootx.platform.daxpay.service.core.order.reconcile.dao.PayReconcileDiffRecordManager; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +/** + * + * @author xxm + * @since 2024/2/29 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class PayReconcileDiffRecordService { + private final PayReconcileDiffRecordManager recordManager; + + +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/service/PayReconcileService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/service/PayReconcileService.java index 565236fc..0ca137e9 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/service/PayReconcileService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/service/PayReconcileService.java @@ -7,7 +7,9 @@ import cn.bootx.platform.daxpay.service.common.local.PaymentContextLocal; import cn.bootx.platform.daxpay.service.core.order.reconcile.dao.PayReconcileDetailManager; import cn.bootx.platform.daxpay.service.core.order.reconcile.dao.PayReconcileOrderManager; import cn.bootx.platform.daxpay.service.core.order.reconcile.entity.PayReconcileDetail; +import cn.bootx.platform.daxpay.service.core.order.reconcile.entity.PayReconcileDiffRecord; import cn.bootx.platform.daxpay.service.core.order.reconcile.entity.PayReconcileOrder; +import cn.bootx.platform.daxpay.service.core.order.reconcile.service.PayReconcileDiffRecordService; import cn.bootx.platform.daxpay.service.core.order.reconcile.service.PayReconcileOrderService; import cn.bootx.platform.daxpay.service.core.payment.reconcile.factory.PayReconcileStrategyFactory; import cn.bootx.platform.daxpay.service.func.AbsReconcileStrategy; @@ -29,8 +31,11 @@ import java.util.List; @Service @RequiredArgsConstructor public class PayReconcileService { - private final PayReconcileOrderManager reconcileOrderManager; private final PayReconcileOrderService reconcileOrderService; + + private final PayReconcileDiffRecordService reconcileDiffRecordService; + + private final PayReconcileOrderManager reconcileOrderManager; private final PayReconcileDetailManager reconcileDetailManager; /** @@ -125,8 +130,8 @@ public class PayReconcileService { reconcileStrategy.setRecordOrder(reconcileOrder); reconcileStrategy.setReconcileDetails(reconcileDetails); try { - // 执行比对任务 - reconcileStrategy.compare(); + // 执行比对任务, 获取对账差异记录 + List diffRecords = reconcileStrategy.generateDiffRecord(); // reconcileOrder.setCompare(true); // reconcileOrderService.update(reconcileOrder); } catch (Exception e) { diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/strategy/AlipayReconcileStrategy.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/strategy/AlipayReconcileStrategy.java index 82e04df4..b7b22c64 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/strategy/AlipayReconcileStrategy.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/strategy/AlipayReconcileStrategy.java @@ -13,6 +13,7 @@ import cn.bootx.platform.daxpay.service.core.channel.alipay.entity.AliPayRecord; import cn.bootx.platform.daxpay.service.core.channel.alipay.service.AliPayConfigService; import cn.bootx.platform.daxpay.service.core.channel.alipay.service.AliPayReconcileService; import cn.bootx.platform.daxpay.service.core.order.reconcile.entity.PayReconcileDetail; +import cn.bootx.platform.daxpay.service.core.order.reconcile.entity.PayReconcileDiffRecord; import cn.bootx.platform.daxpay.service.func.AbsReconcileStrategy; import cn.hutool.core.date.DatePattern; import lombok.Getter; @@ -24,6 +25,7 @@ import org.springframework.stereotype.Service; import java.time.LocalDate; import java.time.LocalDateTime; +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Objects; @@ -104,11 +106,15 @@ public class AlipayReconcileStrategy extends AbsReconcileStrategy { * 3. 远程有, 本地有, 但状态不一致 记录差错表 */ @Override - public void compare() { + public List generateDiffRecord() { List details = this.getReconcileDetails(); if (CollUtil.isEmpty(details)){ - return; + return new ArrayList<>(0); } + + // 差异单列表 + List diffRecords = new ArrayList<>(); + Map detailMap = details.stream() .collect(Collectors.toMap(PayReconcileDetail::getOrderId, Function.identity(), CollectorsFunction::retainLatest)); @@ -160,5 +166,6 @@ public class AlipayReconcileStrategy extends AbsReconcileStrategy { continue; } } + return diffRecords; } } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/strategy/WechatPayReconcileStrategy.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/strategy/WechatPayReconcileStrategy.java index 84c05e54..7b107fd0 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/strategy/WechatPayReconcileStrategy.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/strategy/WechatPayReconcileStrategy.java @@ -13,6 +13,7 @@ import cn.bootx.platform.daxpay.service.core.channel.wechat.entity.WeChatPayReco import cn.bootx.platform.daxpay.service.core.channel.wechat.service.WeChatPayConfigService; import cn.bootx.platform.daxpay.service.core.channel.wechat.service.WechatPayReconcileService; import cn.bootx.platform.daxpay.service.core.order.reconcile.entity.PayReconcileDetail; +import cn.bootx.platform.daxpay.service.core.order.reconcile.entity.PayReconcileDiffRecord; import cn.bootx.platform.daxpay.service.func.AbsReconcileStrategy; import cn.hutool.core.date.DatePattern; import lombok.RequiredArgsConstructor; @@ -99,9 +100,11 @@ public class WechatPayReconcileStrategy extends AbsReconcileStrategy { * 1. 远程有, 本地无 补单(追加回订单/记录差异表) * 2. 远程无, 本地有 记录差错表 * 3. 远程有, 本地有, 但状态不一致 记录差错表 + * + * @return */ @Override - public void compare() { + public List generateDiffRecord() { List details = this.getReconcileDetails(); if (CollUtil.isEmpty(details)){ return; diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/func/AbsReconcileStrategy.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/func/AbsReconcileStrategy.java index d74805ee..793f27fd 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/func/AbsReconcileStrategy.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/func/AbsReconcileStrategy.java @@ -1,6 +1,7 @@ package cn.bootx.platform.daxpay.service.func; import cn.bootx.platform.daxpay.service.core.order.reconcile.entity.PayReconcileDetail; +import cn.bootx.platform.daxpay.service.core.order.reconcile.entity.PayReconcileDiffRecord; import cn.bootx.platform.daxpay.service.core.order.reconcile.entity.PayReconcileOrder; import lombok.Getter; import lombok.Setter; @@ -45,7 +46,9 @@ public abstract class AbsReconcileStrategy implements PayStrategy { * 1. 远程有, 本地无 补单(追加回订单/记录差异表) * 2. 远程无, 本地有 记录差错表 * 3. 远程有, 本地有, 但状态不一致 记录差错表 + * + * @return */ - public abstract void compare(); + public abstract List generateDiffRecord(); }