|
@@ -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()}"];
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|