stanley-king пре 4 година
родитељ
комит
3d26f376f4
4 измењених фајлова са 62 додато и 6 уклоњено
  1. 9 2
      data/logic/queue.logic.php
  2. 2 2
      data/model/topcard.model.php
  3. 50 1
      mobile/control/member_buy.php
  4. 1 1
      test/TestMemberCard.php

+ 9 - 2
data/logic/queue.logic.php

@@ -1097,11 +1097,14 @@ class queueLogic
     {
         $extra_info = $params['extra_info'];
         $card_no = $extra_info['input']['card_no'];
+        $phone_no = $extra_info['input']['phone_no'];
+
         $card_type = mtopcard\topcard_type($extra_info['input']['card_type']);
         $goods_id = intval($params['goods_id']);
 
         $topcard = Model('topcard');
-        if(empty($topcard->get_card($card_no)))
+        $cards = $topcard->get_card($card_no);
+        if(empty($cards))
         {//卡不存在
             //查询1000内是否有卡
             $items = $topcard->get_cards($card_no - 500,$card_no + 500);
@@ -1109,7 +1112,7 @@ class queueLogic
                 return callback(false,'此油卡充值,存在风险,请去运营商平台充值.');
             }
             else {
-                $topcard->add($card_no,$card_type,time());
+                $topcard->add($card_no,$card_type,time(),$phone_no);
                 return callback(true);
             }
         }
@@ -1117,6 +1120,10 @@ class queueLogic
         {
             $day_limit = 1000;
             $month_limit = 2000;
+
+            if(empty($cards[0]['bind_phone'])) {
+                $topcard->table('topcard')->field('*')->where(['card_no' => $card_no])->update(['bind_phone' => $phone_no]);
+            }
             return $this->check_amount($goods_id,$card_no,$day_limit,$month_limit);
         }
     }

+ 2 - 2
data/model/topcard.model.php

@@ -6,9 +6,9 @@ defined('InShopNC') or exit('Access Invalid!');
 
 class topcardModel extends Model
 {
-    public function add($card_no,$card_type,$add_time)
+    public function add($card_no,$card_type,$add_time,$phone_no = 0)
     {
-        return $this->table('topcard')->insert(['card_no' => $card_no,'card_type' => $card_type,'add_time' => $add_time]);
+        return $this->table('topcard')->insert(['card_no' => $card_no,'card_type' => $card_type,'add_time' => $add_time,'bind_phone' => $phone_no]);
     }
     public function get_card($card_no)
     {

+ 50 - 1
mobile/control/member_buy.php

@@ -228,8 +228,12 @@ class member_buyControl extends mbMemberControl
         [$fExtra, $extra_info, $order_check] = $this->extra_info($input['goods_id'], $_POST);
         if (!$fExtra) {
             Log::record("step_vsecond error", Log::ERR);
-            return self::outerr(errcode::ErrInputParam, '缺少虚拟商品,额外指定参数.');
+            return self::outerr(errcode::ErrInputParam, '缺少虚拟商品额外指定参数.');
         }
+        if(array_key_exists('phone_no',$extra_info['input']) && empty($extra_info['input']['phone_no'])) {
+            return self::outerr(errcode::ErrInputParam, '一个手机号只能绑定一张油卡,请换卡.');
+        }
+
         if(!empty($order_check))
         {
             $logic = Logic('queue');
@@ -302,11 +306,56 @@ class member_buyControl extends mbMemberControl
                 $extra['additional'] = $handler['additional'];
             }
 
+            if(array_key_exists('phone_no',$extra['input'])) {
+                $phone_no = $this->check_oilmobile($extra['input']);
+                $extra['input']['phone_no'] = $phone_no;
+            }
+
             return [true, $extra, $handler['order_check']];
         }
         return [true, [], ''];
     }
 
+    private function check_oilmobile($params)
+    {
+        $phone_no = $params['phone_no'];
+        $card_no  = $params['card_no'];
+        if(empty($card_no)) {
+            return "";
+        }
+
+        $find_card = function ($topcard,$card_no) {
+            $items = $topcard->table('topcard')->field('*')->where(['card_no' => $card_no])->select();
+            if(empty($items)) {
+                return "";
+            } else {
+                return $items[0]['bind_phone'];
+            }
+        };
+        $find_phone = function ($topcard,$phone_no) {
+            $items = $topcard->table('topcard')->field('*')->where(['bind_phone' => $phone_no])->select();
+            if(empty($items)) {
+                return "";
+            } else {
+                return $items[0]['card_no'];
+            }
+        };
+
+        $topcard = Model('topcard');
+        $phone = $find_card($topcard,$card_no);
+        if(!empty($phone)) {
+            return $phone;
+        }
+
+        $card = $find_phone($topcard,$phone_no);
+        if(empty($card)) {
+            return $phone_no;
+        }
+        else {
+            return "";
+        }
+    }
+
     public function pay_confirmOp()
     {
         $pay_sn = $_GET['pay_sn'];

+ 1 - 1
test/TestMemberCard.php

@@ -199,7 +199,7 @@ class TestMemberCard extends TestCase
         }
     }
 
-    //docker-compose run phpcli php /var/www/html/phpunit-9.2.5.phar --filter "/(TestMemberCard::testAddMemberCard4Hg)( .*)?$/" --test-suffix TestMemberCard.php /var/www/html/test
+    //docker-compose run phpcli php /var/www/html/phpunit-9.2.5.phar --filter "/(TestMemberCard::testAddMemberCard)( .*)?$/" --test-suffix TestMemberCard.php /var/www/html/test
 
 
     public function testDeduct()