Преглед на файлове

UPDATE:同步支付状态

ct преди 1 ден
родител
ревизия
1e6b75eb57

+ 8 - 0
fs-common/src/main/java/com/fs/common/utils/DateUtils.java

@@ -276,6 +276,14 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
         cal.add(Calendar.DATE, days);
         return new SimpleDateFormat("yyyy-MM-dd").format(cal.getTime());
     }
+    public static Date addDateDay(int days) {
+        return Date.from(
+                LocalDate.now()
+                        .plusDays(days)
+                        .atStartOfDay(ZoneId.systemDefault())
+                        .toInstant()
+        );
+    }
     /**
      * 获取到当天时间的开始:当天0时0分0秒0毫秒
      * @return

+ 23 - 18
fs-service/src/main/java/com/fs/his/service/impl/FsStorePaymentServiceImpl.java

@@ -1774,34 +1774,39 @@ public class FsStorePaymentServiceImpl implements IFsStorePaymentService {
             for (FsStorePayment fsStorePayment : list) {
                 CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {
                     try {
-                        updateFsStorePaymentByDecryptForm(fsStorePayment.getPaymentId(),null);
-                        //查询是否改为已支付
-                        FsStorePayment finalPayment = fsStorePaymentMapper.selectFsStorePaymentByPaymentId(fsStorePayment.getPaymentId());
-                        try {
-                            Date createTime = finalPayment.getCreateTime();
-                            Date now = new Date();
-                            long value = now.getTime() - createTime.getTime();
-                            if(finalPayment.getStatus() == 0
-                                    && finalPayment.getBusinessType() == 3
-                                    && (value > TWENTY_DAYS_IN_MILLIS)
-                                    && finalPayment.getBusinessId() != null){
-                                //套餐包超过20天取消订单
-                                FsPackageOrderCancelParam param = new FsPackageOrderCancelParam();
-                                param.setOrderId(Long.valueOf(finalPayment.getBusinessId()));
-                                packageOrderService.cancel(param);
+                        //查询订单是否是20天前且已取消的订单
+                        if (fsStorePayment.getCreateTime().before(DateUtils.addDateDay(-20))) {
+                            logger.info("定时任务:同步支付状态在20天前,取消同步,payment_id:{}",fsStorePayment.getPaymentId());
+                        } else {
+                            updateFsStorePaymentByDecryptForm(fsStorePayment.getPaymentId(),null);
+                            //查询是否改为已支付
+                            FsStorePayment finalPayment = fsStorePaymentMapper.selectFsStorePaymentByPaymentId(fsStorePayment.getPaymentId());
+                            try {
+                                Date createTime = finalPayment.getCreateTime();
+                                Date now = new Date();
+                                long value = now.getTime() - createTime.getTime();
+                                if(finalPayment.getStatus() == 0
+                                        && finalPayment.getBusinessType() == 3
+                                        && (value > TWENTY_DAYS_IN_MILLIS)
+                                        && finalPayment.getBusinessId() != null){
+                                    //套餐包超过20天取消订单
+                                    FsPackageOrderCancelParam param = new FsPackageOrderCancelParam();
+                                    param.setOrderId(Long.valueOf(finalPayment.getBusinessId()));
+                                    packageOrderService.cancel(param);
+                                }
+                            } catch (NumberFormatException e) {
+                                logger.info("定时任务:同步支付状态超时取消订单失败,payment_id:{}",fsStorePayment.getPaymentId());
                             }
-                        } catch (NumberFormatException e) {
-                            logger.info("定时任务:同步支付状态超时取消订单失败,payment_id:{}",fsStorePayment.getPaymentId());
                         }
                     } catch (Exception e) {
                         //添加失败记录
                         FsStorePaymentError fsStorePaymentError = new FsStorePaymentError();
                         fsStorePaymentError.setOrderFlowNo(fsStorePayment.getTradeNo());
-                        String businessId = fsStorePayment.getBusinessId();
                         fsStorePaymentError.setBusinessType(fsStorePayment.getBusinessType());
                         fsStorePaymentError.setMsg(e.getMessage());
                         fsStorePaymentError.setStatus(0);
                         fsStorePaymentError.setCreateTime(new Date());
+                        String businessId = fsStorePayment.getBusinessId();
                         if (businessId != null && fsStorePayment.getBusinessType() == 3) {
                             fsStorePaymentError.setOrderId(Long.valueOf(businessId));
                             FsPackageOrder fsPackageOrder = packageOrderService.selectFsPackageOrderByOrderId(Long.valueOf(businessId));