Jelajahi Sumber

增加最大通道单量控制,增加两个慢充质量,增加附加费用控制,修改通道默认策略

stanley-king 3 tahun lalu
induk
melakukan
118d6376f5

+ 13 - 0
helper/refill/policy/chctl.php

@@ -495,6 +495,19 @@ class chctl
         $profits = array_merge($profits, $sleeps);
         usort($profits, $desc_profit);
 
+        $normals = [];
+        $overloads = [];
+        foreach ($profits as $item)
+        {
+            if($item->speed_overload()) {
+                $overloads[] = $item;
+            }
+            else {
+                $normals[] = $item;
+            }
+        }
+        $profits = array_merge($normals, $overloads);
+
         $feed_names = [];
         foreach ($feeds as $item) {
             $feed_names[] = $item->name();

+ 12 - 5
helper/refill/policy/lingzh/quality_ploy.php

@@ -8,6 +8,7 @@ class quality_ploy extends Quality
     {
         parent::__construct();
 
+        //2-6-24 //retry_timeout 用户没指定超时时间时,默认的超时时间.
         $this->mSpeeds = [
             self::Normal => ['retry_times' => 2,'retry_timeout' => 180,'per_secs' => 180],
             self::Quick => ['retry_times' => 2,'retry_timeout' => 60,'per_secs' => 30],
@@ -15,16 +16,21 @@ class quality_ploy extends Quality
             self::ThirdShop => ['retry_times' => 2,'retry_timeout' => 600,'per_secs' => 600],
             self::SlowTwentyFour => ['retry_times' => 1,'retry_timeout' => 86400,'per_secs' => 86400],
             self::SlowSix => ['retry_times' => 1,'retry_timeout' => 21600,'per_secs' => 21600],
-            self::SlowTwo => ['retry_times' => 2,'retry_timeout' => 3600,'per_secs' => 3600],
-
+            self::SlowTwo => ['retry_times' => 2,'retry_timeout' => 3600,'per_secs' => 7200],
+            self::SlowFourtyEight => ['retry_times' => 1, 'retry_timeout' => 7200, 'per_secs' => 172800 - 1800],
+            self::SlowSeventyTwo => ['retry_times' => 1, 'retry_timeout' => 7200, 'per_secs'  => 259200 - 1800],
 
             self::SlowNormal => ['retry_times' => 2,'retry_timeout' => 180,'per_secs' => 180],
             self::ThirdNormal => ['retry_times' => 2,'retry_timeout' => 180,'per_secs' => 180],
             self::DefSuccess => ['retry_times' => 2,'retry_timeout' => 60,'per_secs' => 30],
             self::NormalQuick => ['retry_times' => 65, 'retry_timeout' => 900, 'per_secs' => 60],
-            self::SlowSixNormal => ['retry_times' => 65, 'retry_timeout' => 21600 , 'per_secs' => 60]
+            self::SlowSixNormal => ['retry_times' => 65, 'retry_timeout' => 21600 , 'per_secs' => 60],
+
+            self::OilSN_NONE_HAS => ['retry_times' => 65, 'retry_timeout' => 1800, 'per_secs' => 180],
+            self::OilSN_HAS_NONE => ['retry_times' => 65, 'retry_timeout' => 1800, 'per_secs' => 180]
         ];
 
+        //增加组合通道的时候,注意增加时间控制
         $this->mQualities = [
             self::Normal => [self::Normal],
             self::Quick => [self::Quick],
@@ -33,7 +39,8 @@ class quality_ploy extends Quality
             self::SlowTwentyFour => [self::SlowTwentyFour],
             self::SlowSix => [self::SlowSix],
             self::SlowTwo => [self::SlowTwo],
-
+            self::SlowFourtyEight => [self::SlowFourtyEight],
+            self::SlowSeventyTwo => [self::SlowSeventyTwo],
 
             self::SlowNormal => [self::SlowTwo, self::Normal],
             self::ThirdNormal => [self::ThirdShop, self::Normal],
@@ -42,7 +49,7 @@ class quality_ploy extends Quality
             self::SlowSixNormal => [self::SlowSix, self::Normal],
 
             self::OilSN_NONE_HAS => [self::OilWithoutSN, self::OilWithSN],
-            self::OilSN_HAS_NONE => [self::OilWithSN,self::OilWithoutSN]
+            self::OilSN_HAS_NONE => [self::OilWithSN, self::OilWithoutSN]
         ];
     }
 }

+ 22 - 0
helper/refill/policy/merchant_price.php

@@ -6,6 +6,7 @@ use mtopcard;
 class merchant_price
 {
     private $mPrices;
+    private $mExtraPrices;
 
     public function __construct()
     {
@@ -15,6 +16,7 @@ class merchant_price
     public function load()
     {
         $this->mPrices = [];
+        $this->mExtraPrices = [];
 
         $i = 0;
         while (true)
@@ -30,6 +32,8 @@ class merchant_price
             {
                 $card_types = $item['card_types'];
                 $price = ncPriceFormat($item['price']);
+                $extra_price = ncPriceFormat($item['extra_price']);
+
                 $mchid = intval($item['mchid']);
                 $spec = intval($item['spec']);
                 $quality = intval($item['quality']);
@@ -38,6 +42,7 @@ class merchant_price
                 foreach ($types as $card_type) {
                     $key = "{$mchid}-{$quality}-{$card_type}-{$spec}";
                     $this->mPrices[$key] = $price;
+                    $this->mExtraPrices[$key] = $extra_price;
                 }
             }
         }
@@ -64,4 +69,21 @@ class merchant_price
             return false;
         }
     }
+
+    public function extra_price($mchid,$card_type,$spec,$quality,$pcode)
+    {
+        $card_type = intval($card_type);
+        if(in_array($card_type,[1,2,4,5,6])) //油,话费价格查找.
+        {
+            $key = "{$mchid}-{$quality}-{$card_type}-{$spec}";
+            if (array_key_exists($key, $this->mExtraPrices)) {
+                return $this->mExtraPrices[$key];
+            } else {
+                return false;
+            }
+        }
+        else {
+            return false;
+        }
+    }
 }

+ 7 - 3
helper/refill/policy/quaility.php

@@ -8,7 +8,6 @@ use mtopcard;
 class Quality
 {
     const LowestQuality  = 1;
-    const HighestQuality = 7;
 
     const Normal = 1;
     const Quick = 2;
@@ -17,6 +16,11 @@ class Quality
     const SlowTwentyFour = 5;
     const SlowSix = 6;
     const SlowTwo = 7;
+    const SlowFourtyEight = 8;
+    const SlowSeventyTwo = 9;
+
+    const HighestQuality = 9;
+
 
     const SlowNormal  = 11;  // 7 -> 1
     const ThirdNormal  = 12; // 4 -> 1
@@ -77,7 +81,7 @@ class Quality
                 }
             }
             else {
-                $org = self::ThirdNormal;
+                $org = self::Normal;
                 $qualities = $this->mQualities[$org];
             }
         }
@@ -138,7 +142,7 @@ class Quality
                 }
             }
             else {
-                $org = self::ThirdNormal;
+                $org = self::Normal; //如果没设置质量,默认为普通
                 $qualities = $this->mQualities[$org];
                 $time_out = $this->mSpeeds[$org]['retry_timeout'];
             }

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

@@ -85,6 +85,8 @@ class policy extends ProviderManager implements IPolicy
         if($price === false) {
             return [[],false];
         }
+        $extra_price = $this->mPrices->extra_price($mchid,$card_type,$spec,$quality,$pcode);
+        $extra_price = $extra_price == false ? 0.00 : $extra_price;
 
         global $config;
         $auto_find = $config['auto_find_channels'];
@@ -93,7 +95,7 @@ class policy extends ProviderManager implements IPolicy
         $qualities = [Quality::Normal];
         if($auto_find && in_array($card_type,$mobile_types) && in_array($quality,$qualities))
         {
-            $names = $this->mChannelControl->auto_match($names, $spec, $card_type, $quality, $price, time() - $order_time);
+            $names = $this->mChannelControl->auto_match($names, $spec, $card_type, $quality, $price - $extra_price, time() - $order_time);
             Log::record("policy::find_providers ChannelControl auto_match quality={$quality} spec={$spec} card_type={$card_type}  result=" . implode(',', $names), Log::DEBUG);
 
             $name_provider = [];

+ 10 - 5
helper/refill/policy/xyz/quality_ploy.php

@@ -8,7 +8,7 @@ class quality_ploy extends Quality
     {
         parent::__construct();
 
-        //2-6-24
+        //2-6-24 //retry_timeout 用户没指定超时时间时,默认的超时时间.
         $this->mSpeeds = [
             self::Normal => ['retry_times' => 60, 'retry_timeout' => 900, 'per_secs' => 180],
             self::Quick => ['retry_times' => 2, 'retry_timeout' => 60, 'per_secs' => 30],
@@ -17,13 +17,17 @@ class quality_ploy extends Quality
             self::SlowTwentyFour => ['retry_times' => 1, 'retry_timeout' => 86400, 'per_secs' => 86400],
             self::SlowSix => ['retry_times' => 1, 'retry_timeout' => 21600, 'per_secs' => 21600],
             self::SlowTwo => ['retry_times' => 1, 'retry_timeout' => 7200, 'per_secs' => 7200],
+            self::SlowFourtyEight => ['retry_times' => 1, 'retry_timeout' => 172800, 'per_secs' => 172800 - 1800],
+            self::SlowSeventyTwo => ['retry_times' => 1, 'retry_timeout' => 172800, 'per_secs'  => 259200 - 1800],
 
-
-            self::SlowNormal => ['retry_times' => 60, 'retry_timeout' => 900, 'per_secs' => 180],
+            self::SlowNormal => ['retry_times' => 60, 'retry_timeout' => 7200, 'per_secs' => 180],
             self::ThirdNormal => ['retry_times' => 60, 'retry_timeout' => 900, 'per_secs' => 180],
             self::DefSuccess => ['retry_times' => 65, 'retry_timeout' => 900, 'per_secs' => 180],
             self::NormalQuick => ['retry_times' => 65, 'retry_timeout' => 900, 'per_secs' => 180],
-            self::SlowSixNormal => ['retry_times' => 65, 'retry_timeout' => 21600 , 'per_secs' => 180]
+            self::SlowSixNormal => ['retry_times' => 65, 'retry_timeout' => 22500, 'per_secs' => 21600],
+
+            self::OilSN_NONE_HAS => ['retry_times' => 65, 'retry_timeout' => 1800, 'per_secs' => 180],
+            self::OilSN_HAS_NONE => ['retry_times' => 65, 'retry_timeout' => 1800, 'per_secs' => 180]
         ];
 
         //增加组合通道的时候,注意增加时间控制
@@ -35,7 +39,8 @@ class quality_ploy extends Quality
             self::SlowTwentyFour => [self::SlowTwentyFour],
             self::SlowSix => [self::SlowSix],
             self::SlowTwo => [self::SlowTwo],
-
+            self::SlowFourtyEight => [self::SlowFourtyEight],
+            self::SlowSeventyTwo => [self::SlowSeventyTwo],
 
             self::SlowNormal => [self::SlowTwo, self::Normal],
             self::ThirdNormal => [self::ThirdShop, self::Normal],