Prechádzať zdrojové kódy

fix mixed ratios calc

stanley-king 3 rokov pred
rodič
commit
5d2f60bac1

+ 19 - 2
helper/refill/policy/mratio_control.php

@@ -448,7 +448,24 @@ class mratio_control
 
     private function qts_checker($mchid, $org_quality,$cur_quality, $card_type, $spec, $qualities,$period,$header,$ratio)
     {
-        [$_succ, $_fail, $cur_ratio] = $this->detail_ratio($mchid, $cur_quality, $card_type, $spec, $period);
+        $ratio_calc = function ($mchid, $card_type, $spec, $period, $org_quality, $qualities)
+        {
+            $succs = 0;
+            $fails = 0;
+            foreach ($qualities as $quality)
+            {
+                if ($quality === $org_quality) continue;
+
+                [$_succ, $_fail, $cur_ratio] = $this->detail_ratio($mchid, $quality, $card_type, $spec, $period);
+                $succs += $_succ;
+                $fails += $_fail;
+            }
+            $ratio = round($succs / ($succs + $fails + 0.000001),4);
+
+            return $ratio;
+        };
+
+        $cur_ratio = $ratio_calc($mchid, $card_type, $spec, $period, $org_quality, $qualities);
         Log::record("{$header} cur_ratio = {$cur_ratio},lower_ratio={$ratio}",Log::DEBUG);
 
         if($cur_ratio >= $ratio) return true;
@@ -486,7 +503,7 @@ class mratio_control
             }
             else
             {
-                $cur_pratio = round($profit / ($amount + 0.00001),4);
+                $cur_pratio = round($profit / ($amount + 0.000001),4);
                 $profit_ratio = round($profit_ratio,4);
 
                 Log::record("{$header} qts_checker cur_pratio = {$cur_pratio},profit_ratio={$profit_ratio}",Log::DEBUG);

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
test/TestBigData.php