Forráskód Böngészése

add mixed quality with one price

stanley-king 3 éve
szülő
commit
22f7300af2

+ 2 - 2
helper/refill/LZRefillFactory.php

@@ -17,6 +17,7 @@ require_once(BASE_HELPER_PATH . '/refill/policy/quaility.php');
 
 require_once(BASE_HELPER_PATH . '/refill/policy/merchant_price.php');
 require_once(BASE_HELPER_PATH . '/refill/policy/mgroup.php');
+require_once(BASE_HELPER_PATH . '/refill/policy/lingzh/PolicyUtil.php');
 require_once(BASE_HELPER_PATH . '/refill/policy/lingzh/quality_ploy.php');
 
 
@@ -47,8 +48,7 @@ class LZRefillFactory extends RefillBase
 
     private function __construct()
     {
-        parent::__construct();
-        $this->mPolicy = new policy();
+        parent::__construct(new policy());
 
         if (defined('SUPPORT_PTHREAD') && SUPPORT_PTHREAD === true) {
             Log::record("SUPPORT_PTHREAD defined dont call load",Log::DEBUG);

+ 18 - 6
helper/refill/RefillBase.php

@@ -26,8 +26,9 @@ class RefillBase
     protected $mPolicy;
 
     protected $mLimits = [];
-    protected function __construct()
+    protected function __construct($policy)
     {
+        $this->mPolicy = $policy;
     }
 
     public function allow($mchid,$card_type,$amount,$quality)
@@ -285,7 +286,7 @@ class RefillBase
         }
 
         Log::record("RefillBase::add regin_no={$regin_no}",Log::DEBUG);
-        [$providers, $overload] = $this->mPolicy->find_providers($mchid, $amount, $card_type, $quality, $regin_no, $pcode, $order_time, $commit_times);
+        [$providers, $overload] = $this->mPolicy->find_providers($mchid, $amount, $card_type, $org_quality, $quality, $regin_no, $pcode, $order_time, $commit_times);
 
         if (empty($providers))
         {
@@ -302,9 +303,16 @@ class RefillBase
             $notify_url = "";
         }
 
-        try {
+        try
+        {
             $minfo = new member_info($buyer_id);
-            $calc = new CalcMerchantPrice($mchid, $amount, $card_type,$quality,$this->mPolicy,$third_params);
+
+            if(PolicyUtil::mixed_quality($org_quality)) {
+                $calc = new CalcMerchantPrice($mchid, $amount, $card_type,$org_quality,$this->mPolicy,$third_params);
+            }
+            else {
+                $calc = new CalcMerchantPrice($mchid, $amount, $card_type,$quality,$this->mPolicy,$third_params);
+            }
             $mch_price = $calc->calc_vgoods_price([]);
             $mch_amount = $mch_price * $quantity;
         }
@@ -334,9 +342,13 @@ class RefillBase
             //通道价格大于客户价格,换通道.
             [$goods_id, $price] = $provider->goods($quality,$amount,$card_type,$third_params);
             if ($goods_id <= 0) continue;
-            if($org_quality != Quality::SlowSixNormal && $price > $mch_price) continue;
-            Log::record("start create order",Log::DEBUG);
 
+            if(util::mixed_quality($org_quality) == false && $price > $mch_price) {
+                //组合通道,以原始质量算价格.
+                continue;
+            }
+
+            Log::record("start create order",Log::DEBUG);
             $input['goods_id'] = $goods_id;
             $input['quantity'] = $quantity; //数量
             $input['buyer_phone'] = $minfo->mobile();

+ 2 - 2
helper/refill/XYZRefillFactory.php

@@ -18,6 +18,7 @@ require_once(BASE_HELPER_PATH . '/refill/policy/quaility.php');
 require_once(BASE_HELPER_PATH . '/refill/policy/merchant_price.php');
 require_once(BASE_HELPER_PATH . '/refill/policy/rlock.php');
 require_once(BASE_HELPER_PATH . '/refill/policy/rstorage.php');
+require_once(BASE_HELPER_PATH . '/refill/policy/lingzh/PolicyUtil.php');
 require_once(BASE_HELPER_PATH . '/refill/policy/xyz/quality_ploy.php');
 require_once(BASE_HELPER_PATH . '/refill/policy/mgroup.php');
 
@@ -49,8 +50,7 @@ class XYZRefillFactory extends RefillBase
 
     private function __construct()
     {
-        parent::__construct();
-        $this->mPolicy = new policy();
+        parent::__construct(new policy());
 
         if (defined('SUPPORT_PTHREAD') && SUPPORT_PTHREAD === true) {
             Log::record("SUPPORT_PTHREAD defined dont call load",Log::DEBUG);

+ 1 - 1
helper/refill/policy/IPolicy.php

@@ -9,7 +9,7 @@ interface IPolicy
     //[orgian_quality,current_quality]
     public function find_quality($mchid, $spec, $card_type, $quality, $times, $used_time, $pcode, $regin_no): array;
 
-    public function find_providers(int $mchid, int $spec, int $card_type, int $quality, $regin_no, $pcode, $order_time, $commit_times): array;
+    public function find_providers(int $mchid, int $spec, int $card_type, int $org_quality, int $quality, $regin_no, $pcode, $order_time, $commit_times): array;
 
     public function allow($mchid, $card_type, $amount, $quality): bool;
 

+ 15 - 0
helper/refill/policy/lingzh/PolicyUtil.php

@@ -0,0 +1,15 @@
+<?php
+
+namespace refill;
+
+class PolicyUtil
+{
+    public static function mixed_quality($quality) : bool
+    {
+        if($quality == Quality::DefSuccess || $quality == Quality::NormalQuick) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+}

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

@@ -34,7 +34,7 @@ class policy extends ProviderManager implements IPolicy
         $this->mGroupCtl->load();
     }
 
-    public function find_providers(int $mchid, int $spec, int $card_type, int $quality, $regin_no, $pcode, $order_time, $commit_times): array
+    public function find_providers(int $mchid, int $spec, int $card_type, int $org_quality, int $quality, $regin_no, $pcode, $order_time, $commit_times): array
     {
         $providers = parent::get_providers($mchid,$spec,$card_type,$quality,$regin_no);
 

+ 15 - 0
helper/refill/policy/xyz/PolicyUtil.php

@@ -0,0 +1,15 @@
+<?php
+
+namespace refill;
+
+class PolicyUtil
+{
+    public static function mixed_quality($quality) : bool
+    {
+        if($quality == Quality::DefSuccess || $quality == Quality::NormalQuick) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+}

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

@@ -45,7 +45,7 @@ class policy extends ProviderManager implements IPolicy
         $this->mGroupCtl->load();
     }
 
-    public function find_providers(int $mchid, int $spec, int $card_type, int $quality, $regin_no, $pcode, $order_time, $commit_times): array
+    public function find_providers(int $mchid, int $spec, int $card_type, int $org_quality, int $quality, $regin_no, $pcode, $order_time, $commit_times): array
     {
         $providers = parent::get_providers($mchid,$spec,$card_type,$quality,$regin_no);
 
@@ -81,11 +81,18 @@ class policy extends ProviderManager implements IPolicy
         }
         Log::record("GroupControl result=" . implode(',',$names),Log::DEBUG);
 
-        $price = $this->mPrices->price($mchid,$card_type,$spec,$quality,$pcode);
+        if(PolicyUtil::mixed_quality($org_quality)) {
+            $fQuality = $org_quality;
+        }
+        else {
+            $fQuality = $quality;
+        }
+
+        $price = $this->mPrices->price($mchid,$card_type,$spec,$fQuality,$pcode);
         if($price === false) {
             return [[],false];
         }
-        $extra_price = $this->mPrices->extra_price($mchid,$card_type,$spec,$quality,$pcode);
+        $extra_price = $this->mPrices->extra_price($mchid,$card_type,$spec,$fQuality,$pcode);
         $extra_price = $extra_price == false ? 0.00 : $extra_price;
 
         global $config;

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

@@ -11,8 +11,10 @@ class quality_ploy extends Quality
         //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],
-            self::CardKey => ['retry_times' => 1, 'retry_timeout' => 120, 'per_secs' => 60],
+
+            self::Quick => ['retry_times' => 2, 'retry_timeout' => 60, 'per_secs' => 80],
+            self::CardKey => ['retry_times' => 1, 'retry_timeout' => 120, 'per_secs' => 80],
+
             self::ThirdShop => ['retry_times' => 1, 'retry_timeout' => 900, '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],
@@ -22,8 +24,10 @@ class quality_ploy extends Quality
 
             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::DefSuccess  => ['retry_times' => 65, 'retry_timeout' => 600, 'per_secs' => 180],
+            self::NormalQuick => ['retry_times' => 65, 'retry_timeout'  => 600, '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],
@@ -49,7 +53,7 @@ class quality_ploy extends Quality
 
             self::SlowNormal => [self::SlowTwo, self::Normal],
             self::ThirdNormal => [self::ThirdShop, self::Normal],
-            self::DefSuccess => [self::ThirdShop, self::Normal, self::CardKey, self::Quick],
+            self::DefSuccess => [self::Normal, self::CardKey, self::Quick],
             self::NormalQuick => [self::Normal, self::Quick],
             self::SlowSixNormal => [self::SlowSix, self::Normal],