diff --git a/beike/Admin/Http/Controllers/HomeController.php b/beike/Admin/Http/Controllers/HomeController.php index 73a9984b..0c612593 100644 --- a/beike/Admin/Http/Controllers/HomeController.php +++ b/beike/Admin/Http/Controllers/HomeController.php @@ -3,7 +3,8 @@ namespace Beike\Admin\Http\Controllers; use App\Http\Controllers\Controller; -use Beike\Repositories\DashboardRepo; +use Beike\Admin\Repositories\DashboardRepo; +use Beike\Admin\Repositories\Report\OrderReportRepo; class HomeController extends Controller { @@ -14,6 +15,11 @@ class HomeController extends Controller 'orders' => DashboardRepo::getOrderData(), 'customers' => DashboardRepo::getCustomerData(), 'order_totals' => DashboardRepo::getTotalData(), + 'order_trends' => [ + 'latest_month' => OrderReportRepo::getLatestMonth(), + 'latest_week' => '', + 'latest_year' => '', + ] ]; return view('admin::pages.home', $data); diff --git a/beike/Repositories/DashboardRepo.php b/beike/Admin/Repositories/DashboardRepo.php similarity index 93% rename from beike/Repositories/DashboardRepo.php rename to beike/Admin/Repositories/DashboardRepo.php index b626d556..00c64ef5 100644 --- a/beike/Repositories/DashboardRepo.php +++ b/beike/Admin/Repositories/DashboardRepo.php @@ -9,10 +9,11 @@ * @modified 2022-08-03 18:16:53 */ -namespace Beike\Repositories; +namespace Beike\Admin\Repositories; use Beike\Models\Product; -use Beike\Models\Customer; +use Beike\Repositories\OrderRepo; +use Beike\Repositories\CustomerRepo; class DashboardRepo { @@ -73,11 +74,6 @@ class DashboardRepo return [ 'total' => $today, 'percentage' => $percentage, - 'reports' => [ - 'latest_month' => '', - 'latest_week' => '', - 'latest_year' => '', - ] ]; } diff --git a/beike/Admin/Repositories/Report/OrderReportRepo.php b/beike/Admin/Repositories/Report/OrderReportRepo.php new file mode 100644 index 00000000..6917f3c2 --- /dev/null +++ b/beike/Admin/Repositories/Report/OrderReportRepo.php @@ -0,0 +1,30 @@ + + * @created 2022-08-05 14:33:49 + * @modified 2022-08-05 14:33:49 + */ + +namespace Beike\Admin\Repositories\Report; + + +use Beike\Models\Order; +use Beike\Repositories\OrderRepo; +use Illuminate\Support\Facades\DB; + +class OrderReportRepo +{ + public static function getLatestMonth() + { + $orders = OrderRepo::getListBuilder(['start' => today()->subDays(30), 'end' => today()->subDay()]) + ->select(DB::raw('DATE(created_at) as date'), DB::raw('count(*) as total')) + ->groupBy('date') + ->get() + ->keyBy('date'); + return $orders; + } +} diff --git a/beike/Repositories/OrderRepo.php b/beike/Repositories/OrderRepo.php index 1ca431bf..d7deb74e 100644 --- a/beike/Repositories/OrderRepo.php +++ b/beike/Repositories/OrderRepo.php @@ -26,7 +26,7 @@ class OrderRepo */ public static function getListAll(): LengthAwarePaginator { - $builder = self::getListBuilder(); + $builder = self::getListBuilder()->orderByDesc('created_at'); return $builder->paginate(); } @@ -39,7 +39,7 @@ class OrderRepo */ public static function getListByCustomer($customer): LengthAwarePaginator { - $builder = self::getListBuilder(['customer' => $customer]); + $builder = self::getListBuilder(['customer' => $customer])->orderByDesc('created_at'); return $builder->paginate(); } @@ -50,7 +50,7 @@ class OrderRepo */ public static function filterOrders(array $filters = []): LengthAwarePaginator { - $builder = self::getListBuilder($filters); + $builder = self::getListBuilder($filters)->orderByDesc('created_at'); return $builder->paginate(); } @@ -61,7 +61,7 @@ class OrderRepo */ public static function getListBuilder(array $filters = []): Builder { - $builder = Order::query()->orderByDesc('created_at'); + $builder = Order::query(); $customer = $filters['customer'] ?? null; if ($customer) {