Procházet zdrojové kódy

花店订单到期脚本

shish před 4 roky
rodič
revize
1c19ce6b51

+ 2 - 7
app-hd/controllers/OrderController.php

@@ -376,18 +376,13 @@ class OrderController extends BaseController
         $payPassword = isset($post['payPassword']) ? $post['payPassword'] : 0;
         $couponId = isset($post['couponId']) ? $post['couponId'] : 0;
 
-        //验证优惠券是否还有效
-        if (!empty($couponId)) {
-            CouponService::checkBeforeUse($couponId, $order['prePrice'], $order['userId']);
-        }
-
         $order = OrderService::getByOrderSn($orderSn);
         $userId = $this->adminId;
         $user = UserService::getUserInfo($userId);
         //验证支付密码是否正确
         UserService::validPayPassword($payPassword, $user);
         //支付前验证订单有效性
-        OrderService::checkBeforePay($order, $this->adminId);
+        OrderService::checkBeforePay($order);
         $capitalType = dict::getDict('capitalType', 'xhOrder', 'id');
         $totalFee = $order['prePrice'];
         $sourceType = 0;
@@ -415,7 +410,7 @@ class OrderController extends BaseController
         }
 
         //支付前验证订单有效性
-        OrderService::checkBeforePay($order, $this->adminId);
+        OrderService::checkBeforePay($order);
 
         $name = isset($order['orderName']) && !empty($order['orderName']) ? $order['orderName'] : '购买商品';
         $totalFee = $order['realPrice'];

+ 0 - 3
biz-ghs/order/services/OrderService.php

@@ -465,9 +465,6 @@ class OrderService extends BaseService
             util::fail('订单不是待付款状态');
         }
         if (isset($order['deadline']) && $now > $order['deadline']) {
-            //$id = $order['id'];
-            //$info = OrderClass::getLockById($id);
-            //self::expire($info);
             util::fail('订单已过期');
         }
         if (ceil($order['actPrice']) <= 0) {

+ 47 - 5
biz-hd/order/classes/OrderClass.php

@@ -11,7 +11,9 @@ use biz\shop\classes\ShopExtClass;
 use biz\shop\models\Shop;
 use biz\stat\classes\StatOrderCountClass;
 use biz\wx\classes\WxMessageClass;
+use bizGhs\product\classes\ProductClass;
 use bizGhs\stat\classes\StatYjClass;
+use bizGhs\stock\classes\StockRecordClass;
 use bizGhs\ws\services\WsService;
 use bizHd\custom\classes\CustomClass;
 use bizHd\merchant\classes\SjClass;
@@ -305,16 +307,56 @@ class OrderClass extends BaseClass
         }
     }
 
-    //订单到期未付款的订单置成取消状态 ssh 2020.5.25
+    //订单取消 ssh 20220516
     public static function setExpire($order)
     {
         $now = time();
-        if (!empty($order['deadline']) && $now > $order['deadline']) {
-            if ($order['status'] == 0) {
-                $id = $order['id'];
-                OrderClass::updateById($id, ['status' => 4]);
+        if ($order->deadline > $now) {
+            return false;
+        }
+        if ($order->status != 1) {
+            return false;
+        }
+        $order->status = 5;
+        $order->save();
+        //暂时只考虑花材库存的回滚
+        $orderSn = $order->orderSn ?? '';
+        $itemList = OrderItemClass::getAllByCondition(['orderSn' => $orderSn], null, '*', null, true);
+        if (empty($itemList)) {
+            return false;
+        }
+        foreach ($itemList as $item) {
+
+            $ptItemId = $item->ptItemId ?? 0;
+            $sjId = $item->sjId ?? 0;
+            $shopId = $item->shopId ?? 0;
+            $mainId = $item->mainId ?? 0;
+            $ratio = $item->ratio ?? 20;
+            $unitType = $item->unitType ?? 0;
+            $bigNum = 0;
+            $smallNum = 0;
+            if ($unitType == 0) {
+                $bigNum = $item->num;
+            } else {
+                $smallNum = $item->num;
             }
+            $itemId = $item->itemId ?? 0;
+            $stockInfo = ProductClass::addStock($itemId, $bigNum, $smallNum);
+            $recordData = [];
+            $recordData['sjId'] = $sjId;
+            $recordData['shopId'] = $shopId;
+            $recordData['mainId'] = $mainId;
+            $recordData['itemId'] = $ptItemId;
+            $recordData['itemNum'] = ProductClass::mergeItemNum($bigNum, $smallNum, $ratio);
+            $recordData['oldStock'] = $stockInfo['oldStock'];
+            $recordData['newStock'] = $stockInfo['newStock'];
+            $recordData['productId'] = $itemId;
+            $recordData['orderSn'] = $orderSn;
+            $recordData['relateName'] = '系统';
+            StockRecordClass::addSellStockOrderCancelRecord($recordData);
+
         }
+
     }
 
     // 扣库存

+ 2 - 4
biz-hd/order/services/OrderService.php

@@ -345,11 +345,10 @@ class OrderService extends BaseService
         if (empty($order)) {
             util::fail('订单无效');
         }
-
-        if ($order['status'] != 0) {
+        if ($order['status'] != 1) {
             util::fail('订单不是待付款状态');
         }
-        if (!empty($order['deadline']) && $now > $order['deadline']) {
+        if (($now - 60) > $order['deadline']) {
             util::fail('订单已过期');
         }
         if (ceil($order['actPrice']) <= 0) {
@@ -363,7 +362,6 @@ class OrderService extends BaseService
     //商家验证是否有效 ssh 2019.12.15
     public static function valid($order, $mainId)
     {
-        OrderClass::setExpire($order);
         if (empty($order)) {
             util::fail('订单无效');
         }

+ 34 - 0
console/controllers/OrderController.php

@@ -2,9 +2,43 @@
 
 namespace console\controllers;
 
+use bizHd\order\classes\OrderClass;
+use bizHd\order\models\Order;
+use common\components\noticeUtil;
 use yii\console\Controller;
 
 class OrderController extends Controller
 {
 
+    //花店订单脚本
+    public function actionExpire()
+    {
+        $query = new \yii\db\Query();
+        $query->from(Order::tableName());
+        $endTime = now();
+        $startTime = strtotime('-7 days');
+        //查询已经过期7天的订单
+        $query->where(['status' => 1])->andWhere(['>', 'deadline', $startTime])->andWhere(['<=', 'deadline', $endTime]);
+        $query->orderBy('deadline ASC');
+        foreach ($query->batch() as $batchOrder) {
+            foreach ($batchOrder as $order) {
+                $connection = Yii::$app->db;
+                $transaction = $connection->beginTransaction();
+                $id = $order['id'] ?? 0;
+                $orderSn = $order['orderSn'] ?? '';
+                try {
+                    $order = OrderClass::getById($id, true);
+                    //暂时只考虑花材库存的回滚
+                    OrderClass::setExpire($order);
+                    $transaction->commit();
+                    noticeUtil::push("商城订单未付款,库存已回滚,单号:{$orderSn}");
+                } catch (\Exception $e) {
+                    $transaction->rollBack();
+                    $msg = $e->getMessage();
+                    noticeUtil::push("采购单过期处理报错了!订单号:{$orderSn},错误信息:{$msg}", '15280215347');
+                }
+            }
+        }
+    }
+
 }