Explorar el Código

add transfer code for card_no

stanley-king hace 3 años
padre
commit
7e18a6f275
Se han modificado 4 ficheros con 32 adiciones y 30 borrados
  1. 28 21
      helper/mtopcard/mtopcard.php
  2. 0 5
      helper/refill/policy/quaility.php
  3. 2 2
      rdispatcher/proxy.php
  4. 2 2
      test/TestCardNo.php

+ 28 - 21
helper/mtopcard/mtopcard.php

@@ -3,6 +3,7 @@
 namespace mtopcard;
 
 use Log;
+use PHPUnit\SebastianBergmann\Type\UnknownType;
 
 #用户卡的类型
 const UnknownCard = 0;
@@ -235,13 +236,13 @@ function valid_phone($card_no)
 {
     $type_checker = function ($channel)
     {
-        if($channel == '中国联通') {
+        if($channel == '联通') {
             return ChinaUnicomCard;
         }
-        elseif($channel == '中国电信') {
+        elseif($channel == '电信') {
             return ChinaTelecomCard;
         }
-        elseif($channel == '中国移动') {
+        elseif($channel == '移动') {
             return ChinaMobileCard;
         }
         else {
@@ -284,7 +285,7 @@ function valid_phone($card_no)
         }
     };
 
-    $ali = function ($card_no, &$validate, &$card_type, &$region_no) use ($validate_checker, $type_checker, $regin_checker): bool
+    $ali = function ($card_no, &$validate, &$region_no) use ($validate_checker, $regin_checker): bool
     {
         $url = 'https://mobileempty.shumaidata.com/mobileempty';
         $params['mobile'] = $card_no;
@@ -301,7 +302,6 @@ function valid_phone($card_no)
         {
             $data = $resp['data'];
             $validate = $validate_checker(intval($data['status']));
-            $card_type = $type_checker($data['channel']);
             $region_no = $regin_checker($data['area']);
             return true;
         } else {
@@ -310,7 +310,7 @@ function valid_phone($card_no)
         }
     };
 
-    $tianyan = function ($card_no, &$validate, &$card_type, &$region_no) use ($validate_checker, $type_checker, $regin_checker): bool
+    $tianyan = function ($card_no, &$validate, &$region_no) use ($validate_checker, $regin_checker): bool
     {
         $url = 'https://api.shumaidata.com/v4/mobile_empty/check';
         $appid = '2Xfa6IFIPv0sVUjy';
@@ -334,7 +334,6 @@ function valid_phone($card_no)
         {
             $data = $resp['data'];
             $validate = $validate_checker(intval($data['status']));
-            $card_type = $type_checker($data['channel']);
             $region_no = $regin_checker($data['area']);
             return true;
         } else {
@@ -343,7 +342,7 @@ function valid_phone($card_no)
         }
     };
 
-    $tianyan_transfer = function ($card_no)
+    $tianyan_cardtyper = function ($card_no) use ($type_checker)
     {
         $url = 'https://api.shumaidata.com/v4/mobile-transfer/query';
         $appid = '2Xfa6IFIPv0sVUjy';
@@ -369,10 +368,14 @@ function valid_phone($card_no)
             $ispType = $data['ispType'];
             $newIspType = $data['newIspType'];
             Log::record("tianyan_transfer phone:{$card_no} ispType:{$ispType} newIspType:{$newIspType}", Log::DEBUG);
-            return $newIspType;
+
+            $card_type = $type_checker($newIspType);
+            $isTransfer = $ispType != $newIspType;
+
+            return [true,$card_type,$isTransfer];
         } else {
             Log::record("tianyan_transfer phone:{$card_no} return msg:{$resp['msg']}", Log::DEBUG);
-            return false;
+            return [false,UnknownCard,false];
         }
     };
 
@@ -381,23 +384,27 @@ function valid_phone($card_no)
     $region_no = -1;
 
     if($card_type == PetroChinaCard || $card_type == SinopecCard) {
-        return [$validate,$card_type,$region_no];
+        return [$validate,$card_type,$region_no,false];
     }
 
-    $ret = $tianyan($card_no,$validate,$card_type,$region_no);
+    [$succ,$_card_type,$_isTransfer] = $tianyan_cardtyper($card_no);
+    if($succ) {
+        $card_type = $_card_type;
+        $isTransfer = $_isTransfer;
+    }
+    else {
+        $isTransfer = false;
+    }
+
+    $ret = $tianyan($card_no,$validate,$region_no);
     if($ret) {
-        $newIspType = $tianyan_transfer($card_no);
-        if(!empty($newIspType)) {
-            $card_type = $type_checker("中国{$newIspType}");
-        }
-        return [$validate,$card_type,$region_no];
+        return [$validate,$card_type,$region_no,$isTransfer];
     }
 
-    $ret = $ali($card_no,$validate,$card_type,$region_no);
+    $ret = $ali($card_no,$validate,$region_no);
     if($ret) {
-        return [$validate,$card_type,$region_no];
+        return [$validate,$card_type,$region_no,$isTransfer];
     }
 
-    $card_type = card_type($card_no,$region_no);
-    return [$validate,$card_type,$region_no];
+    return [true,$card_type,-1,false];
 }

+ 0 - 5
helper/refill/policy/quaility.php

@@ -8,7 +8,6 @@ use mtopcard;
 class Quality
 {
     const LowestQuality  = 1;
-
     const Normal = 1;
     const Quick = 2;
     const CardKey = 3;
@@ -18,16 +17,12 @@ class Quality
     const SlowTwo = 7;
     const SlowFortyEight = 8;
     const SlowSeventyTwo = 9;
-
     const HighestQuality = 9;
 
-
     const SlowNormal  = 11;  // 7 -> 1
     const ThirdNormal  = 12; // 4 -> 1
-
     const DefSuccess = 13;   // 4 -> 3 -> 1 -> 2
     const NormalQuick = 14;
-
     const SlowSixNormal = 15;
 
     const OilWithoutSN = 1;

+ 2 - 2
rdispatcher/proxy.php

@@ -42,7 +42,7 @@ class proxy
         if($card_type == 0)
         {
             $first_comit = true;
-            [$validate,$card_type,$region] = mtopcard\valid_phone($card_no);
+            [$validate,$card_type,$region,$isTransfer] = mtopcard\valid_phone($card_no);
             $params['card_type'] = $card_type;
             $params['regin_no'] = $region;
             $regin_no = $region;
@@ -148,7 +148,7 @@ class proxy
         if($card_type == 0)
         {
             $first_comit = true;
-            [$validate,$card_type,$region] = mtopcard\valid_phone($card_no);
+            [$validate,$card_type,$region,$isTransfer] = mtopcard\valid_phone($card_no);
             $params['card_type'] = $card_type;
             $params['regin_no'] = $region;
             $regin_no = $region;

+ 2 - 2
test/TestCardNo.php

@@ -34,14 +34,14 @@ class TestCardNo extends TestCase
         $count = count($phones);
 
         foreach ($phones as $phone) {
-            [$validate,$card_type,$region_no] = mtopcard\valid_phone($phone);
+            [$validate,$card_type,$region_no,$isTransfer] = mtopcard\valid_phone($phone);
             Log::record("validate={$validate} card_type={$card_type} region_no={$region_no}",Log::DEBUG);
         }
     }
 
     public function testTianYanValidPhone()
     {
-        [$validate,$card_type,$region_no] = mtopcard\valid_phone('13911129867');
+        [$validate,$card_type,$region_no,$isTransfer] = mtopcard\valid_phone('15120035568');
         Log::record("validate={$validate} card_type={$card_type} region_no={$region_no}",Log::DEBUG);
     }