瀏覽代碼

add match ratio for transfer

stanley-king 2 年之前
父節點
當前提交
8b436c8648
共有 4 個文件被更改,包括 27 次插入10 次删除
  1. 13 1
      helper/refill/order.php
  2. 9 8
      helper/refill/policy/quaility.php
  3. 3 1
      helper/refill/policy/xyz/policy.php
  4. 2 0
      rdispatcher/proxy.php

+ 13 - 1
helper/refill/order.php

@@ -27,6 +27,7 @@ class order
     private $mBlack = 0;
     private $mIsValidate;
     private $mFirstCommit;
+    private $mMatchRatio;
 
     private $mProductCode;
     private $mQuantity;
@@ -38,6 +39,7 @@ class order
     {
         $this->mProductCode = '';
         $this->mThirdPorductType = 0;
+        $this->mMatchRatio = false;
     }
 
     public function mchid() {
@@ -58,6 +60,14 @@ class order
     public function first_commit() {
         return $this->mFirstCommit;
     }
+
+    public function set_match($match) {
+        $this->mMatchRatio = $match;
+    }
+    public function match() {
+        return $this->mMatchRatio;
+    }
+
     public function spec() {
         return $this->mAmount;
     }
@@ -193,6 +203,7 @@ class order
         $this->mLastOrderID = $params['order_id'] ?? 0;
         $this->mQuantity   = $params['quantity'] ?? 1;
         $this->mOriginQuality = intval($params['org_quality']) ?? 0;
+        $this->mMatchRatio = $params['match_ratio'] ?? false;
 
         $card_type = intval($params['card_type']) ?? 0;
         if($card_type == 7) {
@@ -339,7 +350,8 @@ class order
             'is_transfer' => $this->mIsTransfer ? 1 : 0,
             'cardno_state' => $this->mCardState,
             'order_id' => $this->mLastOrderID,
-            'is_validate' => $this->mIsValidate];
+            'is_validate' => $this->mIsValidate,
+            'match_ratio' => $this->mMatchRatio];
 
         return $params;
     }

+ 9 - 8
helper/refill/policy/quaility.php

@@ -87,10 +87,11 @@ class Quality
             return $this->mobile_quality($mchid, $card_type, $spec, $org_quality, $cur_quality, $times, $used_time);
         }
         elseif($card_type == mtopcard\PetroChinaCard || $card_type == mtopcard\SinopecCard) {
-            return $this->oil_quality($mchid, $org_quality, $times,$used_time,$caller);
+            [$org,$qualities] = $this->oil_quality($mchid, $org_quality, $times,$used_time,$caller);
+            return [$org,$qualities,false];
         }
         else {
-            return [0, []];
+            return [0, [],false];
         }
     }
 
@@ -180,7 +181,7 @@ class Quality
         }
         else {
             Log::record("find_quality: cannot find any quality",Log::DEBUG);
-            return [0,[]];
+            return [0,[],false];
         }
 
         if($time_out <= 0) {
@@ -191,12 +192,12 @@ class Quality
         $max_times = $this->max_times($mchid,$org_quality,$qualities);
         if ($this->mRatioCtl->exist($mchid)) {
             Log::record("ratio_phone_quality exist=true",Log::DEBUG);
-            $qualities = $this->ratio_phone_quality($org_quality, $qualities, $cur_quality, $times, $used_time, $mchid, $card_type, $spec);
-            return [$org_quality, $qualities];
+            [$qualities,$match_ratio] = $this->ratio_phone_quality($org_quality, $qualities, $cur_quality, $times, $used_time, $mchid, $card_type, $spec);
+            return [$org_quality, $qualities,$match_ratio];
         } else {
             $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];
+            return [$org_quality, $qualities,false];
         }
     }
 
@@ -207,7 +208,7 @@ class Quality
         $left_time = $time_out - $used_time;
         Log::record("left_time = {$left_time} used_time={$used_time}",Log::DEBUG);
         if ($left_time <= 0 || $max_times <= $times) {
-            return [];
+            return [[],false];
         }
 
         $match_ratio = $this->mRatioCtl->ratio_match($mchid, $org_quality, $cur_quality, $card_type, $spec, $qualities);
@@ -344,7 +345,7 @@ class Quality
             }
         }
 
-        return $qualities;
+        return [$qualities,$match_ratio];
 
     }
 

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

@@ -369,7 +369,9 @@ class policy extends ProviderManager implements IPolicy
             $caller = null;
         }
 
-        [$org_quality, $qualities] = $this->mQuality->find_quality($mchid, $card_type, $spec, $org_quality, $cur_quality, $commit_times, $elapse_secs, $caller);
+        [$org_quality, $qualities,$match] = $this->mQuality->find_quality($mchid, $card_type, $spec, $org_quality, $cur_quality, $commit_times, $elapse_secs, $caller);
+        $order->set_match($match);
+
         if(empty($qualities)) {
             return [$org_quality,0];
         }

+ 2 - 0
rdispatcher/proxy.php

@@ -29,6 +29,8 @@ class proxy
 
     private function need_transfer(refill\order $order)
     {
+        if($order->match()) return false;
+
         $order_time = $order->order_time();
         $mchid = $order->mchid();
         $card_type = $order->card_type();