Ken 7 小時之前
父節點
當前提交
2ae6fba212
共有 2 個文件被更改,包括 14 次插入9 次删除
  1. 6 1
      app/Http/Controllers/admin/User.php
  2. 8 8
      app/Services/UserService.php

+ 6 - 1
app/Http/Controllers/admin/User.php

@@ -67,8 +67,13 @@ class User extends Controller
                 'like_first_name' => ['nullable', 'string', 'min:1'],
                 'username' => ['nullable', 'string', 'min:1'],
                 'register_ip' => ['nullable', 'string', 'min:1'],
+                'order' => ["nullable", 'string', "in:asc,desc"],
+                'by' => ['nullable', 'string', "in:available_balance,created_at"],
             ]);
-            $result = UserService::paginate($search);
+            $order = request()->input('order', 'created_at');
+            $by = request()->input('by', 'desc');
+
+            $result = UserService::paginate($search,$order,$by);
         } catch (ValidationException $e) {
             return $this->error(HttpStatus::CUSTOM_ERROR, $e->validator->errors()->first());
         } catch (Exception $e) {

+ 8 - 8
app/Services/UserService.php

@@ -93,17 +93,17 @@ class UserService extends BaseService
      * @param array $search
      * @return \Illuminate\Contracts\Pagination\LengthAwarePaginator
      */
-    public static function paginate(array $search = [])
+    public static function paginate(array $search = [], $order = 'created_at', $by = 'desc')
     {
-
-
-
         $limit = isset($search['limit']) ? $search['limit'] : 15;
-        $paginator = static::$MODEL::with(['wallet'])
+        $query = static::$MODEL::with(['wallet'])
             ->join('wallets', 'users.member_id', '=', 'wallets.member_id')
-            ->where(self::getWhere($search))
-            ->orderByDesc('wallets.available_balance')
-            ->orderByDesc('users.created_at')
+            ->where(self::getWhere($search));
+        if ($order == 'available_balance') $order = "wallets.{$order}";
+        else {
+            $order = "users.{$order}";
+        }
+        $paginator = $query->orderBy($order, $by)
             ->select("users.*")
             ->paginate($limit);
         return ['total' => $paginator->total(), 'data' => $paginator->items()];