diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/domain/MemberAdapayRecord.java b/jsowell-pile/src/main/java/com/jsowell/pile/domain/MemberAdapayRecord.java index b02c45ce0..f2da9a194 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/domain/MemberAdapayRecord.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/domain/MemberAdapayRecord.java @@ -32,7 +32,7 @@ public class MemberAdapayRecord { private String paymentId; /** - * 汇付支付单号 + * 汇付支付单号(支付宝/微信 订单号) */ private String paymentOrderNo; @@ -51,6 +51,11 @@ public class MemberAdapayRecord { */ private BigDecimal spendAmt; + /** + * 冻结金额 + */ + private BigDecimal freezeAmt; + /** * 剩余金额 */ diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java index af57d1aaa..1c29f6dc3 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java @@ -760,15 +760,20 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService { 未使用延时分账的一级运营商 */ - OrderSettleResult orderSettleResult = null; if (StringUtils.equals(delayMode, Constants.ADAPAY_PAY_MODE_DELAY)) { - // 延迟商家订单处理逻辑 - orderSettleResult = delayMerchantOrderProcessingLogic(orderBasicInfo, adapayMemberAccount, appId); - } else { - // 不延迟商家订单处理逻辑 不使用延时分账的汇付商户,钱已经到基本账户中了,只需要退款就可以 - orderSettleResult = notDelayMerchantOrderProcessingLogic(orderBasicInfo, adapayMemberAccount, appId); + // 记账 冻结金额 + } + OrderSettleResult orderSettleResult = null; + // if (StringUtils.equals(delayMode, Constants.ADAPAY_PAY_MODE_DELAY)) { + // // 延迟商家订单处理逻辑 + // orderSettleResult = delayMerchantOrderProcessingLogic(orderBasicInfo, adapayMemberAccount, appId); + // } else { + // // 不延迟商家订单处理逻辑 不使用延时分账的汇付商户,钱已经到基本账户中了,只需要退款就可以 + // orderSettleResult = notDelayMerchantOrderProcessingLogic(orderBasicInfo, adapayMemberAccount, appId); + // } + // 退款逻辑/需要退款的情况 BigDecimal residue = orderBasicInfo.getRefundAmount(); if (residue.compareTo(BigDecimal.ZERO) > 0) { @@ -787,6 +792,7 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService { * 不延迟商家订单处理逻辑 * 例如:希晓 * 相当于已经分账完成了 + * * @param orderBasicInfo 订单信息 * @param adapayMemberAccount 汇付用户信息 * @param wechatAppId 小程序appId @@ -797,6 +803,26 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService { return null; } + /** + * 冻结订单金额 + * 记一笔账,还没有到分账时间,把订单消费金额在支付单里冻结,退款的时候不能动这些钱 + */ + private void freezeAmount(OrderBasicInfo orderBasicInfo) { + String orderCode = orderBasicInfo.getOrderCode(); + // 查询这笔订单的支付id/查询该笔订单的支付交易回调 + AdapayCallbackRecord adapayCallbackRecord = selectAdapayCallbackRecord(orderCode); + + } + + private AdapayCallbackRecord selectAdapayCallbackRecord(String orderCode) { + AdapayCallbackRecord adapayCallbackRecord = adapayCallbackRecordService.selectByOrderCode(orderCode); + if (adapayCallbackRecord == null) { + logger.error("根据订单号:{}, 未查询到汇付支付回调信息", orderCode); + throw new BusinessException(ReturnCodeEnum.CODE_ADAPAY_CALLBACK_IS_NULL_ERROR); + } + return adapayCallbackRecord; + } + /** * 延迟商家订单处理逻辑 * 例如:举视以及下面的二级运营商 @@ -1328,11 +1354,7 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService { public OrderSettleResult doPaymentConfirmWithDelay(OrderBasicInfo orderBasicInfo, AdapayMemberAccount adapayMemberAccount, String wechatAppId) { String orderCode = orderBasicInfo.getOrderCode(); // 查询该笔订单的支付交易回调 - AdapayCallbackRecord adapayCallbackRecord = adapayCallbackRecordService.selectByOrderCode(orderCode); - if (adapayCallbackRecord == null) { - logger.error("根据订单号:{}, 未查询到汇付支付回调信息", orderCode); - throw new BusinessException(ReturnCodeEnum.CODE_ADAPAY_CALLBACK_IS_NULL_ERROR); - } + AdapayCallbackRecord adapayCallbackRecord = selectAdapayCallbackRecord(orderCode); // 支付id String paymentId = adapayCallbackRecord.getPaymentId(); @@ -2857,10 +2879,7 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService { BigDecimal refundAmount = orderBasicInfo.getRefundAmount(); // 查到原汇付支付id - AdapayCallbackRecord adapayCallbackRecord = adapayCallbackRecordService.selectByOrderCode(orderCode); - if (adapayCallbackRecord == null) { - throw new BusinessException(ReturnCodeEnum.CODE_ADAPAY_CALLBACK_IS_NULL_ERROR); - } + AdapayCallbackRecord adapayCallbackRecord = selectAdapayCallbackRecord(orderCode); // 获取appId String wechatAppId = pileMerchantInfoService.queryAppIdByMerchantId(orderBasicInfo.getMerchantId()); diff --git a/jsowell-pile/src/main/resources/mapper/pile/MemberAdapayRecordMapper.xml b/jsowell-pile/src/main/resources/mapper/pile/MemberAdapayRecordMapper.xml index 0a6b444a9..b279eeb81 100644 --- a/jsowell-pile/src/main/resources/mapper/pile/MemberAdapayRecordMapper.xml +++ b/jsowell-pile/src/main/resources/mapper/pile/MemberAdapayRecordMapper.xml @@ -12,6 +12,7 @@ + @@ -22,7 +23,8 @@ id, member_id, scenario_type, payment_id, payment_order_no, pay_amt, refund_amt, - spend_amt, balance_amt, create_by, create_time, update_by, update_time, del_flag + spend_amt, freeze_amt, balance_amt, create_by, create_time, update_by, update_time, + del_flag \ No newline at end of file