stanley-king 1 rok temu
rodzic
commit
eec313d5cb

+ 1 - 2
helper/refill/policy/channel_filter.php

@@ -9,7 +9,6 @@ class channel_filter
     private $mMchOrder;
     private $mQuality;
     private $mCardType;
-
     private $mDatas;
 
     public function __construct($mchid, $mch_order, $card_type)
@@ -105,7 +104,7 @@ class channel_filter
             $used_time = 0;
 
             foreach ($items as $item) {
-                $times += $item['succ'] + $item['fail'];
+                $times += $item['succ'];
                 $used_time += $item['used'];
             }
 

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

@@ -258,7 +258,7 @@ class Quality
             return [$all_qualities, true];
         }
 
-        $times_checker = function ($cur_quality_match_ratio, $qualities, $used_times) use ($cur_quality, $mchid, $ch_filter)
+        $times_checker = function ($qualities) use ($cur_quality, $mchid, $ch_filter)
         {
             $result = [];
             $pre_times = 0;
@@ -275,20 +275,18 @@ class Quality
                     }
                 }
 
-                $qtimes = $this->mRatioCtl->times($mchid, $quality);
-                [$times,$used_time] = $ch_filter->total($cur_quality);
+                $qua_times = $this->mRatioCtl->times($mchid, $quality);
+                [$cur_times,$used_time] = $ch_filter->total($cur_quality);
 
-                if ($qtimes == false) {
+                if ($qua_times == false) {
                     continue;
                 } else {
-                    $pre_times += $qtimes;
+                    $pre_times += $qua_times;
                 }
 
                 if($compare == false) continue;
 
-                if ($cur_quality_match_ratio) {
-                    $result[] = $quality;
-                } elseif ($used_times < $pre_times) {
+                if ($cur_times < $qua_times) {
                     $result[] = $quality;
                 }
             }
@@ -296,6 +294,57 @@ class Quality
             return $result;
         };
 
+        $calc_pertime = function ($per_secs, $cur_times, $cur_usedtime)
+        {
+
+        };
+
+        $time_checker = function ($qualities,$left_time) use ($cur_quality, $mchid, $ch_filter, $used_time)
+        {
+
+            $compare = $cur_quality > 0 ? false : true;
+
+            foreach ($qualities as $quality)
+            {
+                if($compare == false)
+                {
+                    if($quality == $cur_quality) {
+                        $compare = true;
+                    }
+                }
+
+                $per_secs = $this->mSpeeds[$quality]['per_secs'];
+                $qua_secs = $this->mRatioCtl->seconds($mchid, $quality);
+                [$cur_times,$cur_usedtime] = $ch_filter->total($cur_quality);
+
+                if ($qua_secs == false) continue;
+
+                if($cur_times === 0 or $cur_usedtime) {
+
+                }
+
+                Log::record("left_time=$left_time quality=$quality secs=$qua_secs", Log::DEBUG);
+
+
+                if ($left_time - $qsecs > 0) {
+                    //时间满足该质量配置
+                    $left_time -= $qsecs;
+                    $result[] = $quality;
+                } elseif ($left_time - $per_secs > 0) {
+                    //时间够跑一次,不能再找其它质量
+                    $result[] = $quality;
+                    break;
+                } else {
+                    //时间完全不够跑一次
+                    break;
+                }
+
+                if ($quality == $cur_quality) {
+                    break;
+                }
+            }
+        };
+
         $timeout_checker = function ($match_ratio, $qualities, $left_time) use ($cur_quality, $mchid)
         {
             if($match_ratio)
@@ -385,7 +434,8 @@ class Quality
             [$match_ratio, $can_last] = $this->mRatioCtl->ratio_match($mchid, $org_quality, $card_type, $spec, $all_qualities);
             Log::record("ratio_phone_quality mchid=$mchid must calc next quality match_ratio=$match_ratio can_last=$can_last", Log::DEBUG);
 
-            $times_qualities = $times_checker($match_ratio, $all_qualities, $used_times);
+//            $times_qualities = $times_checker($match_ratio, $all_qualities, $used_times);
+            $times_qualities = $times_checker($all_qualities);
             $qualities_log("ratio_phone_quality $mchid-$card_type-$spec times_qualities", $times_qualities);
 
             $timeout_qualities = $timeout_checker($match_ratio, $all_qualities, $left_time);