Parcourir la source

增加预回调失败订单重试

stanley-king il y a 2 ans
Parent
commit
113d8af680
2 fichiers modifiés avec 53 ajouts et 2 suppressions
  1. 8 2
      admin/control/refill_order_manual.php
  2. 45 0
      helper/refill/util.php

+ 8 - 2
admin/control/refill_order_manual.php

@@ -492,18 +492,24 @@ class refill_order_manualControl extends SystemControl
         $condition['refill_order.order_id'] = ['in',$order_ids];
 
         $order_list = Model('refill_order')->getMerchantOrderList($condition,1000,0,'refill_order.mchid,refill_order.mch_order');
-        foreach ($order_list as $order) {
+        foreach ($order_list as $order)
+        {
             $mchid = $order['mchid'];
             $mch_order = $order['mch_order'];
+            $order_id = $order['refill_order.order_id'];
+
             if ($type === 'set_next_order') {
                 refill\util::set_next_order($mchid, $mch_order);
                 $this->log("预回调订单转快充,订单号:{$order['order_sn']},商家单号:{$mch_order},机构编码:{$mchid}");
-            } elseif ($type === 'cancel_order_retry'){
+            }
+            elseif ($type === 'cancel_order_retry') {
+                refill\util::retry_canceled_order($order_id);
                 $this->log("预回调订单失败补快充,订单号:{$order['order_sn']},商家单号:{$mch_order},机构编码:{$mchid}");
             } else {
                 continue;
             }
         }
+
         showMessage('操作成功');
     }
 

+ 45 - 0
helper/refill/util.php

@@ -13,6 +13,7 @@ use Exception;
 use Cache;
 use QueueClient;
 use refill;
+use trans_wapper;
 
 class util
 {
@@ -737,4 +738,48 @@ class util
             Log::record("resp = {$resp}",Log::DEBUG);
         });
     }
+
+    public static function retry_canceled_order($order_id)
+    {
+        $mod_order = Model('vr_order');
+        $mod_refill = Model('refill_order');
+
+        $order_info = $mod_order->getOrderInfo(['order_id' => $order_id]);
+        $refill_info = $mod_refill->getOrderInfo(['order_id' => $order_id,'inner_status' => 0]);
+
+        if(empty($refill_info) || empty($order_info)) {
+            return [false,'无此订单或者订单已经重试中了...'];
+        }
+
+        $tran = new trans_wapper($mod_order,'notify change order state trans');
+
+        try
+        {
+            $order_info = $mod_order->getOrderInfo(['order_id' => $order_id], '*', true, true);
+            $refill_info = $mod_refill->getOrderInfo(['order_id' => $order_id, 'inner_status' => 0], '*', true, true);
+
+            $order_state = intval($order_info['order_state']);
+            if(empty($refill_info) || $refill_info['is_retrying'] == 1 || $order_state != ORDER_STATE_CANCEL) {
+                $tran->commit();
+                return [false,'订单已经在重试'];
+            }
+
+            $mod_refill->edit($order_id, ['is_retrying' => 1]);
+            $tran->commit();
+
+            $order = refill\order::from_db($refill_info,$order_info);
+            $params = $order->queue_params();
+
+            if(util::push_add($params)) {
+                return [true,''];
+            } else {
+                return [false,'加入队列出错'];
+            }
+        }
+        catch (Exception $ex) {
+            $tran->rollback();
+            Log::record($ex->getMessage(),Log::ERR);
+            return [false,"{$ex->getMessage()}"];
+        }
+    }
 }