diff --git a/beike/Repositories/OrderRepo.php b/beike/Repositories/OrderRepo.php index 9a008436..1565e7a3 100644 --- a/beike/Repositories/OrderRepo.php +++ b/beike/Repositories/OrderRepo.php @@ -44,6 +44,20 @@ class OrderRepo } + /** + * @param $customer + * @param $limit + * @return mixed + */ + public static function getLatestOrders($customer, $limit) + { + return self::getListBuilder(['customer' => $customer]) + ->orderByDesc('created_at') + ->take($limit) + ->get(); + } + + /** * @param array $filters * @return LengthAwarePaginator diff --git a/beike/Shop/Http/Controllers/Account/AccountController.php b/beike/Shop/Http/Controllers/Account/AccountController.php index 301b5964..9e2a765c 100644 --- a/beike/Shop/Http/Controllers/Account/AccountController.php +++ b/beike/Shop/Http/Controllers/Account/AccountController.php @@ -11,34 +11,38 @@ namespace Beike\Shop\Http\Controllers\Account; -use Beike\Models\Customer; -use Beike\Repositories\CustomerRepo; +use Beike\Repositories\OrderRepo; use Illuminate\Support\Facades\Hash; -use Beike\Shop\Http\Requests\EditRequest; +use Beike\Repositories\CustomerRepo; use Beike\Shop\Http\Controllers\Controller; use Beike\Shop\Http\Requests\ForgottenRequest; +use Beike\Shop\Http\Resources\CustomerResource; +use Beike\Shop\Http\Resources\Account\OrderList; class AccountController extends Controller { /** * 个人中心首页 - * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View + * @return mixed * @throws \Exception */ public function index() { - $data = current_customer()->toArray(); - $data['avatar'] = image_resize($data['avatar']); + $customer = current_customer(); + $data = [ + 'customer' => new CustomerResource($customer), + 'latest_orders' => OrderList::collection(OrderRepo::getLatestOrders($customer, 10)), + ]; return view('account/account', $data); } /** - * 修改密码,提交"origin_password"、"password", "password_confirmation", 验证新密码和确认密码相等,且原密码正确则修改密码 + * 修改密码,提交 "origin_password"、"password", "password_confirmation", 验证新密码和确认密码相等,且原密码正确则修改密码 * @param ForgottenRequest $request * @return array * @throws \Exception */ - public function updatePassword(ForgottenRequest $request) + public function updatePassword(ForgottenRequest $request): array { if (Hash::make($request->get('origin_password')) != current_customer()->getAuthPassword()) { throw new \Exception("原密码错误"); diff --git a/beike/Shop/Http/Resources/CustomerResource.php b/beike/Shop/Http/Resources/CustomerResource.php index 62193e0f..03cf4f49 100644 --- a/beike/Shop/Http/Resources/CustomerResource.php +++ b/beike/Shop/Http/Resources/CustomerResource.php @@ -2,6 +2,7 @@ namespace Beike\Shop\Http\Resources; +use Illuminate\Http\Request; use Illuminate\Http\Resources\Json\JsonResource; class CustomerResource extends JsonResource @@ -9,12 +10,13 @@ class CustomerResource extends JsonResource /** * Transform the resource into an array. * - * @param \Illuminate\Http\Request $request - * @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable + * @param Request $request + * @return array + * @throws \Exception */ - public function toArray($request) + public function toArray($request): array { - $data = [ + return [ 'id' => $this->id, 'name' => $this->name, 'email' => $this->email, @@ -23,7 +25,5 @@ class CustomerResource extends JsonResource 'from' => $this->from, 'customer_group_name' => $this->customer_group_name, ]; - - return $data; } } diff --git a/beike/Shop/View/Components/AccountSidebar.php b/beike/Shop/View/Components/AccountSidebar.php index 46233288..9cb42d1f 100644 --- a/beike/Shop/View/Components/AccountSidebar.php +++ b/beike/Shop/View/Components/AccountSidebar.php @@ -2,9 +2,8 @@ namespace Beike\Shop\View\Components; -use Beike\Models\Customer; -use Illuminate\Contracts\View\View; use Illuminate\View\Component; +use Illuminate\Contracts\View\View; class AccountSidebar extends Component { @@ -27,6 +26,9 @@ class AccountSidebar extends Component */ public function render(): View { - return view('components.account.sidebar', ['customer' => $this->customer]); + $data = [ + 'customer' => $this->customer, + ]; + return view('components.account.sidebar', $data); } } diff --git a/themes/default/account/account.blade.php b/themes/default/account/account.blade.php index a93c4954..00f07d2c 100644 --- a/themes/default/account/account.blade.php +++ b/themes/default/account/account.blade.php @@ -59,6 +59,39 @@