|
@@ -23,18 +23,21 @@ class Quality
|
|
const DefSuccess = 13; // 4 -> 3 -> 1 -> 2
|
|
const DefSuccess = 13; // 4 -> 3 -> 1 -> 2
|
|
const NormalQuick = 14;
|
|
const NormalQuick = 14;
|
|
|
|
|
|
- protected $mMchctl;
|
|
|
|
|
|
+ protected $mMchPhonectl;
|
|
|
|
+ protected $mMchoilctl;
|
|
protected $mSpeeds;
|
|
protected $mSpeeds;
|
|
protected $mQualities;
|
|
protected $mQualities;
|
|
|
|
|
|
public function __construct()
|
|
public function __construct()
|
|
{
|
|
{
|
|
- $this->mMchctl = new mchctl();
|
|
|
|
|
|
+ $this->mMchPhonectl = new mchctl();
|
|
|
|
+ $this->mMchoilctl = new mchoilctl();
|
|
}
|
|
}
|
|
|
|
|
|
public function load()
|
|
public function load()
|
|
{
|
|
{
|
|
- $this->mMchctl->load();
|
|
|
|
|
|
+ $this->mMchPhonectl->load();
|
|
|
|
+ $this->mMchoilctl->load();
|
|
}
|
|
}
|
|
|
|
|
|
public function find_quality($mchid,$card_type,$quality,$times,$used_time): array
|
|
public function find_quality($mchid,$card_type,$quality,$times,$used_time): array
|
|
@@ -43,21 +46,62 @@ class Quality
|
|
return $this->mobile_quality($mchid, $quality, $times, $used_time);
|
|
return $this->mobile_quality($mchid, $quality, $times, $used_time);
|
|
}
|
|
}
|
|
elseif($card_type == mtopcard\PetroChinaCard || $card_type == mtopcard\SinopecCard) {
|
|
elseif($card_type == mtopcard\PetroChinaCard || $card_type == mtopcard\SinopecCard) {
|
|
- return [1, [1]];
|
|
|
|
|
|
+ return $this->oil_quality($mchid, $quality, $times, $used_time);
|
|
}
|
|
}
|
|
else {
|
|
else {
|
|
return [0, []];
|
|
return [0, []];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ private function oil_quality($mchid,$quality,$times,$used_time): array
|
|
|
|
+ {
|
|
|
|
+ if($quality == 0)
|
|
|
|
+ {
|
|
|
|
+ [$success,$setting_quality,$time_out] = $this->mMchoilctl->getCtls($mchid);
|
|
|
|
+ if($success)
|
|
|
|
+ {
|
|
|
|
+ if(array_key_exists($setting_quality,$this->mQualities)) {
|
|
|
|
+ $org = $setting_quality;
|
|
|
|
+ $qualities = $this->mQualities[$setting_quality];
|
|
|
|
+ }
|
|
|
|
+ else {
|
|
|
|
+ $org = $setting_quality;
|
|
|
|
+ $qualities = [$setting_quality];
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ else {
|
|
|
|
+ $org = self::ThirdNormal;
|
|
|
|
+ $qualities = $this->mQualities[$org];
|
|
|
|
+ $time_out = $this->mSpeeds[$org]['retry_timeout'];
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ elseif(array_key_exists($quality,$this->mQualities)) {
|
|
|
|
+ $org = $quality;
|
|
|
|
+ $qualities = $this->mQualities[$quality];
|
|
|
|
+ [$success, $setting_quality, $time_out] = $this->mMchPhonectl->getCtls($mchid);
|
|
|
|
+ }
|
|
|
|
+ else {
|
|
|
|
+ Log::record("find_quality: cannot find any quality",Log::DEBUG);
|
|
|
|
+ return [0,[]];
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if($time_out <= 0) {
|
|
|
|
+ $time_out = $this->mSpeeds[$org]['retry_timeout'];
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ $max_times = $this->mSpeeds[$org]['retry_times'];
|
|
|
|
+ $qualities = $this->calc_quality($qualities,$times,$used_time,$time_out,$max_times);
|
|
|
|
+
|
|
|
|
+ return [$org,$qualities];
|
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
private function mobile_quality($mchid,$quality,$times,$used_time): array
|
|
private function mobile_quality($mchid,$quality,$times,$used_time): array
|
|
{
|
|
{
|
|
if($quality == 0)
|
|
if($quality == 0)
|
|
{
|
|
{
|
|
- [$sucdess,$setting_quality,$time_out] = $this->mMchctl->getCtls($mchid);
|
|
|
|
- if($sucdess)
|
|
|
|
|
|
+ [$success,$setting_quality,$time_out] = $this->mMchPhonectl->getCtls($mchid);
|
|
|
|
+ if($success)
|
|
{
|
|
{
|
|
if(array_key_exists($setting_quality,$this->mQualities)) {
|
|
if(array_key_exists($setting_quality,$this->mQualities)) {
|
|
$org = $setting_quality;
|
|
$org = $setting_quality;
|
|
@@ -77,7 +121,7 @@ class Quality
|
|
elseif(array_key_exists($quality,$this->mQualities)) {
|
|
elseif(array_key_exists($quality,$this->mQualities)) {
|
|
$org = $quality;
|
|
$org = $quality;
|
|
$qualities = $this->mQualities[$quality];
|
|
$qualities = $this->mQualities[$quality];
|
|
- [$sucdess, $setting_quality, $time_out] = $this->mMchctl->getCtls($mchid);
|
|
|
|
|
|
+ [$success, $setting_quality, $time_out] = $this->mMchPhonectl->getCtls($mchid);
|
|
}
|
|
}
|
|
else {
|
|
else {
|
|
Log::record("find_quality: cannot find any quality",Log::DEBUG);
|
|
Log::record("find_quality: cannot find any quality",Log::DEBUG);
|