kphcdr 1 rok temu
rodzic
commit
23f748bbaa

+ 1 - 1
app/Http/Middleware/AdminAuthMiddleware.php

@@ -2,7 +2,7 @@
 
 namespace App\Http\Middleware;
 
-use App\Models\User;
+use App\Models\User\User;
 use App\Modules\Admin\Services\AuthService;
 use Closure;
 use Illuminate\Auth\AuthenticationException;

+ 9 - 3
app/Models/User.php → app/Models/User/User.php

@@ -1,6 +1,6 @@
 <?php
 
-namespace App\Models;
+namespace App\Models\User;
 
 use App\Base\BaseModel;
 use App\Models\Auth\AdminGroup;
@@ -9,8 +9,8 @@ use Illuminate\Auth\Authenticatable;
 /**
  * App\Models\User
  *
- * @property int                             $id
- * @property string                          $phone
+ * @property int                                    $id
+ * @property string                                 $phone
  * @property string                          $password
  * @property string                          $email
  * @property int                             $status 0 禁用 1启用
@@ -32,6 +32,7 @@ use Illuminate\Auth\Authenticatable;
  * @method static \Illuminate\Database\Eloquent\Builder|User whereStatus($value)
  * @method static \Illuminate\Database\Eloquent\Builder|User whereUpdatedAt($value)
  * @mixin \Eloquent
+ * @property-read \App\Models\User\UserCompany|null $company
  */
 class User extends BaseModel implements \Illuminate\Contracts\Auth\Authenticatable
 {
@@ -60,4 +61,9 @@ class User extends BaseModel implements \Illuminate\Contracts\Auth\Authenticatab
     {
         return $this->belongsTo(AdminGroup::class, "group_id", "id");
     }
+
+    public function company()
+    {
+        return $this->hasOne(UserCompany::class, "user_id", "id");
+    }
 }

+ 33 - 0
app/Models/User/UserCompany.php

@@ -0,0 +1,33 @@
+<?php
+
+namespace App\Models\User;
+
+use App\Base\BaseModel;
+
+/**
+ * App\Models\User\UserCompany
+ *
+ * @method static \Illuminate\Database\Eloquent\Builder|UserCompany newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|UserCompany newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|UserCompany query()
+ * @mixin \Eloquent
+ * @property int                             $id
+ * @property int                             $user_id
+ * @property string                          $name
+ * @property string                          $tax_no 企业税号
+ * @property int                             $status 1 待审核 2已审核
+ * @property \Illuminate\Support\Carbon|null $created_at
+ * @property \Illuminate\Support\Carbon|null $updated_at
+ * @method static \Illuminate\Database\Eloquent\Builder|UserCompany whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserCompany whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserCompany whereName($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserCompany whereStatus($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserCompany whereTaxNo($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserCompany whereUpdatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserCompany whereUserId($value)
+ */
+class UserCompany extends BaseModel
+{
+    protected $table = "user_company";
+
+}

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

@@ -4,6 +4,7 @@ namespace App\Modules\Admin\Controllers\Admin;
 
 use App\Base\BaseController;
 use App\Models\Auth\AdminGroup;
+use App\Models\Auth\AdminPermission;
 use App\Modules\Admin\Services\UserService;
 
 class CommonController extends BaseController
@@ -21,4 +22,17 @@ class CommonController extends BaseController
             }),
         ]);
     }
+
+    public function permissionMap()
+    {
+        $all = AdminPermission::all();
+        return $this->ok([
+            "list" => $all->map(function (AdminPermission $m) {
+                return [
+                    "id" => $m->id,
+                    "name" => $m->name,
+                ];
+            }),
+        ]);
+    }
 }

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

@@ -40,6 +40,7 @@ class UserController extends BaseController
             "id" => "required",
             "password" => "",
             "group_id" => "required",
+            "permissions" => 'array',
         ]);
 
         return $this->ok($this->service->saveSetting($data));

+ 1 - 1
app/Modules/Admin/Services/AuthService.php

@@ -3,7 +3,7 @@
 namespace App\Modules\Admin\Services;
 
 use App\Exceptions\ClientException;
-use App\Models\User;
+use App\Models\User\User;
 use Illuminate\Support\Facades\Auth;
 
 class AuthService

+ 8 - 5
app/Modules/Admin/Services/UserService.php

@@ -3,14 +3,15 @@
 namespace App\Modules\Admin\Services;
 
 use App\Exceptions\ClientException;
-use App\Models\User;
+use App\Models\User\User;
 use Illuminate\Database\Eloquent\Builder;
+use Illuminate\Support\Arr;
 
 class UserService
 {
     public function paginate($data)
     {
-        $p = User::query()->with("group")->when($data['status'], function (Builder $query) use ($data) {
+        $p = User::query()->with(["group", "company"])->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) {
@@ -28,11 +29,10 @@ class UserService
                     "email" => $u->email,
                     "status" => $u->status,
                     "created_at" => $u->created_at->format("Y-m-d"),
-                    //@TODO kphcdr
-                    "company" => "todo company",
+                    "company" => optional($u->company)->name,
                     "group_id" => $u->group_id,
                     "group_name" => $u->group->name,
-                    'permissions' => [],
+                    'permissions' => Arr::get($u->extra, 'permissions'),
                 ];
             }, $p->items()),
         ];
@@ -56,6 +56,9 @@ class UserService
         if ($data['password']) {
             $u->password = $u->hashPassword($data['password']);
         }
+        $u->extra = array_merge($u->extra ?? [], [
+            "permissions" => $data['permissions'] ?? [],
+        ]);
         $u->save();
         return true;
     }

+ 34 - 0
database/migrations/2023_04_27_031700_create_user_company_table.php

@@ -0,0 +1,34 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+return new class extends Migration {
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('user_company', function (Blueprint $table) {
+            $table->id();
+            $table->unsignedInteger("user_id");
+            $table->string("name")->default("");
+            $table->string("tax_no")->default("")->comment("企业税号");
+            $table->unsignedTinyInteger("status")->default(0)->comment("1 待审核 2已审核");
+            $table->timestamps();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('user_company');
+    }
+};

+ 14 - 2
database/seeders/DatabaseSeeder.php

@@ -5,11 +5,14 @@ namespace Database\Seeders;
 // use Illuminate\Database\Console\Seeds\WithoutModelEvents;
 use App\Models\Auth\AdminGroup;
 use App\Models\Auth\AdminPermission;
-use App\Models\User;
+use App\Models\User\User;
+use App\Models\User\UserCompany;
 use Illuminate\Database\Seeder;
 
 class DatabaseSeeder extends Seeder
 {
+    protected $user;
+
     /**
      * Seed the application's database.
      *
@@ -18,12 +21,15 @@ class DatabaseSeeder extends Seeder
     public function run()
     {
         $this->auth();
-        User::create([
+        $this->user = User::create([
             "password" => hashid_encode("111111"),
             "email" => "liantiao@lientiao.com",
             "status" => User::STATUS_OK,
             "group_id" => 1,
             "phone" => 15012341234,
+            "extra" => [
+                "permissions" => [1, 2],
+            ],
         ]);
         User::create([
             "password" => hashid_encode("111111"),
@@ -32,6 +38,12 @@ class DatabaseSeeder extends Seeder
             "group_id" => 2,
             "phone" => 13012341234,
         ]);
+        $this->company();
+    }
+
+    public function company()
+    {
+        UserCompany::create(["name" => "测试企业", "tax_no" => "ooxx", "user_id" => $this->user->id]);
     }
 
     private function auth()

+ 1 - 0
routes/api.php

@@ -14,5 +14,6 @@ Route::middleware([\App\Http\Middleware\AdminAuthMiddleware::class])->group(func
     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"]);
+    Route::get("/admin/common/permissionMap", [\App\Modules\Admin\Controllers\Admin\CommonController::class, "permissionMap"]);
 
 });