修复一次支付发放两张会员卡的问题
This commit was merged in pull request #45.
This commit is contained in:
+7
-7
@@ -22,7 +22,6 @@ public class PaymentNotifyServiceImpl implements PaymentNotifyService {
|
||||
private final MemberStoredCardRepository memberStoredCardRepository;
|
||||
private final MemberStoredCardRechargeRepository memberStoredCardRechargeRepository;
|
||||
private final IMemberCardService memberCardService;
|
||||
private Long memberIdGlob;
|
||||
|
||||
public PaymentNotifyServiceImpl(PaymentOrderRepository paymentOrderRepository,
|
||||
MemberStoredCardRepository memberStoredCardRepository,
|
||||
@@ -35,8 +34,7 @@ public class PaymentNotifyServiceImpl implements PaymentNotifyService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Mono<Void> notifyPaymentStatus(String orderNo, String status,Long memberId) {
|
||||
memberIdGlob = memberId;
|
||||
public Mono<Void> notifyPaymentStatus(String orderNo, String status, Long memberId) {
|
||||
return paymentOrderRepository.findByOrderNo(orderNo)
|
||||
.flatMap(order -> {
|
||||
log.info("[PaymentNotify] 支付通知: orderNo={}, status={}, orderType={}", orderNo, status, order.getOrderType());
|
||||
@@ -114,13 +112,15 @@ public class PaymentNotifyServiceImpl implements PaymentNotifyService {
|
||||
final Long finalMemberCardId = memberCardId;
|
||||
final int finalCount = count;
|
||||
final Long sourceOrderId = order.getId();
|
||||
final Long orderMemberId = order.getMemberId();
|
||||
|
||||
log.info("[PaymentNotify] 处理会员卡购买: orderNo={}, memberId={}, memberCardId={}, count={}",
|
||||
order.getOrderNo(), memberIdGlob, finalMemberCardId, finalCount);
|
||||
order.getOrderNo(), orderMemberId, finalMemberCardId, finalCount);
|
||||
|
||||
return memberCardService.purchaseCard(memberIdGlob, finalMemberCardId, sourceOrderId)
|
||||
// 幂等性检查:同一笔支付订单只创建一次会员卡记录
|
||||
return memberCardService.purchaseCard(orderMemberId, finalMemberCardId, sourceOrderId)
|
||||
.doOnSuccess(record -> log.info("[PaymentNotify] 会员卡购买完成: orderNo={}, memberId={}, memberCardRecordId={}",
|
||||
order.getOrderNo(), memberIdGlob, record.getMemberCardRecordId()))
|
||||
order.getOrderNo(), orderMemberId, record.getMemberCardRecordId()))
|
||||
.doOnError(e -> log.error("[PaymentNotify] 会员卡购买异常, orderNo={}", order.getOrderNo(), e))
|
||||
.onErrorResume(e -> Mono.empty())
|
||||
.then();
|
||||
@@ -166,7 +166,7 @@ public class PaymentNotifyServiceImpl implements PaymentNotifyService {
|
||||
final BigDecimal finalRechargeAmount = rechargeAmount;
|
||||
final BigDecimal finalBonus = bonus != null ? bonus : BigDecimal.ZERO;
|
||||
final BigDecimal totalAddAmount = finalRechargeAmount.add(finalBonus);
|
||||
Long memberId = memberIdGlob;
|
||||
Long memberId = order.getMemberId();
|
||||
final String orderNo = order.getOrderNo();
|
||||
final BigDecimal payAmount = order.getTransAmt();
|
||||
final LocalDateTime now = LocalDateTime.now();
|
||||
|
||||
Reference in New Issue
Block a user