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(); + } + }