kphcdr 1 سال پیش
والد
کامیت
99d2916cd8

+ 24 - 0
app/Modules/Admin/Controllers/Admin/CommonController.php

@@ -0,0 +1,24 @@
+<?php
+
+namespace App\Modules\Admin\Controllers\Admin;
+
+use App\Base\BaseController;
+use App\Models\Auth\AdminGroup;
+use App\Modules\Admin\Services\UserService;
+
+class CommonController extends BaseController
+{
+    public function groupMap()
+    {
+        $group = AdminGroup::all();
+
+        return $this->ok([
+            "list" => $group->map(function (AdminGroup $m) {
+                return [
+                    "id" => $m->id,
+                    "name" => $m->name,
+                ];
+            }),
+        ]);
+    }
+}

+ 11 - 0
app/Modules/Admin/Controllers/Admin/UserController.php

@@ -34,4 +34,15 @@ class UserController extends BaseController
         return $this->ok($this->service->changeStatus($data));
     }
 
+    public function saveSetting()
+    {
+        $data = $this->valid([
+            "id" => "required",
+            "password" => "",
+            "group_id" => "required",
+        ]);
+
+        return $this->ok($this->service->saveSetting($data));
+    }
+
 }

+ 27 - 1
app/Modules/Admin/Services/UserService.php

@@ -2,13 +2,21 @@
 
 namespace App\Modules\Admin\Services;
 
+use App\Exceptions\ClientException;
 use App\Models\User;
+use Illuminate\Database\Eloquent\Builder;
 
 class UserService
 {
     public function paginate($data)
     {
-        $p = User::query()->orderByDesc("id")->paginate($data['page_size']);
+        $p = User::query()->with("group")->when($data['status'], function (Builder $query) use ($data) {
+            return $query->where("status", $data['status']);
+        })->when($data['userinfo'], function (Builder $query) use ($data) {
+            return $query->where(function (Builder $query) use ($data) {
+                return $query->where("phone", $data['userinfo'])->orWhere("email", $data['userinfo'])->orWhere("id", $data['userinfo']);
+            });
+        })->orderByDesc("id")->paginate($data['page_size']);
 
         return [
             "total" => $p->total(),
@@ -20,7 +28,11 @@ class UserService
                     "email" => $u->email,
                     "status" => $u->status,
                     "created_at" => $u->created_at->format("Y-m-d"),
+                    //@TODO kphcdr
                     "company" => "todo company",
+                    "group_id" => $u->group_id,
+                    "group_name" => $u->group->name,
+                    'permissions' => [],
                 ];
             }, $p->items()),
         ];
@@ -29,8 +41,22 @@ class UserService
     public function changeStatus($data)
     {
         $u = User::findOrFail($data['id']);
+        if ($u->id == \Auth::id()) {
+            throw new ClientException("你不能禁用自己的账号");
+        }
         $u->status = $u->status == User::STATUS_OK ? User::STATUS_STOP : User::STATUS_OK;
         $u->save();
         return true;
     }
+
+    public function saveSetting($data)
+    {
+        $u = User::findOrFail($data['id']);
+        $u->group_id = $data['group_id'];
+        if ($data['password']) {
+            $u->password = $u->hashPassword($data['password']);
+        }
+        $u->save();
+        return true;
+    }
 }

+ 7 - 0
database/seeders/DatabaseSeeder.php

@@ -25,6 +25,13 @@ class DatabaseSeeder extends Seeder
             "group_id" => 1,
             "phone" => 15012341234,
         ]);
+        User::create([
+            "password" => hashid_encode("111111"),
+            "email" => "normal@lientiao.com",
+            "status" => User::STATUS_OK,
+            "group_id" => 2,
+            "phone" => 13012341234,
+        ]);
     }
 
     private function auth()

+ 3 - 0
routes/api.php

@@ -11,5 +11,8 @@ Route::middleware([\App\Http\Middleware\AdminAuthMiddleware::class])->group(func
 
     Route::get("/admin/user/paginate", [\App\Modules\Admin\Controllers\Admin\UserController::class, "paginate"]);
     Route::post("/admin/user/changeStatus", [\App\Modules\Admin\Controllers\Admin\UserController::class, "changeStatus"]);
+    Route::post("/admin/user/saveSetting", [\App\Modules\Admin\Controllers\Admin\UserController::class, "saveSetting"]);
+
+    Route::get("/admin/common/groupMap", [\App\Modules\Admin\Controllers\Admin\CommonController::class, "groupMap"]);
 
 });