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