瀏覽代碼

modify ratio_phone_quality function

stanley-king 2 年之前
父節點
當前提交
1c485282bb
共有 1 個文件被更改,包括 46 次插入19 次删除
  1. 46 19
      helper/refill/policy/quaility.php

+ 46 - 19
helper/refill/policy/quaility.php

@@ -214,7 +214,8 @@ class Quality
             return [$all_qualities, true];
         }
 
-        $times_checker = function ($match_ratio, $qualities, $used_times) use ($cur_quality, $max_times, $mchid)
+
+        $times_checker = function ($cur_quality_match_ratio, $qualities, $used_times) use ($cur_quality, $mchid)
         {
             $result = [];
             $pre_times = 0;
@@ -224,7 +225,6 @@ class Quality
 
             foreach ($qualities as $quality)
             {
-                $qtimes = $this->mRatioCtl->times($mchid, $quality);
                 if($compare == false)
                 {
                     if($quality == $cur_quality) {
@@ -232,6 +232,7 @@ class Quality
                     }
                 }
 
+                $qtimes = $this->mRatioCtl->times($mchid, $quality);
                 if ($qtimes == false) {
                     continue;
                 } else {
@@ -239,7 +240,8 @@ class Quality
                 }
 
                 if($compare == false) continue;
-                if ($match_ratio) {
+
+                if ($cur_quality_match_ratio) {
                     $result[] = $quality;
                 } elseif ($used_times < $pre_times) {
                     $result[] = $quality;
@@ -325,30 +327,55 @@ class Quality
             return true;
         };
 
-        if($used_times > 0)
+        $qualities_log = function ($tag,$qualities)
         {
-            $times_qualities = $times_checker(true, $all_qualities, $used_times);
-            $time_qualities = $timeout_checker(true, $all_qualities, $left_time);
-            $pre_qualities = array_intersect($times_qualities, $time_qualities, $all_qualities);
-
-            if (count($pre_qualities) < count($all_qualities)) {
-                $match_ratio = $this->mRatioCtl->ratio_match($mchid, $org_quality, $card_type, $spec, $all_qualities);
-                Log::record("mchid={$mchid} must calc next quality match_ratio={$match_ratio}",Log::DEBUG);
-            } else {
-                $match_ratio = true;
-            }
+            $str = implode(',',$qualities);
+            Log::record("{$tag}={$str}", Log::DEBUG);
+        };
 
-            if (!$match_ratio) {
-                $times_qualities = $times_checker(false, $all_qualities, $used_times);
-                $time_qualities  = $timeout_checker(false, $all_qualities, $left_time);
-                $pre_qualities = array_intersect($times_qualities, $time_qualities, $all_qualities);
-            }
+        if($used_times > 0)
+        {
+            $qualities_log("{$mchid}-{$card_type}-{$spec} all_qualities",$all_qualities);
+            $match_ratio = $this->mRatioCtl->ratio_match($mchid, $org_quality, $card_type, $spec, $all_qualities);
+            Log::record("mchid={$mchid} must calc next quality match_ratio={$match_ratio}",Log::DEBUG);
+
+            $times_qualities = $times_checker($match_ratio, $all_qualities, $used_times);
+            $qualities_log("{$mchid}-{$card_type}-{$spec} times_qualities",$times_qualities);
+
+            $timeout_qualities = $timeout_checker($match_ratio, $all_qualities, $left_time);
+            $qualities_log("{$mchid}-{$card_type}-{$spec} timeout_qualities",$timeout_qualities);
+
+            $pre_qualities = array_intersect($times_qualities, $timeout_qualities, $all_qualities);
+            $qualities_log("{$mchid}-{$card_type}-{$spec} pre_qualities",$pre_qualities);
+
+
+
+//            $times_qualities = $times_checker(true, $all_qualities, $used_times);
+//            $time_qualities = $timeout_checker(true, $all_qualities, $left_time);
+//            $pre_qualities = array_intersect($times_qualities, $time_qualities, $all_qualities);
+//
+//            if (count($pre_qualities) < count($all_qualities)) {
+//                $match_ratio = $this->mRatioCtl->ratio_match($mchid, $org_quality, $card_type, $spec, $all_qualities);
+//                Log::record("mchid={$mchid} must calc next quality match_ratio={$match_ratio}",Log::DEBUG);
+//            } else {
+//                $match_ratio = true;
+//            }
+//
+//            if (!$match_ratio) {
+//                $times_qualities = $times_checker(false, $all_qualities, $used_times);
+//                $time_qualities  = $timeout_checker(false, $all_qualities, $left_time);
+//                $pre_qualities = array_intersect($times_qualities, $time_qualities, $all_qualities);
+//
+//                Log::record("calc_quality timeing_checker result is empty", Log::DEBUG);
+//
+//            }
 
             if(!$timeing_checker($pre_qualities)) {
                 $pre_qualities = [];
                 Log::record("calc_quality timeing_checker result is empty", Log::DEBUG);
             }
 
+            $qualities_log("{$mchid}-{$card_type}-{$spec} after timeing_checker qualities",$pre_qualities);
             $cur_qualities = $pre_qualities;
         }
         else {