From abd9f40165f13b7d77e8e66c3e7ee158ed0b98e0 Mon Sep 17 00:00:00 2001 From: chenbo <709206448@qq.com> Date: Tue, 5 Dec 2023 13:51:14 +0800 Subject: [PATCH] =?UTF-8?q?add=20=E7=AC=AC=E4=BA=8C=E9=A1=B5=E6=97=B6?= =?UTF-8?q?=E9=97=B4=E8=8C=83=E5=9B=B4=E8=AE=A2=E5=8D=95=E7=BB=9F=E8=AE=A1?= =?UTF-8?q?=E6=9D=A1=E7=8A=B6=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controller/api/dataview/Order.php | 125 ++++++++++++++++++++++++++ route/api.php | 3 + 2 files changed, 128 insertions(+) diff --git a/app/controller/api/dataview/Order.php b/app/controller/api/dataview/Order.php index 1a0cc34a..0a4d878b 100755 --- a/app/controller/api/dataview/Order.php +++ b/app/controller/api/dataview/Order.php @@ -214,4 +214,129 @@ class Order extends BaseController return app('json')->success(compact('townList')); } + + // 第二页 时间段订单统计 + public function dateRangeOrderCount() + { + $list = []; + // 00:00-02:00 + $startTime0 = strtotime(date('Y-m-d', time())); + $endTime2 = strtotime(date('Y-m-d 02:00:00')); + $list[] = $this->getTimeRangeOrderCount([$startTime0, $endTime2]); + + // 02:00-04:00 + $startTime2 = strtotime(date('Y-m-d 02:00:00')); + $endTime4 = strtotime(date('Y-m-d 04:00:00')); + $list[] = $this->getTimeRangeOrderCount([$startTime2, $endTime4]); + + // 04:00-06:00 + $startTime4 = strtotime(date('Y-m-d 04:00:00')); + $endTime6 = strtotime(date('Y-m-d 06:00:00')); + $list[] = $this->getTimeRangeOrderCount([$startTime4, $endTime6]); + + // 06:00-08:00 + $startTime6 = strtotime(date('Y-m-d 06:00:00')); + $endTime8 = strtotime(date('Y-m-d 08:00:00')); + $list[] = $this->getTimeRangeOrderCount([$startTime6, $endTime8]); + + // 08:00-10:00 + $startTime8 = strtotime(date('Y-m-d 08:00:00')); + $endTime10 = strtotime(date('Y-m-d 10:00:00')); + $list[] = $this->getTimeRangeOrderCount([$startTime8, $endTime10]); + + // 10:00-12:00 + $startTime10 = strtotime(date('Y-m-d 10:00:00')); + $endTime12 = strtotime(date('Y-m-d 12:00:00')); + $list[] = $this->getTimeRangeOrderCount([$startTime10, $endTime12]); + + // 12:00-14:00 + $startTime12 = strtotime(date('Y-m-d 12:00:00')); + $endTime14 = strtotime(date('Y-m-d 14:00:00')); + $list[] = $this->getTimeRangeOrderCount([$startTime12, $endTime14]); + + // 14:00-16:00 + $startTime14 = strtotime(date('Y-m-d 14:00:00')); + $endTime16 = strtotime(date('Y-m-d 16:00:00')); + $list[] = $this->getTimeRangeOrderCount([$startTime14, $endTime16]); + + // 16:00-18:00 + $startTime16 = strtotime(date('Y-m-d 16:00:00')); + $endTime18 = strtotime(date('Y-m-d 18:00:00')); + $list[] = $this->getTimeRangeOrderCount([$startTime16, $endTime18]); + + // 18:00-20:00 + $startTime18 = strtotime(date('Y-m-d 18:00:00')); + $endTime20 = strtotime(date('Y-m-d 20:00:00')); + $list[] = $this->getTimeRangeOrderCount([$startTime18, $endTime20]); + + // 20:00-22:00 + $startTime20 = strtotime(date('Y-m-d 20:00:00')); + $endTime22 = strtotime(date('Y-m-d 22:00:00')); + $list[] = $this->getTimeRangeOrderCount([$startTime20, $endTime22]); + + // 22:00-24:00 + $startTime22 = strtotime(date('Y-m-d 22:00:00')); + $endTime24 = strtotime(date('Y-m-d 24:00:00')); + $list[] = $this->getTimeRangeOrderCount([$startTime22, $endTime24]); + halt($list); + return app('json')->success($list); + } + private function getTimeRangeOrderCount($timeRange) + { + $hourOrderCountQuery = Db::name('store_order')->alias('o') + ->field(['o.order_sn', 'o.real_name', 'o.user_phone', 'o.user_address', 'o.user_address_code', 'p.store_name', 'm.mer_name', 'o.create_time', 'o.status']) + ->leftJoin('product_order_log og', 'o.order_id = og.order_id') + ->leftJoin('merchant m', 'o.mer_id = m.mer_id') + ->leftJoin('store_order_product op', 'o.order_id = op.order_id') + ->leftJoin('product_library p', 'op.product_id = p.id') + ->whereTime('og.create_time', 'between', $timeRange) // whereTime('create_time', 'between', [$a[0],$a[1]]); + ->where('o.paid', 1) + ->whereNotNull('o.pay_time'); + + // 待取货订单数统计query 订单待发货 + $pendingPickupOrderCountQuery = Db::name('store_order')->alias('o') + ->leftJoin('product_order_log og', 'o.order_id = og.order_id') + ->whereTime('og.create_time', 'between', $timeRange) + ->where('o.status', 0) + ->where('o.paid', 1) + ->whereNotNull('o.pay_time');; + + // 未配送订单数统计query 订单待收货 + $undeliveredOrderCountQuery = Db::name('store_order')->alias('o') + ->leftJoin('product_order_log og', 'o.order_id = og.order_id') + ->whereTime('og.create_time', 'between', $timeRange) + ->where('o.status', 1) + ->where('o.paid', 1) + ->whereNotNull('o.pay_time');; + + // 已完成订单数统计query 订单已完成 + $doneOrderCountQuery = Db::name('store_order')->alias('o') + ->leftJoin('product_order_log og', 'o.order_id = og.order_id') + ->whereTime('og.create_time', 'between', $timeRange) + ->whereIn('o.status', [2,3]) + ->where('o.paid', 1) + ->whereNotNull('o.pay_time'); + + if ($this->areaCode != '') { + $hourOrderCountQuery->where('og.district_code', $this->areaCode); + $pendingPickupOrderCountQuery->where('og.district_code', $this->areaCode); + $undeliveredOrderCountQuery->where('og.district_code', $this->areaCode); + $doneOrderCountQuery->where('og.district_code', $this->areaCode); + } else if ($this->streetCode != '') { + $hourOrderCountQuery->where('og.street_code', $this->streetCode); + $pendingPickupOrderCountQuery->where('og.street_code', $this->streetCode); + $undeliveredOrderCountQuery->where('og.street_code', $this->streetCode); + $doneOrderCountQuery->where('og.street_code', $this->streetCode); + } + + // 今日订单数 + $hourOrderCount = $hourOrderCountQuery->count(); + // 待取货订单数 + $pendingOrderCount = $pendingPickupOrderCountQuery->count(); + // 未配送订单数 + $undeliveredOrderCount = $undeliveredOrderCountQuery->count(); + // 已完成订单数 + $doneOrderCount = $doneOrderCountQuery->count(); + return compact('hourOrderCount', 'pendingOrderCount', 'undeliveredOrderCount', 'doneOrderCount'); + } } \ No newline at end of file diff --git a/route/api.php b/route/api.php index 6b0e83f7..9d8cc573 100644 --- a/route/api.php +++ b/route/api.php @@ -721,6 +721,9 @@ Route::group('api/', function () { Route::get('order_ranking', 'Order/orderRanking'); Route::get('delivered_product_ranking', 'Order/deliveredProductRanking'); Route::get('town_map_count', 'Order/townMapCount'); + Route::get('date_range_order_count', 'Order/dateRangeOrderCount'); + + Route::get('vehicle_list', 'Logistics/vehicleList'); Route::get('latest_logistics', 'Logistics/latestLogistics'); Route::get('logistics_count', 'Logistics/logisticsCount');