mirror of
https://gitee.com/dromara/dax-pay.git
synced 2025-09-11 14:59:04 +00:00
feat 对账差异单
This commit is contained in:
@@ -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;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@@ -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.PayReconcileDetailManager;
|
||||||
import cn.bootx.platform.daxpay.service.core.order.reconcile.dao.PayReconcileOrderManager;
|
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.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.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.order.reconcile.service.PayReconcileOrderService;
|
||||||
import cn.bootx.platform.daxpay.service.core.payment.reconcile.factory.PayReconcileStrategyFactory;
|
import cn.bootx.platform.daxpay.service.core.payment.reconcile.factory.PayReconcileStrategyFactory;
|
||||||
import cn.bootx.platform.daxpay.service.func.AbsReconcileStrategy;
|
import cn.bootx.platform.daxpay.service.func.AbsReconcileStrategy;
|
||||||
@@ -29,8 +31,11 @@ import java.util.List;
|
|||||||
@Service
|
@Service
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class PayReconcileService {
|
public class PayReconcileService {
|
||||||
private final PayReconcileOrderManager reconcileOrderManager;
|
|
||||||
private final PayReconcileOrderService reconcileOrderService;
|
private final PayReconcileOrderService reconcileOrderService;
|
||||||
|
|
||||||
|
private final PayReconcileDiffRecordService reconcileDiffRecordService;
|
||||||
|
|
||||||
|
private final PayReconcileOrderManager reconcileOrderManager;
|
||||||
private final PayReconcileDetailManager reconcileDetailManager;
|
private final PayReconcileDetailManager reconcileDetailManager;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -125,8 +130,8 @@ public class PayReconcileService {
|
|||||||
reconcileStrategy.setRecordOrder(reconcileOrder);
|
reconcileStrategy.setRecordOrder(reconcileOrder);
|
||||||
reconcileStrategy.setReconcileDetails(reconcileDetails);
|
reconcileStrategy.setReconcileDetails(reconcileDetails);
|
||||||
try {
|
try {
|
||||||
// 执行比对任务
|
// 执行比对任务, 获取对账差异记录
|
||||||
reconcileStrategy.compare();
|
List<PayReconcileDiffRecord> diffRecords = reconcileStrategy.generateDiffRecord();
|
||||||
// reconcileOrder.setCompare(true);
|
// reconcileOrder.setCompare(true);
|
||||||
// reconcileOrderService.update(reconcileOrder);
|
// reconcileOrderService.update(reconcileOrder);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
@@ -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.AliPayConfigService;
|
||||||
import cn.bootx.platform.daxpay.service.core.channel.alipay.service.AliPayReconcileService;
|
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.PayReconcileDetail;
|
||||||
|
import cn.bootx.platform.daxpay.service.core.order.reconcile.entity.PayReconcileDiffRecord;
|
||||||
import cn.bootx.platform.daxpay.service.func.AbsReconcileStrategy;
|
import cn.bootx.platform.daxpay.service.func.AbsReconcileStrategy;
|
||||||
import cn.hutool.core.date.DatePattern;
|
import cn.hutool.core.date.DatePattern;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
@@ -24,6 +25,7 @@ import org.springframework.stereotype.Service;
|
|||||||
|
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
@@ -104,11 +106,15 @@ public class AlipayReconcileStrategy extends AbsReconcileStrategy {
|
|||||||
* 3. 远程有, 本地有, 但状态不一致 记录差错表
|
* 3. 远程有, 本地有, 但状态不一致 记录差错表
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void compare() {
|
public List<PayReconcileDiffRecord> generateDiffRecord() {
|
||||||
List<PayReconcileDetail> details = this.getReconcileDetails();
|
List<PayReconcileDetail> details = this.getReconcileDetails();
|
||||||
if (CollUtil.isEmpty(details)){
|
if (CollUtil.isEmpty(details)){
|
||||||
return;
|
return new ArrayList<>(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 差异单列表
|
||||||
|
List<PayReconcileDiffRecord> diffRecords = new ArrayList<>();
|
||||||
|
|
||||||
Map<String, PayReconcileDetail> detailMap = details.stream()
|
Map<String, PayReconcileDetail> detailMap = details.stream()
|
||||||
.collect(Collectors.toMap(PayReconcileDetail::getOrderId, Function.identity(), CollectorsFunction::retainLatest));
|
.collect(Collectors.toMap(PayReconcileDetail::getOrderId, Function.identity(), CollectorsFunction::retainLatest));
|
||||||
|
|
||||||
@@ -160,5 +166,6 @@ public class AlipayReconcileStrategy extends AbsReconcileStrategy {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return diffRecords;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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.WeChatPayConfigService;
|
||||||
import cn.bootx.platform.daxpay.service.core.channel.wechat.service.WechatPayReconcileService;
|
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.PayReconcileDetail;
|
||||||
|
import cn.bootx.platform.daxpay.service.core.order.reconcile.entity.PayReconcileDiffRecord;
|
||||||
import cn.bootx.platform.daxpay.service.func.AbsReconcileStrategy;
|
import cn.bootx.platform.daxpay.service.func.AbsReconcileStrategy;
|
||||||
import cn.hutool.core.date.DatePattern;
|
import cn.hutool.core.date.DatePattern;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
@@ -99,9 +100,11 @@ public class WechatPayReconcileStrategy extends AbsReconcileStrategy {
|
|||||||
* 1. 远程有, 本地无 补单(追加回订单/记录差异表)
|
* 1. 远程有, 本地无 补单(追加回订单/记录差异表)
|
||||||
* 2. 远程无, 本地有 记录差错表
|
* 2. 远程无, 本地有 记录差错表
|
||||||
* 3. 远程有, 本地有, 但状态不一致 记录差错表
|
* 3. 远程有, 本地有, 但状态不一致 记录差错表
|
||||||
|
*
|
||||||
|
* @return
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void compare() {
|
public List<PayReconcileDiffRecord> generateDiffRecord() {
|
||||||
List<PayReconcileDetail> details = this.getReconcileDetails();
|
List<PayReconcileDetail> details = this.getReconcileDetails();
|
||||||
if (CollUtil.isEmpty(details)){
|
if (CollUtil.isEmpty(details)){
|
||||||
return;
|
return;
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
package cn.bootx.platform.daxpay.service.func;
|
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.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.entity.PayReconcileOrder;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
@@ -45,7 +46,9 @@ public abstract class AbsReconcileStrategy implements PayStrategy {
|
|||||||
* 1. 远程有, 本地无 补单(追加回订单/记录差异表)
|
* 1. 远程有, 本地无 补单(追加回订单/记录差异表)
|
||||||
* 2. 远程无, 本地有 记录差错表
|
* 2. 远程无, 本地有 记录差错表
|
||||||
* 3. 远程有, 本地有, 但状态不一致 记录差错表
|
* 3. 远程有, 本地有, 但状态不一致 记录差错表
|
||||||
|
*
|
||||||
|
* @return
|
||||||
*/
|
*/
|
||||||
public abstract void compare();
|
public abstract List<PayReconcileDiffRecord> generateDiffRecord();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user