From b16e95800d187f678b3cec7859a886ce41f4e183 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E5=BB=BA=E7=82=8A?= <924182103@qq.com> Date: Fri, 9 Aug 2024 17:17:32 +0800 Subject: [PATCH] =?UTF-8?q?=E9=B2=9C=E8=8A=B12.0-=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E6=B5=8B=E8=AF=95bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Services/Service/SaleDataService.php | 45 +++++++++++++++++++----- 1 file changed, 36 insertions(+), 9 deletions(-) diff --git a/app/Services/Service/SaleDataService.php b/app/Services/Service/SaleDataService.php index 7aebff9..969bc5a 100644 --- a/app/Services/Service/SaleDataService.php +++ b/app/Services/Service/SaleDataService.php @@ -43,6 +43,7 @@ class SaleDataService , DB::raw("sum(goods_number-already_cancel_number) as goods_total") , DB::raw("ROUND(sum(goods_amount) / 100,2) as goods_total_amount")) ->whereBetween("business_order_items.created_at", [$startTime, $endTime]) + ->where("external_sku_id", "!=","") ->where("business_order_items.cancel_status", "=", 0) ->groupBy('external_sku_id') ->orderBy("goods_total", "DESC") @@ -158,6 +159,7 @@ class SaleDataService , DB::raw("sum(goods_number-already_cancel_number) as goods_total") , DB::raw("ROUND(sum(goods_amount) / 100,2) as goods_total_amount")) ->whereBetween("business_order_items.created_at", [$startTime, $endTime]) + ->where("external_sku_id", "!=","") ->where("business_order_items.cancel_status", "=", 0) ->groupBy('external_sku_id')->get()->toArray(); $externalSkuIds = collect($orderItems)->pluck("external_sku_id")->toArray(); @@ -244,15 +246,40 @@ class SaleDataService public static function gmvStatistics(Request $request) { - //gmv 目前只统计历史数据 后续看看是否需要拓展 - $startTime = Carbon::parse($request->input("start_day"))->toDateTimeString(); - $endTime = Carbon::parse($request->input("end_day"))->endOfDay()->toDateTimeString(); - return DailyStockRecord::query() - ->select("day", DB::raw("sum(order_total_amount) as goods_total_amount") - , DB::raw("sum(order_goods_num) as goods_total")) - ->whereBetween("created_at", [$startTime, $endTime]) - ->groupBy("day")->orderBy("day") - ->get()->toArray(); + if (StaticTypeEnum::TODAY == $request->type) { + $startTime = Carbon::parse($request->input("start_day"))->startOfDay()->toDateTimeString(); + $endTime = Carbon::parse($request->input("end_day"))->endOfDay()->toDateTimeString(); + $orderItems = BusinessOrderItem::query() + ->select("business_order_items.external_sku_id", "goods_number", "already_cancel_number", "goods_amount", "created_at") + ->whereBetween("business_order_items.created_at",[$startTime,$endTime]) + ->where("business_order_items.cancel_status", "=", 0) + ->get()->toArray(); + $interval = $request->input("interval", 30); + return collect($orderItems)->groupBy(function ($v) use ($startTime, $interval) { + $diff = Carbon::parse($v['created_at'])->diffInMinutes(Carbon::parse($startTime)); + return (int)floor($diff / $interval); + })->map(function ($v, $key) use ($startTime, $interval) { + return [ + "sort_key" => $key, + "interval" => $interval, + "time_start" => Carbon::parse($startTime)->addMinutes($key * $interval)->toTimeString(), + "time_end" => Carbon::parse($startTime)->addMinutes(($key + 1) * $interval)->toTimeString(), + "goods_total" => $v->sum("goods_number") - $v->sum("already_cancel_number"), + "goods_total_amount" => round($v->sum("goods_amount")/100,2), + ]; + })->sort()->values()->toArray(); + } else { + //gmv 目前只统计历史数据 后续看看是否需要拓展 + $startTime = Carbon::parse($request->input("start_day"))->toDateTimeString(); + $endTime = Carbon::parse($request->input("end_day"))->endOfDay()->toDateTimeString(); + return DailyStockRecord::query() + ->select("day", DB::raw("sum(order_total_amount) as goods_total_amount") + , DB::raw("sum(order_goods_num) as goods_total")) + ->whereBetween("created_at", [$startTime, $endTime]) + ->groupBy("day")->orderBy("day") + ->get()->toArray(); + } + }