6
0
Fork 0

订单数据统计

release
李静 2021-12-16 17:30:54 +08:00
parent 0ffac31495
commit fed5181dc8
2 changed files with 43 additions and 1 deletions

View File

@ -0,0 +1,40 @@
<?php
namespace App\Endpoint\Api\Http\Controllers\Order;
use App\Endpoint\Api\Http\Controllers\Controller;
use App\Models\Order;
use Illuminate\Http\Request;
class StatisticsController extends Controller
{
/**
* 订单统计
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\JsonResponse
*/
public function __invoke(Request $request)
{
$user = $request->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),
]);
}
}

View File

@ -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);
});
});