dev
Jing Li 2023-10-30 15:52:30 +08:00
parent be80b4bf0c
commit 7b8c02c1b4
4 changed files with 66 additions and 9 deletions

View File

@ -2,16 +2,16 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use App\Enums\OperationType;
use App\Helpers\Paginator; use App\Helpers\Paginator;
use App\Http\Requestes\AdminUserRequest; use App\Http\Requestes\AdminUserRequest;
use App\Http\Requestes\AdminUserUpdateRequest; use App\Http\Requestes\AdminUserUpdateRequest;
use App\Http\Requestes\RestPasswordRequest; use App\Http\Requestes\RestPasswordRequest;
use App\Http\Resources\AdminUserResource; use App\Http\Resources\AdminUserResource;
use App\Models\AdminUser; use App\Models\AdminUser;
use App\Services\OperationLogService;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use App\Services\OperationLogService;
use App\Enums\OperationType;
class AdminUserController extends Controller class AdminUserController extends Controller
{ {
@ -33,10 +33,20 @@ class AdminUserController extends Controller
DB::beginTransaction(); DB::beginTransaction();
//添加管理员信息 //添加管理员信息
$input = $request->input(); $input = $request->input();
// 是否可查看所有基地
if ($viewAllBases = (bool) $request->input('view_all_bases', false)) {
$input['view_all_bases'] = $viewAllBases;
}
$input['password'] = bcrypt($request->input('password')); $input['password'] = bcrypt($request->input('password'));
$user = AdminUser::create($input); $user = AdminUser::create($input);
if (! $user->view_all_bases) {
// 添加管理员查看基地的数据权限; // 添加管理员查看基地的数据权限;
$user->bases()->sync($baseIds); $user->bases()->sync($baseIds);
}
//添加管理员角色关联; //添加管理员角色关联;
$user->roles()->sync($request->input('role_id')); $user->roles()->sync($request->input('role_id'));
DB::commit(); DB::commit();
@ -66,10 +76,21 @@ class AdminUserController extends Controller
} }
try { try {
DB::beginTransaction(); DB::beginTransaction();
$input = $request->input();
if ($viewAllBases = (bool) $request->input('view_all_bases', false)) {
$input['view_all_bases'] = $viewAllBases;
}
//添加管理员信息 //添加管理员信息
$adminUser->update($request->input()); $adminUser->update($input);
if (! $adminUser->view_all_bases) {
// 添加管理员查看基地的数据权限; // 添加管理员查看基地的数据权限;
$adminUser->bases()->sync($baseIds); $adminUser->bases()->sync($baseIds);
}
//添加管理员角色关联; //添加管理员角色关联;
$adminUser->roles()->sync($request->input('role_id')); $adminUser->roles()->sync($request->input('role_id'));
DB::commit(); DB::commit();

View File

@ -135,7 +135,7 @@ class AgriculturalBaseController extends Controller
$q->when($deviceType == DeviceType::Monitor->value, function ($q) use ($isRecommend) { $q->when($deviceType == DeviceType::Monitor->value, function ($q) use ($isRecommend) {
$q->when($isRecommend, fn ($q) => $q->where('is_recommend', 1))->where('status', 1); $q->when($isRecommend, fn ($q) => $q->where('is_recommend', 1))->where('status', 1);
})->where('type', $deviceType); })->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})"); $q->whereRaw("id in (select base_id from admin_user_bases where user_id = {$user->id})");
})->sort()->get(); })->sort()->get();

View File

@ -15,7 +15,11 @@ class AdminUser extends BaseAdminModel
'username', 'username',
'password', 'password',
'avatar', 'avatar',
'department', 'phone', 'status', 'is_enable', 'department',
'phone',
'status',
'is_enable',
'view_all_bases',
]; ];
protected $hidden = [ protected $hidden = [

View File

@ -0,0 +1,32 @@
<?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::table('adminstrators', function (Blueprint $table) {
$table->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']);
});
}
};