瀏覽代碼

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

xiaoyu 3 年之前
父節點
當前提交
e5e1d7e5e4
共有 4 個文件被更改,包括 34 次插入12 次删除
  1. 3 9
      helper/refill/RefillBase.php
  2. 15 1
      helper/refill/policy/lingzh/policy.php
  3. 15 1
      helper/refill/policy/xyz/policy.php
  4. 1 1
      rdispatcher/proxy.php

+ 3 - 9
helper/refill/RefillBase.php

@@ -288,15 +288,9 @@ class RefillBase
         $chfilters = new channel_filter($mchid,$mch_order,$quality,$card_type);
         $providers = $chfilters->getProviders($providers);
 
-        if (empty($providers))
-        {
-            Log::record("canot find any providers",Log::DEBUG);
-            if($overload) {
-                return [errcode::PROVIDER_OVERLOAD, "匹配不到合适的充值通道",$last_orderid,false,0];
-            }
-            else {
-                return [errcode::CANNOT_MATCH_PROVIDER, "匹配不到合适的充值通道",$last_orderid,false,0];
-            }
+        if (empty($providers)) {
+            Log::record("canot find any providers", Log::DEBUG);
+            return [errcode::CANNOT_MATCH_PROVIDER, "匹配不到合适的充值通道", $last_orderid, false, 0];
         }
 
         if (empty($notify_url)) {

+ 15 - 1
helper/refill/policy/lingzh/policy.php

@@ -138,6 +138,15 @@ class policy extends ProviderManager implements IPolicy
             return [$org_quality,0];
         }
 
+        $namer = function ($providers)
+        {
+            $result = [];
+            foreach ($providers as $provider) {
+                $result[] = $provider->name();
+            }
+            return $result;
+        };
+
         foreach ($qualities as $quality)
         {
             $price = $this->mPrices->price($mchid,$card_type,$spec,$quality,$pcode);
@@ -147,7 +156,12 @@ class policy extends ProviderManager implements IPolicy
             }
 
             $providers = parent::get_providers($mchid, $spec, $card_type, $quality, $regin_no);
-            if (!empty($providers)) {
+            if(empty($providers)) continue;
+
+            $names = $namer($providers);
+            $names_overload = $this->mChannelControl->match($names, $spec, $card_type, $quality);
+
+            if (!empty($names_overload)) {
                 return [$org_quality, $quality];
             } else {
                 Log::record("Policy::find_quality:{$quality}-{$spec}-{$card_type} is fail", Log::DEBUG);

+ 15 - 1
helper/refill/policy/xyz/policy.php

@@ -174,6 +174,15 @@ class policy extends ProviderManager implements IPolicy
             return [$org_quality,0];
         }
 
+        $namer = function ($providers)
+        {
+            $result = [];
+            foreach ($providers as $provider) {
+                $result[] = $provider->name();
+            }
+            return $result;
+        };
+
         foreach ($qualities as $quality)
         {
             $price = $this->mPrices->price($mchid,$card_type,$spec,$quality,$pcode);
@@ -183,7 +192,12 @@ class policy extends ProviderManager implements IPolicy
             }
 
             $providers = parent::get_providers($mchid, $spec, $card_type, $quality, $regin_no);
-            if (!empty($providers)) {
+            if(empty($providers)) continue;
+
+            $names = $namer($providers);
+            $names_overload = $this->mChannelControl->match($names, $spec, $card_type, $quality);
+
+            if (!empty($names_overload)) {
                 return [$org_quality, $quality];
             } else {
                 Log::record("Policy::find_quality:{$quality}-{$spec}-{$card_type} is fail", Log::DEBUG);

+ 1 - 1
rdispatcher/proxy.php

@@ -82,7 +82,7 @@ class proxy
                 $fNotify = false;
                 QueueClient::async_push("QueryOrderNeterr",['order_id' => $order_id],5);
             }
-            elseif(($errcode === refill\errcode::MERCHANT_REFILL_ERROR && $neterr) || $errcode == refill\errcode::PROVIDER_OVERLOAD || $errcode == errcode::MERCHANT_PRICE_UNSETTING)
+            elseif(($errcode === refill\errcode::MERCHANT_REFILL_ERROR && $neterr) || $errcode == errcode::MERCHANT_PRICE_UNSETTING)
             {
                 [$org_quality,$quality] = refill\RefillFactory::instance()->find_quality($mchid,$amount,$card_type,$org_quality,$cur_quality,$commit_times,time() - $order_time,'',$regin_no);
                 if ($quality > 0)