Przeglądaj źródła

fix inner_staus == 0 and is_retrying == 1 error

stanley-king 4 lat temu
rodzic
commit
fbe407c81c

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

@@ -1230,11 +1230,12 @@ class queueLogic
         $amount = $this->getTopcardAmound($order['goods_id']);
         $member_id = $order['buyer_id'];
         $order_id = $order['order_id'];
+        $store_id = $order['store_id'];
 
         $extra_info = json_decode($order['extra_info'], true);
         $card_no = $extra_info['input']['card_no'];
         $card_type = mtopcard\topcard_type($extra_info['input']['card_type']);
-        $ret = mtopcard\cards_helper::reserve(mtopcard\OilCardPaper, $amount, $member_id, $card_no, $card_type, $order_id);
+        [$ret,$info] = mtopcard\cards_helper::reserve(mtopcard\OilCardPaper, $amount, $member_id, $card_no, $card_type, $order_id,$store_id);
 
         $vr_order = Model();
         $vr_order->table('vr_order')->where(['order_id' => $order_id])->update(['card_no' => $card_no]);
@@ -1248,11 +1249,13 @@ class queueLogic
         $amount = $this->getTopcardAmound($order['goods_id']);
         $member_id = $order['buyer_id'];
         $order_id = $order['order_id'];
+        $store_id = $order['store_id'];
+
 
         $extra_info = json_decode($order['extra_info'], true);
         $card_no = $extra_info['input']['card_no'];
         $card_type = mtopcard\topcard_type($extra_info['input']['card_type']);
-        $ret = mtopcard\cards_helper::reserve(mtopcard\PhoneCardPaper, $amount, $member_id, $card_no, $card_type, $order_id);
+        [$ret,$info] = mtopcard\cards_helper::reserve(mtopcard\PhoneCardPaper, $amount, $member_id, $card_no, $card_type, $order_id, $store_id);
 
         $vr_order = Model();
         $vr_order->table('vr_order')->where(['order_id' => $order_id])->update(['card_no' => $card_no]);

+ 1 - 1
data/model/card_key.model.php

@@ -55,7 +55,7 @@ class card_keyModel extends Model
         //只有已经预留了的卡才可以重新回收使用。
         return $this->where(['card_id' => $card_id, 'card_state' => ReserveCard])
                     ->update(['card_state' => UnusedCard,'member_id' => 0,'order_id' => 0,
-                              'receive_card_no' => '','receive_card_type' => '',
+                              'receive_card_no' => '','receive_card_type' => '', 'out_store_id' => 0,
                               'reserved_time' => 0, 'assigned_time' => 0]);
     }
     public function freeze($card_id)

+ 5 - 4
helper/mtopcard/cards_helper.php

@@ -10,7 +10,7 @@ use Log;
 
 class cards_helper
 {
-    static public function reserve($card_type, $amount, $userid, $user_card_no, $user_card_type,$order_id = 0)
+    static public function reserve($card_type, $amount, $userid, $user_card_no, $user_card_type,$order_id,$store_id = 0)
     {
         try {
             $model = Model('card_key');
@@ -19,7 +19,7 @@ class cards_helper
             if (empty($info)) {
                 $trans->commit();
                 Log::record("cards_helper::reserve 找不到可用的卡了", Log::ERR);
-                return false;
+                return [false,"没有可用的卡密了"];
             }
 
             $card = new CardPaper($info);
@@ -32,13 +32,14 @@ class cards_helper
                                    'order_id' => $order_id,
                                    'receive_card_no' => $user_card_no,
                                    'receive_card_type' => $user_card_type,
+                                   'out_store_id' => $store_id,
                                    'reserved_time' => time()]);
             $rows = $model->affected_rows();
-            return ($ret && $rows > 0);
+            return [true,$card];
         } catch (Exception $e) {
             $trans->rollback();
             Log::record("cards_helper::reserve exception {$e}", Log::ERR);
-            return false;
+            return [false,$e->getMessage()];
         }
     }
 

+ 1 - 1
rdispatcher/proxy.php

@@ -94,7 +94,7 @@ class proxy
                     }
                 }
                 else {
-                    $refill_order->edit($order_id, ['notify_time' => time(), 'notify_state' => 1]);
+                    $refill_order->edit($order_id, ['notify_time' => time(), 'notify_state' => 1,'is_retrying' => 0]);
                 }
 
                 QueueClient::push("NotifyMerchantComplete", ['order_id' => $order_id,'manual' => false]);

+ 37 - 0
test/TestCardKey.php

@@ -0,0 +1,37 @@
+<?php
+
+
+use PHPUnit\Framework\TestCase;
+
+define('APP_ID', 'test');
+define('BASE_ROOT_PATH', str_replace('/test', '', dirname(__FILE__)));
+
+require_once(BASE_ROOT_PATH . '/global.php');
+require_once(BASE_CORE_PATH . '/lrlz.php');
+require_once(BASE_ROOT_PATH . '/fooder.php');
+
+require_once(BASE_HELPER_PATH . '/mcard/mcard.php');
+require_once(BASE_HELPER_PATH . '/mtopcard/mtopcard.php');
+require_once(BASE_HELPER_PATH . '/util_helper.php');
+
+require_once(BASE_HELPER_PATH . '/order_helper.php');
+require_once(BASE_HELPER_PATH . '/bonus_helper.php');
+require_once(BASE_HELPER_PATH . '/vrorder_helper.php');
+
+
+class TestCardKey extends TestCase
+{
+    public static function setUpBeforeClass(): void
+    {
+        Base::run_util();
+    }
+
+    public function testGetUsable()
+    {
+        $amount = 1000;
+        [$ret,$info] = mtopcard\cards_helper::reserve(mtopcard\OilCardPaper,1000,35268,'xxxyyyzzzkkkdj',mtopcard\PetroChinaCard,0);
+
+
+
+    }
+}

+ 2 - 2
test/TestMemberCard.php

@@ -308,9 +308,9 @@ class TestMemberCard extends TestCase
     public function testReserve()
     {
         $amount = 1000;
-        $card = mtopcard\cards_helper::reserve(mtopcard\OilCardPaper,1000,35268,'xxxyyyzzzkkkdj',mtopcard\PetroChinaCard);
+        [$ret,$info] = mtopcard\cards_helper::reserve(mtopcard\OilCardPaper,1000,35268,'xxxyyyzzzkkkdj',mtopcard\PetroChinaCard);
         mtopcard\cards_helper::assign(1,'xiongmao');
-        mtopcard\cards_helper::reserve(mtopcard\OilCardPaper,1000,35268,'xxxyyyzzzkkkdj',mtopcard\PetroChinaCard);
+        [$ret,$info] = mtopcard\cards_helper::reserve(mtopcard\OilCardPaper,1000,35268,'xxxyyyzzzkkkdj',mtopcard\PetroChinaCard);
         mtopcard\cards_helper::reuse(4);
     }