Pārlūkot izejas kodu

基于微服务接口重构客户端用户详情页

chenlong 4 gadi atpakaļ
vecāks
revīzija
0a4afcb02a

+ 1 - 1
app/Http/Controllers/Auth/LoginController.php

@@ -64,7 +64,7 @@ class LoginController extends Controller
         $credentials = $request->only('email', 'password');
         if ($token = auth()->login($credentials)) {
             $this->clearLoginAttempts($request);
-            return redirect()->route('user.profile')->cookie('jwt_token', $token);
+            return redirect()->route('accounts')->cookie('jwt_token', $token);
         }
 
         $this->incrementLoginAttempts($request);

+ 1 - 1
app/Http/Controllers/Auth/RegisterController.php

@@ -50,7 +50,7 @@ class RegisterController extends Controller
         $data = $request->except('_method', '_token');
         if ($user = $this->create($data)) {
             $token = Auth::login($data);
-            return redirect()->route('user.profile')->cookie('jwt_token', $token);
+            return redirect()->route('accounts')->cookie('jwt_token', $token);
         } else {
             throw new AuthenticationException('注册失败,请重试');
         }

+ 12 - 47
app/Http/Controllers/Front/AccountsController.php

@@ -1,31 +1,15 @@
 <?php
-
 namespace App\Http\Controllers\Front;
 
-use App\Shop\Couriers\Repositories\Interfaces\CourierRepositoryInterface;
-use App\Shop\Customers\Repositories\CustomerRepository;
-use App\Shop\Customers\Repositories\Interfaces\CustomerRepositoryInterface;
+use App\Services\Customer\UserService;
 use App\Http\Controllers\Controller;
 use App\Shop\Orders\Order;
 use App\Shop\Orders\Transformers\OrderTransformable;
 
-use App\MicroApi\Services\UserService;
-use Illuminate\Http\Request;
-
 class AccountsController extends Controller
 {
     use OrderTransformable;
 
-    /**
-     * @var CustomerRepositoryInterface
-     */
-    private $customerRepo;
-
-    /**
-     * @var CourierRepositoryInterface
-     */
-    private $courierRepo;
-
     /**
      * @var UserService
      */
@@ -34,50 +18,31 @@ class AccountsController extends Controller
     /**
      * AccountsController constructor.
      *
-     * @param CourierRepositoryInterface $courierRepository
-     * @param CustomerRepositoryInterface $customerRepository
      * @param UserService $userService
      */
-    public function __construct(
-        CourierRepositoryInterface $courierRepository,
-        CustomerRepositoryInterface $customerRepository,
-        UserService $userService
-    ) {
-        $this->customerRepo = $customerRepository;
-        $this->courierRepo = $courierRepository;
+    public function __construct(UserService $userService)
+    {
         $this->userService = $userService;
     }
 
     public function index()
     {
-        $customer = $this->customerRepo->findCustomerById(auth()->user()->id);
-
-        $customerRepo = new CustomerRepository($customer);
-        $orders = $customerRepo->findOrders(['*'], 'created_at');
+        // 用户信息
+        $user = auth()->user();
 
+        // 分页订单信息
+        $orders = $this->userService->getPaginatedOrdersByUserId($user->id);
         $orders->transform(function (Order $order) {
             return $this->transformOrder($order);
         });
 
-        $orders->load('products');
-
-        $addresses = $customerRepo->findAddresses();
+        // 地址信息
+        $addresses = $this->userService->getAddressesByUserId($user->id);
 
         return view('front.accounts', [
-            'customer' => $customer,
-            'orders' => $this->customerRepo->paginateArrayResults($orders->toArray(), 15),
+            'customer' => $user,
+            'orders' => $orders,
             'addresses' => $addresses
         ]);
     }
-
-    public function profile(Request $request)
-    {
-        dd($request->user());
-        $token = $request->cookie('jwt-token');
-        if (empty($token) || !$this->userService->isAuth($token)) {
-            return '尚未登录';
-        }
-        $user = session(md5($token));
-        dd($user);
-    }
-}
+}

+ 1 - 0
app/MicroApi/Items/UserItem.php

@@ -33,6 +33,7 @@ class UserItem implements Authenticatable, CanResetPasswordContract
             if (in_array($key, $this->hidden)) {
                 continue;
             }
+            $key = strtolower($key);
             switch ($key) {
                 case 'id':
                     $this->id = $value;

+ 40 - 0
app/Services/Customer/UserService.php

@@ -0,0 +1,40 @@
+<?php
+namespace App\Services\Customer;
+
+use App\MicroApi\Items\UserItem;
+use App\Shop\Addresses\Address;
+use App\Shop\Orders\Order;
+use Illuminate\Contracts\Auth\UserProvider;
+
+class UserService
+{
+    /**
+     * @var UserProvider
+     */
+    protected $provider;
+
+    public function __construct()
+    {
+        $this->provider = app('auth')->createUserProvider('micro_user');
+    }
+
+    public function getById(int $id): UserItem
+    {
+        return $this->provider->retrieveById($id);
+    }
+
+    public function getByEmail(string $email): UserItem
+    {
+        return $this->provider->retrieveByCredentials(['email' => $email]);
+    }
+
+    public function getPaginatedOrdersByUserId($uid, $perPage = 15, $columns = ['*'], $orderBy = 'id')
+    {
+        return Order::select($columns)->where('customer_id', $uid)->orderBy($orderBy, 'desc')->paginate($perPage);
+    }
+
+    public function getAddressesByUserId($uid, $columns = ['*'], $orderBy = 'id')
+    {
+        return Address::select($columns)->where('customer_id', $uid)->orderBy($orderBy, 'desc')->get();
+    }
+}

+ 1 - 1
routes/web.php

@@ -89,7 +89,7 @@ Route::namespace('Front')->group(function () {
         });
 
         Route::get('accounts', 'AccountsController@index')->name('accounts');
-        Route::get('profile', 'AccountsController@profile')->name('user.profile');
+        //Route::get('profile', 'AccountsController@profile')->name('user.profile');
         Route::get('checkout', 'CheckoutController@index')->name('checkout.index');
         Route::post('checkout', 'CheckoutController@store')->name('checkout.store');
         Route::get('checkout/execute', 'CheckoutController@executePayPalPayment')->name('checkout.execute');