diff --git a/app/Http/Controllers/AdminUserController.php b/app/Http/Controllers/AdminUserController.php index 7e18e45..3d8167f 100644 --- a/app/Http/Controllers/AdminUserController.php +++ b/app/Http/Controllers/AdminUserController.php @@ -2,16 +2,16 @@ namespace App\Http\Controllers; +use App\Enums\OperationType; use App\Helpers\Paginator; use App\Http\Requestes\AdminUserRequest; use App\Http\Requestes\AdminUserUpdateRequest; use App\Http\Requestes\RestPasswordRequest; use App\Http\Resources\AdminUserResource; use App\Models\AdminUser; +use App\Services\OperationLogService; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; -use App\Services\OperationLogService; -use App\Enums\OperationType; class AdminUserController extends Controller { @@ -33,10 +33,20 @@ class AdminUserController extends Controller DB::beginTransaction(); //添加管理员信息 $input = $request->input(); + + // 是否可查看所有基地 + if ($viewAllBases = (bool) $request->input('view_all_bases', false)) { + $input['view_all_bases'] = $viewAllBases; + } $input['password'] = bcrypt($request->input('password')); + $user = AdminUser::create($input); - //添加管理员查看基地的数据权限; - $user->bases()->sync($baseIds); + + if (! $user->view_all_bases) { + // 添加管理员查看基地的数据权限; + $user->bases()->sync($baseIds); + } + //添加管理员角色关联; $user->roles()->sync($request->input('role_id')); DB::commit(); @@ -66,10 +76,21 @@ class AdminUserController extends Controller } try { DB::beginTransaction(); + + $input = $request->input(); + + if ($viewAllBases = (bool) $request->input('view_all_bases', false)) { + $input['view_all_bases'] = $viewAllBases; + } + //添加管理员信息 - $adminUser->update($request->input()); - //添加管理员查看基地的数据权限; - $adminUser->bases()->sync($baseIds); + $adminUser->update($input); + + if (! $adminUser->view_all_bases) { + // 添加管理员查看基地的数据权限; + $adminUser->bases()->sync($baseIds); + } + //添加管理员角色关联; $adminUser->roles()->sync($request->input('role_id')); DB::commit(); diff --git a/app/Http/Controllers/AgriculturalBaseController.php b/app/Http/Controllers/AgriculturalBaseController.php index 256f389..1e77f09 100644 --- a/app/Http/Controllers/AgriculturalBaseController.php +++ b/app/Http/Controllers/AgriculturalBaseController.php @@ -135,7 +135,7 @@ class AgriculturalBaseController extends Controller $q->when($deviceType == DeviceType::Monitor->value, function ($q) use ($isRecommend) { $q->when($isRecommend, fn ($q) => $q->where('is_recommend', 1))->where('status', 1); })->where('type', $deviceType); - })->when(! $all && ! $user->isAdministrator(), function ($q) use ($user) { + })->when(! $all && ! $user->isAdministrator() && ! $user->view_all_bases, function ($q) use ($user) { $q->whereRaw("id in (select base_id from admin_user_bases where user_id = {$user->id})"); })->sort()->get(); diff --git a/app/Models/AdminUser.php b/app/Models/AdminUser.php index 98aad23..99ddb4a 100644 --- a/app/Models/AdminUser.php +++ b/app/Models/AdminUser.php @@ -15,7 +15,11 @@ class AdminUser extends BaseAdminModel 'username', 'password', 'avatar', - 'department', 'phone', 'status', 'is_enable', + 'department', + 'phone', + 'status', + 'is_enable', + 'view_all_bases', ]; protected $hidden = [ diff --git a/database/migrations/2023_10_30_154347_add_view_all_bases_to_adminstrators_table.php b/database/migrations/2023_10_30_154347_add_view_all_bases_to_adminstrators_table.php new file mode 100644 index 0000000..c6c0400 --- /dev/null +++ b/database/migrations/2023_10_30_154347_add_view_all_bases_to_adminstrators_table.php @@ -0,0 +1,32 @@ +boolean('view_all_bases')->default(false)->comment('是否可查看所有基地'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('adminstrators', function (Blueprint $table) { + $table->dropColumn(['view_all_bases']); + }); + } +};