Browse Source

用户添加通过name模糊查询,把asset和department的Index查询时查出所有数据

kely 10 months ago
parent
commit
73b2bf4bdf

+ 1 - 1
app/Http/Controllers/API/AssetController.php

@@ -21,7 +21,7 @@ class AssetController extends Controller
     {
         $pageSize=$request->get('page_size') ?? 10;
         $assets = Asset::filter($request->all())
-            ->where("parent_id", 0)
+//            ->where("parent_id", 0)
             ->where('company_id',Auth::user()->company_id)
             ->with(['children','children.children'])
             ->paginate($pageSize);

+ 1 - 1
app/Http/Controllers/API/DepartmentController.php

@@ -15,7 +15,7 @@ class DepartmentController extends Controller
     public function index(Request $request)
     {
         $pageSize=$request->get('page_size') ?? 10;
-        $department=Department::filter($request->all())->where("parent_id",0)->with(['children'])->paginate($pageSize);
+        $department=Department::filter($request->all())->with(['children'])->paginate($pageSize);
 
         return DepartmentResource::collection($department);
     }

+ 7 - 4
app/Http/Controllers/API/UserController.php

@@ -8,6 +8,7 @@ use App\Http\Requests\API\User\BatchCreateRequest;
 use App\Http\Requests\API\User\CreateRequest;
 use App\Http\Requests\API\User\UpdateRequest;
 use App\Http\Resources\API\UserInfoResource;
+use App\Http\Resources\API\UserSimpleResource;
 use App\Models\Enums\RequirementStatus;
 use App\Models\Role;
 use App\Models\User;
@@ -43,14 +44,16 @@ class UserController extends Controller
         return $this->noContent();
     }
 
-    public function index(){
+    public function index(Request $request){
         //超管能看到所有用户
         if(Auth::user()->super_admin){
-            $user = User::all();
-            return UserInfoResource::collection($user);
+            $user = User::query()->filter($request->all())->paginate();
+            return UserSimpleResource::collection($user);
         }
         //普通管理员能看到自己公司的用户
-        $user=User::query()->where('company_id',Auth::user()->company_id);
+        $user=User::query()
+            ->where('company_id',Auth::user()->company_id)
+            ->filter($request->all()) ->paginate();
         return UserInfoResource::collection($user);
     }
 

+ 34 - 0
app/Http/Resources/API/UserSimpleResource.php

@@ -0,0 +1,34 @@
+<?php
+/**
+ * Created by IntelliJ IDEA.
+ * User: kelyliang
+ * Date: 2024/4/17
+ * Time: 下午 04:35
+ */
+
+namespace App\Http\Resources\API;
+
+
+use Illuminate\Http\Request;
+use Illuminate\Http\Resources\Json\JsonResource;
+
+class UserSimpleResource  extends JsonResource
+{
+    public function toArray(Request $request): array
+    {
+        return [
+            'id' => $this->id,
+            'name' => $this->name,
+            'email' => $this->email,
+            'username' => $this->username,
+            'phone' => $this->phone,
+            'gender' => $this->gender,
+            'created_at' => (string)$this->created_at,
+            'created_by' => new UserProfileResource($this->createdBy),
+            'company' => $this->company_id,
+            'department' =>$this->department_id,
+            'role' => $this->role_id,
+            'status' =>$this->status,
+        ];
+    }
+}

+ 22 - 0
app/ModelFilters/UserFilter.php

@@ -0,0 +1,22 @@
+<?php
+/**
+ * Created by IntelliJ IDEA.
+ * User: kelyliang
+ * Date: 2024/4/17
+ * Time: 下午 04:15
+ */
+
+namespace App\ModelFilters;
+
+
+use EloquentFilter\ModelFilter;
+
+class UserFilter extends ModelFilter
+{
+    public $relations = [];
+
+    public function name($name): ModelFilter
+    {
+        return $this->where('name', 'like', "%$name%");
+    }
+}

+ 2 - 1
app/Models/User.php

@@ -4,6 +4,7 @@ namespace App\Models;
 
 // use Illuminate\Contracts\Auth\MustVerifyEmail;
 use App\Models\Scopes\CompanyScope;
+use EloquentFilter\Filterable;
 use Illuminate\Database\Eloquent\Casts\Attribute;
 use Illuminate\Database\Eloquent\Factories\HasFactory;
 use Illuminate\Database\Eloquent\SoftDeletes;
@@ -14,7 +15,7 @@ use Spatie\Permission\Traits\HasRoles;
 
 class User extends Authenticatable
 {
-    use HasApiTokens, HasFactory, Notifiable, HasRoles, SoftDeletes;
+    use HasApiTokens, HasFactory, Notifiable, HasRoles, SoftDeletes,Filterable;
 
     protected string $guard_name = 'api';