From 47e03d0aa72b6bd1c62c4ecff0c25289890f7abc Mon Sep 17 00:00:00 2001 From: KKSU <15274802129@163.com> Date: Wed, 12 Feb 2025 10:49:17 +0800 Subject: [PATCH] refactor(mall): 根据系统配置选择不同的物流服务接口 - 在 AdminMallOrderService 和 CommonService 中添加了根据系统配置选择物流服务接口的逻辑 - 新增了 SENDER_STATE 数据字典项,用于控制使用测试环境还是生产环境的物流服务 - 根据系统配置,选择不同的 ClientParamEnum 实例来调用 --- src/main/java/cc/mrbird/febs/pay/controller/FIUUController.java | 34 +++++++++++++++++++++++----------- 1 files changed, 23 insertions(+), 11 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/pay/controller/FIUUController.java b/src/main/java/cc/mrbird/febs/pay/controller/FIUUController.java index 9c49d0f..817567b 100644 --- a/src/main/java/cc/mrbird/febs/pay/controller/FIUUController.java +++ b/src/main/java/cc/mrbird/febs/pay/controller/FIUUController.java @@ -15,6 +15,7 @@ import cc.mrbird.febs.mall.entity.MallOrderItem; import cc.mrbird.febs.mall.mapper.MallMemberMapper; import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper; +import cc.mrbird.febs.mall.service.IApiMallMemberWalletService; import cc.mrbird.febs.mall.service.IMallMoneyFlowService; import cc.mrbird.febs.pay.model.FIUUInitChargeRequest; import cc.mrbird.febs.pay.model.FIUUInitPayRequest; @@ -49,6 +50,9 @@ @Resource private IMallMoneyFlowService mallMoneyFlowService; + + @Resource + private IApiMallMemberWalletService memberWalletService; @Resource private MallMemberMapper mallMemberMapper; @@ -181,19 +185,27 @@ log.info("notify status: {}", status); // 4. 根据状态码更新订单 if ("00".equals(status)) { - MallMoneyFlow mallMoneyFlow = mallMoneyFlowService.getBaseMapper().selectOne(new LambdaQueryWrapper<MallMoneyFlow>().eq(MallMoneyFlow::getOrderNo, orderId)); - if (mallMoneyFlow != null) { - // 更新订单状态为已支付 - mallMoneyFlow.setStatus(2); - mallMoneyFlowService.getBaseMapper().updateById(mallMoneyFlow); - } - MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectById(Long.parseLong(orderId)); - if(mallOrderInfo != null){ - // 支付成功,更新订单状态 - updateOrderStatus(orderId, status, amount, paydate, tranID); - } + // 可选:记录交易ID防止重复处理 log.info("Payment succeeded for order: {}", orderId); + MallMoneyFlow mallMoneyFlow = mallMoneyFlowService.getBaseMapper().selectOne(new LambdaQueryWrapper<MallMoneyFlow>().eq(MallMoneyFlow::getOrderNo, orderId)); + if (mallMoneyFlow != null) { + if(1 == mallMoneyFlow.getStatus()){ + memberWalletService.addBalance(mallMoneyFlow.getAmount(),mallMoneyFlow.getMemberId()); + // 更新订单状态为已支付 + mallMoneyFlow.setStatus(2); + mallMoneyFlowService.getBaseMapper().updateById(mallMoneyFlow); + } + }else{ + MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectById(Long.parseLong(orderId)); + if(mallOrderInfo != null){ + if("1" == mallOrderInfo.getPayResult()){ + return; + } + // 支付成功,更新订单状态 + updateOrderStatus(orderId, status, amount, paydate, tranID); + } + } } else { // 支付失败或待处理 log.warn("Payment failed/pending for order: {}", orderId); -- Gitblit v1.9.1