diff --git a/payment-base-app/src/main/java/com/base/springcloud/constant/ErrorConstant.java b/payment-base-app/src/main/java/com/base/springcloud/constant/ErrorConstant.java index 54ee31a..5999c73 100644 --- a/payment-base-app/src/main/java/com/base/springcloud/constant/ErrorConstant.java +++ b/payment-base-app/src/main/java/com/base/springcloud/constant/ErrorConstant.java @@ -25,7 +25,8 @@ public enum ErrorConstant { BILL_COMPLETE_PAYMENT("RBS00020","销售单据已完成付款!"), ALL_BILL_COMPLETE_PAYMENT("RBS00021","所有销售单据已完成付款!"), MISTAKE_TARGET("RBS00022","要提供的对象不是数组!"), - NO_FOUND_REFUND_DATA("RBS00023","无需同步状态退款订单"); + SUPER_REFUND_ORDER_COUNT_FAL("RBS00023","退款订单次数累计失败!"), + SUPER_PAY_ORDER_COUNT_FAL("RBS00024","支付订单次数累计失败!"); private String code; private String message; diff --git a/payment-base-app/src/main/java/com/base/springcloud/dao/OrderMapper.java b/payment-base-app/src/main/java/com/base/springcloud/dao/OrderMapper.java index 78d850f..4e8e18d 100644 --- a/payment-base-app/src/main/java/com/base/springcloud/dao/OrderMapper.java +++ b/payment-base-app/src/main/java/com/base/springcloud/dao/OrderMapper.java @@ -27,4 +27,6 @@ public interface OrderMapper { int updateOrderSuccess(String orderNo); Order origOrderInfo(@Param("orderId") String orderId); + + int superRefundCount(String id); } \ No newline at end of file diff --git a/payment-base-app/src/main/java/com/base/springcloud/service/OrderService.java b/payment-base-app/src/main/java/com/base/springcloud/service/OrderService.java index d9c16cb..01c364d 100644 --- a/payment-base-app/src/main/java/com/base/springcloud/service/OrderService.java +++ b/payment-base-app/src/main/java/com/base/springcloud/service/OrderService.java @@ -21,4 +21,7 @@ public interface OrderService { // 查询原支付订单 void origOrderCheck(RefundBO refundBO); + + // 叠加次数 + void superPayCount(String id); } diff --git a/payment-base-app/src/main/java/com/base/springcloud/service/imp/OrderServiceImp.java b/payment-base-app/src/main/java/com/base/springcloud/service/imp/OrderServiceImp.java index 0bbf1dc..4dc6861 100644 --- a/payment-base-app/src/main/java/com/base/springcloud/service/imp/OrderServiceImp.java +++ b/payment-base-app/src/main/java/com/base/springcloud/service/imp/OrderServiceImp.java @@ -113,4 +113,17 @@ public class OrderServiceImp implements OrderService { refundBO.setRefundAmount(order.getOrderAmount()); refundBO.setMchId(order.getMchId()); } + + /** + * 查询次数叠加 + * @param id + */ + @Override + public void superPayCount(String id) { + if(StringUtils.isBlank(id)) + return; + int count = orderMapper.superRefundCount(id); + if(count <= 0) + throw new BusinessException(ErrorConstant.SUPER_PAY_ORDER_COUNT_FAL); + } } diff --git a/payment-base-app/src/main/java/com/base/springcloud/service/imp/PaymentServiceImp.java b/payment-base-app/src/main/java/com/base/springcloud/service/imp/PaymentServiceImp.java index 2d102a8..8b6305d 100644 --- a/payment-base-app/src/main/java/com/base/springcloud/service/imp/PaymentServiceImp.java +++ b/payment-base-app/src/main/java/com/base/springcloud/service/imp/PaymentServiceImp.java @@ -1,5 +1,6 @@ package com.base.springcloud.service.imp; +import com.base.springcloud.aspect.annotation.BusinessException; import com.base.springcloud.bo.MerchantConfigBO; import com.base.springcloud.bo.OrderBO; import com.base.springcloud.bo.RefundBO; @@ -102,16 +103,25 @@ public class PaymentServiceImp implements PaymentService { // 参数检查 Order order = Optional.ofNullable(orderBO).map(o->orderBO.getOrder()).orElse(null); if(!Optional.ofNullable(order).isPresent()) return; - // 获取商户支付配置信息 - claimMerchantConfig(orderBO); - // 查询微信订单结果 - Boolean state = wecPaymentService.orderResult(orderBO); - if(!state) return; - // 同步订单状态 - String orderNo = order.getOrderNo(); - orderService.updateOrderSuccess(orderNo); - // 核销销售单据金额 - billService.writeOffAmount(order.getId()); + try{ + // 获取商户支付配置信息 + claimMerchantConfig(orderBO); + // 查询微信订单结果 + Boolean state = wecPaymentService.orderResult(orderBO); + if(!state) return; + // 同步订单状态 + String orderNo = order.getOrderNo(); + orderService.updateOrderSuccess(orderNo); + // 核销销售单据金额 + billService.writeOffAmount(order.getId()); + }catch (BusinessException e){ + logger.info("订单 : {} 业务异常信息 : {}",order.getOrderNo(),e.getCode()); + }catch (Exception e){ + logger.info("订单 : {} 系统异常信息 : {}",order.getOrderNo(),e.getMessage()); + }finally { + // 叠加查询次数 + orderService.superPayCount(order.getId()); + } } /** diff --git a/payment-base-app/src/main/java/com/base/springcloud/service/imp/RefundServiceImp.java b/payment-base-app/src/main/java/com/base/springcloud/service/imp/RefundServiceImp.java index 3dfb3e7..82f50b4 100644 --- a/payment-base-app/src/main/java/com/base/springcloud/service/imp/RefundServiceImp.java +++ b/payment-base-app/src/main/java/com/base/springcloud/service/imp/RefundServiceImp.java @@ -122,7 +122,7 @@ public class RefundServiceImp implements RefundService { }catch (Exception e){ logger.info("退款订单 : {} 系统异常信息 : {}",refundBO.getRefundNo(),e.getMessage()); }finally { - // 叠加查询次数 + // 叠加退款查询次数 superRefundCount(refundBO); } } @@ -175,7 +175,7 @@ public class RefundServiceImp implements RefundService { return; int count = refundMapper.superRefundCount(refundId); if(count < 1) - throw new BusinessException(ErrorConstant.SYNC_WEC_REFUND_STATE_FAIL); + throw new BusinessException(ErrorConstant.SUPER_REFUND_ORDER_COUNT_FAL); } } diff --git a/payment-base-app/src/main/resources/com/base/payment/mapper/OrderMapper.xml b/payment-base-app/src/main/resources/com/base/payment/mapper/OrderMapper.xml index 82bc4ff..f705345 100644 --- a/payment-base-app/src/main/resources/com/base/payment/mapper/OrderMapper.xml +++ b/payment-base-app/src/main/resources/com/base/payment/mapper/OrderMapper.xml @@ -164,7 +164,7 @@ from pay_order - order_state = 'W' + order_state = 'W' and retry_count < 6 and DATE_FORMAT(create_time,'%Y-%m-%d') = DATE_FORMAT(#{date},'%Y-%m-%d') order by time_stamp desc limit 10 diff --git a/payment-base-app/src/main/resources/com/base/payment/mapper/RefundMapper.xml b/payment-base-app/src/main/resources/com/base/payment/mapper/RefundMapper.xml index d0aeca2..0b5269d 100644 --- a/payment-base-app/src/main/resources/com/base/payment/mapper/RefundMapper.xml +++ b/payment-base-app/src/main/resources/com/base/payment/mapper/RefundMapper.xml @@ -181,7 +181,7 @@ from pay_refund - refund_state = '0' + refund_state = '0' and refund_retry_count < 6 and DATE_FORMAT(refund_time,'%Y-%m-%d') = DATE_FORMAT(#{date},'%Y-%m-%d') order by refund_time desc limit 10