panghu 7 bulan lalu
induk
melakukan
6901599344

+ 65 - 0
app/Console/Commands/CheckOrderExpire.php

@@ -0,0 +1,65 @@
+<?php
+
+namespace App\Console\Commands;
+
+use App\Models\Goods;
+use App\Models\Order;
+use App\Models\OrderItem;
+use Illuminate\Console\Command;
+use Illuminate\Support\Facades\DB;
+
+class CheckOrderExpire extends Command
+{
+    /**
+     * The name and signature of the console command.
+     *
+     * @var string
+     */
+    protected $signature = 'check:orderExpire';
+
+    /**
+     * The console command description.
+     *
+     * @var string
+     */
+    protected $description = '检查订单到期未支付';
+
+    /**
+     * Create a new command instance.
+     *
+     * @return void
+     */
+    public function __construct()
+    {
+        parent::__construct();
+    }
+
+    /**
+     * Execute the console command.
+     *
+     * @return int
+     */
+    public function handle()
+    {
+        $date = date('Y-m-d H:i:s', time() - 900);//15分钟
+
+        Order::where('order_status', 1)
+            ->where('created_at', '<=', $date)
+            ->chunkById(100,function ($list){
+                foreach ($list as $item){
+                    DB::beginTransaction();
+                    try {
+                        //取消订单
+                        Order::where('id',$item->{'id'})->update(['order_status'=>3]);
+
+                        DB::commit();
+                    }catch (\Exception $e){
+                        DB::rollBack();
+                    }
+
+                }
+            });
+
+        return true;
+    }
+}

+ 3 - 3
app/Http/Controllers/Api/OrderController.php

@@ -144,7 +144,7 @@ class OrderController extends ApiController
             return $this->apiResponseError('下单人数过多,请稍候');
         }
         //下单
-        $res = OrderServer::creatServer()->createOrder($m_id,$shop_id,$order_type,$table_number,$diner_number,$note,$goods);
+        $res = OrderServer::creatServer()->createOrder($m_id,$shop_id,$order_type,$table_number,$diner_number,$note,$goods,$shopping_cart);
 
         //删除锁key-防止死锁
         RedisDataServer::creatServer()->unLockKey($lock_key,$lock_value);
@@ -221,7 +221,7 @@ class OrderController extends ApiController
                     $q->where('order_status',$status);
                 }
             })
-            ->select(['id','order_sn','order_status','pay_money','goods_number','created_at','shop_id','note'])
+            ->select(['id','order_sn','order_status','pay_money','goods_number','created_at','shop_id','note','shopping_cart'])
             ->orderBy('id','desc')
             ->paginate(10);
         foreach ($list as $value){
@@ -290,7 +290,7 @@ class OrderController extends ApiController
         $where = [['m_id',$m_id], ['is_del',0], ['id',$order_id]];
 
         $order = Order::where($where)
-            ->select(['id','order_sn','pay_type','m_id','note','order_status','pay_money','goods_number','shop_id','created_at','pack_price','table_number','diner_number','number','note'])
+            ->select(['id','order_sn','pay_type','m_id','note','order_status','pay_money','goods_number','shop_id','created_at','pack_price','table_number','diner_number','number','note','shopping_cart'])
             ->first();
         if (empty($order)) return $this->apiResponseError('订单不存在');
         if ($order->{'order_type'} == 1) {//堂食打包费为0

+ 9 - 0
app/Models/Order.php

@@ -82,6 +82,15 @@ class Order extends Model
      */
     public $timestamps = true;
 
+    /**
+     * 类型转换
+     *
+     * @var array
+     */
+    protected $casts = [
+        'shopping_cart' => 'array',
+    ];
+
 
     /**
      * 不能被批量赋值的属性

+ 2 - 1
app/Servers/OrderServer.php

@@ -37,7 +37,7 @@ class OrderServer
         return self::$server;
     }
 
-    function createOrder($m_id,$shop_id,$order_type,$table_number,$diner_number,$note,$goods_data)
+    function createOrder($m_id,$shop_id,$order_type,$table_number,$diner_number,$note,$goods_data,$shopping_cart)
     {
         DB::beginTransaction();
         try {
@@ -79,6 +79,7 @@ class OrderServer
                 'service_money' => $service_money,
                 'pack_price' => $pack_price,
                 'shop_money' => $shop_money,
+                'shopping_cart' => $shopping_cart,
             ];
             //主表信息入库
             $order = Order::create($order_info);