diff --git a/beike/Repositories/OrderRepo.php b/beike/Repositories/OrderRepo.php index 10633826..9b9328e5 100644 --- a/beike/Repositories/OrderRepo.php +++ b/beike/Repositories/OrderRepo.php @@ -11,13 +11,40 @@ namespace Beike\Repositories; -use Beike\Models\Customer; -use Beike\Models\Order; use Carbon\Carbon; -use http\Client; +use Beike\Models\Order; +use Illuminate\Contracts\Pagination\LengthAwarePaginator; +use Illuminate\Database\Eloquent\Builder; class OrderRepo { + /** + * 获取订单列表 + * + * @param null $customer + * @return LengthAwarePaginator + */ + public static function getListByCustomer($customer): LengthAwarePaginator + { + $builder = self::getListBuilder($customer); + return $builder->paginate(); + } + + + /** + * @param null $customer + * @return Builder + */ + private static function getListBuilder($customer = null): Builder + { + $builder = Order::query(); + if ($customer) { + $builder->where('customer_id', $customer->id); + } + return $builder; + } + + /** * @param array $data * @return Order diff --git a/beike/Shop/Http/Controllers/Account/OrderController.php b/beike/Shop/Http/Controllers/Account/OrderController.php new file mode 100644 index 00000000..86ae36fd --- /dev/null +++ b/beike/Shop/Http/Controllers/Account/OrderController.php @@ -0,0 +1,37 @@ + + * @created 2022-07-05 10:29:07 + * @modified 2022-07-05 10:29:07 + */ + +namespace Beike\Shop\Http\Controllers\Account; + +use Illuminate\Http\Request; +use Beike\Repositories\OrderRepo; +use Illuminate\Contracts\View\View; +use Beike\Shop\Http\Controllers\Controller; +use Beike\Shop\Http\Resources\Account\OrderList; + +class OrderController extends Controller +{ + /** + * 获取当前客户订单列表 + * + * @param Request $request + * @return View + */ + public function index(Request $request): View + { + $orders = OrderRepo::getListByCustomer(current_customer()); + $data = [ + 'orders' => OrderList::collection($orders), + ]; + + return view('account/order', $data); + } +} diff --git a/beike/Shop/Http/Resources/Account/OrderList.php b/beike/Shop/Http/Resources/Account/OrderList.php new file mode 100644 index 00000000..c3f02c22 --- /dev/null +++ b/beike/Shop/Http/Resources/Account/OrderList.php @@ -0,0 +1,27 @@ + + * @created 2022-07-05 10:39:55 + * @modified 2022-07-05 10:39:55 + */ + +namespace Beike\Shop\Http\Resources\Account; + +use Illuminate\Http\Resources\Json\JsonResource; + +class OrderList extends JsonResource +{ + public function toArray($request): array + { + $data = [ + 'id' => $this->id, + 'number' => $this->number, + ]; + + return $data; + } +} diff --git a/beike/Shop/Routes/shop.php b/beike/Shop/Routes/shop.php index ad65e48e..a5b07b23 100644 --- a/beike/Shop/Routes/shop.php +++ b/beike/Shop/Routes/shop.php @@ -2,6 +2,7 @@ use Beike\Models\Customer; use Beike\Shop\Http\Controllers\Account\AddressController; +use Beike\Shop\Http\Controllers\Account\OrderController; use Beike\Shop\Http\Controllers\ZoneController; use Illuminate\Support\Facades\Route; use Beike\Shop\Http\Controllers\CartController; @@ -48,12 +49,13 @@ Route::prefix('/') Route::post('checkout/confirm', [CheckoutController::class, 'confirm'])->name('checkout.confirm'); }); - Route::prefix('account/') + Route::prefix('account') ->middleware('shop_auth:' . Customer::AUTH_GUARD) ->group(function () { Route::get('/', [AccountController::class, 'index'])->name('account.index'); - Route::resource('addresses', AddressController::class); + + Route::get('orders', [OrderController::class, 'index'])->name('account.order.index'); }); }); diff --git a/themes/default/account/order.blade.php b/themes/default/account/order.blade.php new file mode 100644 index 00000000..870cd486 --- /dev/null +++ b/themes/default/account/order.blade.php @@ -0,0 +1,10 @@ +@extends('layout.master') + +@section('content') +