diff --git a/app/Endpoint/Api/Http/Controllers/Order/StatisticsController.php b/app/Endpoint/Api/Http/Controllers/Order/StatisticsController.php new file mode 100644 index 00000000..3ac8303d --- /dev/null +++ b/app/Endpoint/Api/Http/Controllers/Order/StatisticsController.php @@ -0,0 +1,40 @@ +user(); + + // 如果有已过期的订单,则将过期订单的状态修改为已取消 + if ($user->orders()->expired()->count()) { + $user->orders()->expired()->update([ + 'status' => Order::STATUS_CANCELLED, + ]); + } + + $statistics = $user->orders() + ->selectRaw('count(1) as aggregate, status') + ->groupBy('status') + ->pluck('aggregate', 'status'); + + return response()->json([ + // 待付款订单数 + 'pending_orders_count' => $statistics->get(Order::STATUS_PENDING, 0), + // 待收货订单数 + 'unreceived_orders_count' => $statistics->get(Order::STATUS_PAID, 0) + $statistics->get(Order::STATUS_SHIPPED, 0), + ]); + } +} diff --git a/app/Endpoint/Api/routes.php b/app/Endpoint/Api/routes.php index 73bfe786..8f7671ec 100644 --- a/app/Endpoint/Api/routes.php +++ b/app/Endpoint/Api/routes.php @@ -14,6 +14,7 @@ use App\Endpoint\Api\Http\Controllers\ClickController; use App\Endpoint\Api\Http\Controllers\MessageController; use App\Endpoint\Api\Http\Controllers\Order\OrderController; use App\Endpoint\Api\Http\Controllers\Order\OrderVerifyController; +use App\Endpoint\Api\Http\Controllers\Order\StatisticsController; use App\Endpoint\Api\Http\Controllers\Product\HotController; use App\Endpoint\Api\Http\Controllers\Product\PartController; use App\Endpoint\Api\Http\Controllers\Product\ProductCategoryController; @@ -110,11 +111,12 @@ Route::group([ Route::post('click', [ClickController::class, 'click']); // 订单 + Route::get('order/statistics', StatisticsController::class); + Route::post('order/verify-order', OrderVerifyController::class); Route::apiResource('order/orders', OrderController::class)->only([ 'index', 'store', 'show', ]); Route::post('order/orders/{order}/confirm', [OrderController::class, 'confirm']); Route::post('order/orders/{order}/cancel', [OrderController::class, 'cancel']); - Route::post('order/verify-order', OrderVerifyController::class); }); });