Browse Source

订单统计

gorden 4 months ago
parent
commit
8c222f753d

+ 7 - 2
app/admin/controller/order/DishesController.php

@@ -40,6 +40,11 @@ class DishesController extends Curd
             $where['order_addtimes'][1] = strtotime($where['order_addtimes'][1]);
         }
 
+        if (!empty($where['order_status_system']) && $where['order_status_system'] == 'AWAITING') {
+            $where['order_status_system'] = 'PAYING';
+            $where['order_status_payment'] = 'AWAITING';
+        }
+
         $order = $request->get('order', 'desc');
         $orderId = $request->get('order_id', '');
         $field = $field ?? 'order_addtimes';
@@ -63,7 +68,7 @@ class DishesController extends Curd
             $goodsOrderIds = OrderSheet::whereIn('join_sheet_goods_id', $goodsIds)->pluck('join_sheet_order_id')->toArray();
             if (!empty($where['order_id'])) {
                 $orderIds = array_intersect($orderIds, $goodsOrderIds);
-            }else{
+            } else {
                 $orderIds = $goodsOrderIds;
             }
         }
@@ -170,7 +175,7 @@ class DishesController extends Curd
                     }
                 }
             }
-            $item['payDetail'] = PayDetailService::getPayWay($item['order_groupby'],$item['order_id']);
+            $item['payDetail'] = PayDetailService::getPayWay($item['order_groupby'], $item['order_id']);
         }
 
         return $items;

+ 19 - 8
app/admin/controller/order/StatisticsController.php

@@ -11,6 +11,12 @@ class StatisticsController
     public function order(Request $request)
     {
         $orderCategory = $request->get('order_category');
+        $searchTime = $request->get('order_addtimes');
+        if (!empty($searchTime)){
+            $searchTime[0] = strtotime($searchTime[0]);
+            $searchTime[1] = strtotime($searchTime[1]);
+        }
+
         if (!$orderCategory) {
             return json_fail('参数异常');
         }
@@ -32,22 +38,22 @@ class StatisticsController
             ->where('pay_status', 'SUCCESS')
             ->whereIn('pay_category', $orderCategory)
             ->sum('pay_amount');
-        $todayRevenueOrderNbrModel = Db::select("select count(1) as total from (select join_pay_order_id from app_pay_detail where 
+        $todayRevenueOrderNbrModel = Db::select("select count(1) as total from (select join_pay_order_id,JSON_EXTRACT(join_pay_object_json,'$.order_id') as order_id from app_pay_detail where 
                                                                        CAST(UNIX_TIMESTAMP(pay_paytimes) as SIGNED) >= {$todayTimeUnix} 
                                                                         and pay_status = 'SUCCESS' 
                                                                         and pay_category in ({$orderCategoryStr})
-                                                                       group by join_pay_order_id) count");
+                                                                       group by join_pay_order_id,order_id) count");
         $statistics['todayRevenueOrderNbr'] = $todayRevenueOrderNbrModel[0]->total;
         // 昨日收入
         $statistics['yesterdayRevenue'] = PayDetail::whereRaw('CAST(UNIX_TIMESTAMP(pay_paytimes) as SIGNED) >= ? and CAST(UNIX_TIMESTAMP(pay_paytimes) as SIGNED) <= ?', [$yesterdayStart, $yesterdayEnd])
             ->where('pay_status', 'SUCCESS')
             ->whereIn('pay_category', $orderCategory)
             ->sum('pay_amount');
-        $yesterdayRevenueOrderNbrModel = Db::select("select count(1) as total from (select join_pay_order_id from app_pay_detail where 
+        $yesterdayRevenueOrderNbrModel = Db::select("select count(1) as total from (select join_pay_order_id,JSON_EXTRACT(join_pay_object_json,'$.order_id') as order_id from app_pay_detail where 
                                                                        CAST(UNIX_TIMESTAMP(pay_paytimes) as SIGNED) >= {$yesterdayStart} and CAST(UNIX_TIMESTAMP(pay_paytimes) as SIGNED) <= {$yesterdayEnd} 
                                                                         and pay_status = 'SUCCESS' 
                                                                         and pay_category in ({$orderCategoryStr})
-                                                                       group by join_pay_order_id) count");
+                                                                       group by join_pay_order_id,order_id) count");
         $statistics['yesterdayRevenueOrderNbr'] = $yesterdayRevenueOrderNbrModel[0]->total;
 
         // 本月收入
@@ -55,11 +61,11 @@ class StatisticsController
             ->where('pay_status', 'SUCCESS')
             ->whereIn('pay_category', $orderCategory)
             ->sum('pay_amount');
-        $monthRevenueOrderNbrModel = Db::select("select count(1) as total from (select join_pay_order_id from app_pay_detail where 
+        $monthRevenueOrderNbrModel = Db::select("select count(1) as total from (select join_pay_order_id,JSON_EXTRACT(join_pay_object_json,'$.order_id') as order_id from app_pay_detail where 
                                                                        CAST(UNIX_TIMESTAMP(pay_paytimes) as SIGNED) >= {$monthStart} and CAST(UNIX_TIMESTAMP(pay_paytimes) as SIGNED) <= {$monthEnd} 
                                                                         and pay_status = 'SUCCESS' 
                                                                         and pay_category in ({$orderCategoryStr})
-                                                                       group by join_pay_order_id) count");
+                                                                       group by join_pay_order_id,order_id) count");
         $statistics['monthRevenueOrderNbr'] = $monthRevenueOrderNbrModel[0]->total;
         // 累计收入
 //        $statistics['totalRevenue'] = PayDetail::where('pay_status', 'SUCCESS')
@@ -84,8 +90,13 @@ class StatisticsController
 
         if (in_array('MEALS',$orderCategory)){
             // 挂账
-            $awaitingModel = Db::select("select SUM(order_amount_pay) as amount, count(1) as total from app_order where order_status_payment = 'AWAITING'");
-            dump($awaitingModel);
+            $sql = "select SUM(order_amount_pay) as amount, count(1) as total from app_order where order_status_payment = 'AWAITING'";
+            if (!empty($searchTime)){
+                $sql .= " and order_addtimes > {$searchTime[0]} and order_addtimes < $searchTime[1]";
+            }
+            $awaitingModel = Db::select($sql);
+            $statistics['awaitingRevenue'] = $awaitingModel[0]->amount;
+            $statistics['awaitingRevenueOrderNbr'] = $awaitingModel[0]->total;
         }
 
         return json_success('success', $statistics);