Procházet zdrojové kódy

Merge branch 'ralbex' of 39.97.239.116:gyfl/xyzshop into ralbex

xiaoyu před 3 roky
rodič
revize
0d594259f0

+ 2 - 2
data/config/xyz/refill.ini.php

@@ -2344,5 +2344,5 @@ $third_providers = [
 $config['third_providers'] = $third_providers;
 
 $config['auto_find_channels'] = true;
-
-$config['cancel_retry_time'] = [10120 => ["9:00",'10:00','11:00']];
+$config['cancel_retry_time'] = [10120 => ["9:00",'10:00','11:00']];
+$config['merchant_retry_times'] = [10202 => [ 1 => 1000]];

+ 2 - 1
data/config/xyzadm/refill.ini.php

@@ -2345,4 +2345,5 @@ $config['third_providers'] = $third_providers;
 
 $config['auto_find_channels'] = true;
 
-$config['cancel_retry_time'] = [10120 => ["9:00",'10:00','11:00']];
+$config['cancel_retry_time'] = [10120 => ["9:00",'10:00','11:00']];
+$config['merchant_retry_times'] = [10202 => [ 1 => 1000]];

+ 14 - 1
helper/refill/policy/quaility.php

@@ -168,13 +168,26 @@ class Quality
             $time_out = $this->mSpeeds[$org_quality]['retry_timeout'];
         }
 
-        $max_times = $this->mSpeeds[$org_quality]['retry_times'];
+        $max_times = $this->max_times($mchid,$org_quality);
         $fMixed = PolicyUtil::mixed_quality($org_quality);
+
         $qualities = $this->calc_phone_quality($qualities,$fMixed,$cur_quality,$times,$used_time,$time_out,$max_times,$mchid);
 
         return [$org_quality,$qualities];
     }
 
+    private function max_times($mchid,$quality)
+    {
+        global $config;
+        $mtimes = $config['merchant_retry_times'];
+        if(array_key_exists($mchid,$mtimes) && array_key_exists($quality,$mtimes[$mchid])) {
+            return $mtimes[$mchid][$quality];
+        }
+        else {
+            return $this->mSpeeds[$quality]['retry_times'];
+        }
+    }
+
     //通过每种类型通道耗时,倒推当前可用通道,并优先走推荐通道.
     private function calc_phone_quality($qualities,$fMixed, $cur_quality, $times, $used_time, $time_out, $max_times, $mchid)
     {

+ 27 - 0
rdispatcher/proxy.php

@@ -43,6 +43,7 @@ class proxy
         refill\util::push_queue_order($mchid,$mch_order,ORDER_STATE_SEND);
         Model('refill_order')->edit_detail($mchid,$mch_order,['order_state' => ORDER_STATE_SEND]);
 
+
         $first_comit = false;
         if($card_type == 0)
         {
@@ -56,6 +57,22 @@ class proxy
         }
 
         [$org_quality,$quality] = refill\RefillFactory::instance()->find_quality($mchid,$amount,$card_type,$org_quality,$cur_quality,$commit_times,time() - $order_time,'',$regin_no);
+        if($this->canceled($mchid,$mch_order))
+        {
+            if ($last_order_id === 0)
+            {
+                $order_id = refill\RefillFactory::instance()->zero_order($mchid, $buyer_id, $amount, $card_no,
+                    $mch_order, $idcard, $card_name, $notify_url, $quality, $org_quality, $order_time, $commit_times, '订单被拦截');
+            }
+            else {
+                $refill_order->edit($last_order_id, ['notify_time' => time(), 'notify_state' => 1,'is_retrying' => 0]);
+            }
+
+            refill\util::pop_queue_order($mchid,$mch_order);
+            QueueClient::push("NotifyMerchantComplete", ['order_id' => $order_id,'manual' => false]);
+            return;
+        }
+
         if($first_comit) {
             refill\util::incr_user_commit($mchid,$card_type,$amount,$org_quality);
         }
@@ -125,6 +142,16 @@ class proxy
         }
     }
 
+    private function canceled($mchid,$mch_order)
+    {
+        $order_state = refill\util::query_cancel_order($mchid,$mch_order);
+        if($order_state == 1) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
     public function add_zero($params)
     {
         $mchid = $params['mchid'];