|
@@ -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 {
|