kevin_zhangl пре 2 година
родитељ
комит
e68e98c360
2 измењених фајлова са 24 додато и 31 уклоњено
  1. 1 2
      common/helpers/Logistics.php
  2. 23 29
      frontendApi/modules/v1/controllers/ShopController.php

+ 1 - 2
common/helpers/Logistics.php

@@ -149,8 +149,7 @@ class Logistics
         }
         $request['products'] = $products;
 
-        return $request;
-//        return $this->curl(self::createOrderUrl, $request);
+        return $this->curl(self::createOrderUrl, $request);
     }
 
     // 3.获取产品/包裹的重量和状态.

+ 23 - 29
frontendApi/modules/v1/controllers/ShopController.php

@@ -453,29 +453,22 @@ class ShopController extends BaseController {
     }
 
     /**
+     * 推送订单到wst仓储系统
      * @throws HttpException
      * @throws \Exception
      */
     public function actionLogistics()
     {
         $orderSn = \Yii::$app->request->get('sn');
-        // TODO: Yii2框架BUG,使用find all left join时只返回一条数据
-//        $order = OrderGoods::find()
-//            ->alias('OG')
-//            ->where('OG.ORDER_SN=:ORDER_SN', [':ORDER_SN' => $orderSn])
-//            ->select('OG.ORDER_SN,OG.REAL_PRICE,OG.BUY_NUMS,OG.SKU_CODE,OG.GOODS_TITLE,OG.REAL_PV,O.*,U.REAL_NAME')
-//            ->join('LEFT JOIN', Order::tableName() . ' AS O', 'OG.ORDER_SN=O.SN')
-//            ->join('LEFT JOIN', User::tableName() . ' AS U', 'U.ID=O.USER_ID')
-//            ->asArray()
-//            ->all();
-
-        $sql = 'SELECT `OG`.`ORDER_SN`, `OG`.`REAL_PRICE`, `OG`.`BUY_NUMS`, `OG`.`SKU_CODE`, `OG`.`GOODS_TITLE`, `OG`.`REAL_PV`, `O`.*, `U`.`REAL_NAME` FROM `AR_ORDER_GOODS` `OG` LEFT JOIN `AR_ORDER` `O` ON OG.ORDER_SN=O.SN LEFT JOIN `AR_USER` `U` ON U.ID=O.USER_ID WHERE OG.ORDER_SN=:ORDER_SN';
-        $order = Yii::$app->db->createCommand($sql)->bindValue(':ORDER_SN', $orderSn)->queryAll();
+        $order = Order::find()
+            ->where('ORDER_SN=:ORDER_SN', [':ORDER_SN' => $orderSn])
+            ->asArray()
+            ->one();
 
         if (!$order) {
             return static::notice('订单【' . $orderSn . '】不存在');
         }
-        if ($order[0]['SEND_AT'] > 0) {
+        if ($order['SEND_AT'] > 0) {
             return static::notice('订单【' . $orderSn . '】不可重复推送');
         }
 
@@ -505,11 +498,12 @@ class ShopController extends BaseController {
         // 早5点推送,前一天0-24点的订单
         $orderList = Order::find()
             ->where(
-                '(CREATED_AT BETWEEN :CREATED_AT_START AND :CREATED_AT_END) AND STATUS=:STATUS AND PAY_TYPE=:PAY_TYPE',
+                '(CREATED_AT BETWEEN :CREATED_AT_START AND :CREATED_AT_END) AND STATUS=:STATUS AND SEND_AT=:SEND_AT AND PAY_TYPE=:PAY_TYPE',
                 [
                     ':CREATED_AT_START' => $createdAtStart,
                     ':CREATED_AT_END' => $createdAtEnd,
                     ':STATUS' => \Yii::$app->params['orderStatus']['paid']['value'],
+                    ':SEND_AT' => 0,
                     'PAY_TYPE' => 'online',
                 ]
             )
@@ -523,27 +517,27 @@ class ShopController extends BaseController {
             // 发送wst仓库系统
             $response = $logistics->createOrder($order);
             LoggerTool::warning($response);
-//            if ($response['success'] == 1) {
-//                // 写入mongo
-//                Tool::wstOrderCall($response['data']);
-//                $orderSnSuccess[] = $order['SN'];
-//            } else {
-//                $orderSnFailed[] = $order['SN'];
-//            }
+            if ($response['success'] == 1) {
+                // 写入mongo
+                Tool::wstOrderCall($response['data']);
+                $orderSnSuccess[] = $order['SN'];
+            } else {
+                $orderSnFailed[] = $order['SN'];
+            }
 
             $orderSnSuccess[] = $response;
         }
 
-        return static::notice($orderSnSuccess);
 
         // 更新db中订单推送成功状态
-//        if (count($orderSnSuccess) > 0) {
-//            Order::updateAll(['SEND_AT' => time()], 'SN IN (:SN)', [':SN' => implode("', '", $orderSnSuccess)]);
-//        }
-//        if (count($orderSnFailed) > 0) {
-//            // 发送预警通知
-//        }
+        if (count($orderSnSuccess) > 0) {
+            Order::updateAll(['SEND_AT' => time()], 'SN IN (:SN)', [':SN' => implode("', '", $orderSnSuccess)]);
+        }
+        if (count($orderSnFailed) > 0) {
+            // 发送预警通知
+
+        }
 
-//        return static::notice(sprintf('wstLogisticsAutoSend success order count{%d}, orderSN[%s]; failed count{%d}, orderSN[%s]', count($orderSnSuccess), implode(', ', $orderSnSuccess), count($orderSnFailed), implode(', ', $orderSnFailed)));
+        return static::notice(sprintf('wstLogisticsAutoSend success order count{%d}, orderSN[%s]; failed count{%d}, orderSN[%s]', count($orderSnSuccess), implode(', ', $orderSnSuccess), count($orderSnFailed), implode(', ', $orderSnFailed)));
     }
 }