ok( AdminUserResource::make($user) ->gatherAllPermissions() ->onlyRolePermissionSlugs() ); } public function areaAdmin() { // if(Admin::isAdministrator() || Admin::isNormalAdministrator()){ // $users = AdminUser::query()->where('type',AdminUser::TYPE_ADMIN)->get(); // }else{ // // } $users = AdminUser::query()->where('type', AdminUser::TYPE_ADMIN)->get(); // $areaAdmin = AdminUser::getAreaAdmin(); // if (count($areaAdmin) !== 0) { // $data = []; // foreach ($areaAdmin as $v) { // $data[] = [ // 'id' => $v->id, // 'name' => $v->name]; // } // } //$administrator = AdminUser::getAAdmin(); foreach ($users as $v) { $data[] = [ 'id' => $v->id, 'name' => $v->name]; } return $this->ok($data); } public function editUser() { $user = Admin::user(); $user->load(['roles', 'permissions', 'areas']); return $this->ok(AdminUserResource::make($user)); } public function updateUser(AdminUserProfileRequest $request) { $inputs = $request->validated(); Admin::user()->updateUser($inputs); return $this->callAction('user', [])->setStatusCode(201); } // 管理员列表 public function index(AdminUserFilter $filter) { $user = Admin::user(); /// $userQuery = AdminUser::query() ->filter($filter) ->where('type', AdminUser::TYPE_ADMIN); if (Admin::user()->isRole(AdminRole::ADMINISTROTOR)) { // 技术管理员 $userQuery->with(['roles', 'permissions', 'areas']); } else if (Admin::user()->isRole(AdminRole::MERCHANTSADMIN)) { // 商户管理员 $userQuery->with(['roles', 'permissions', 'areas']); $userQuery->where('merchant_id', AdminMerchant::getMchId()); } /*elseif (Admin::user()->isRole(AdminRole::NORMALADMINISTRATOR)) { //超级管理员 // Log::info('mimiimimimmimi'); $userQuery->whereNotIn('id', [1, $user->id]) ->where('merchant_id', $user->merchant_id) ->whereHas('roles', function ($q) { $q->whereNotIn('slug', [AdminRole::ADMINISTROTOR, AdminRole::MERCHANTSADMIN, AdminRole::NORMALADMINISTRATOR]); }) ->with(['roles', 'permissions', 'areas']); } */ else { // 普通管理员 $userQuery->whereNotIn('id', [1, $user->id]) ->whereHas('roles', function ($q) { $q->whereNotIn('slug', [AdminRole::ADMINISTROTOR, AdminRole::MERCHANTSADMIN]); }) ->where('pid', $user->id) ->where('merchant_id', $user->merchant_id) ->with(['roles', 'permissions', 'areas']); } $users = $userQuery->orderByDesc('id')->paginate(); /// return $this->ok(AdminUserResource::collection($users)); } /** * 添加管理员 * @param AdminUserRequest $request * @param AdminUser $user * @return \Illuminate\Http\JsonResponse */ public function store(AdminUserRequest $request, AdminUser $user) { $id = Admin::user()->id; $inputs = $request->validated(); $inputs['pid'] = $id; unset($inputs['roles']); unset($inputs['areas']); $user = $user::createUser($inputs); if (!empty($q = $request->post('roles', []))) { $user->roles()->attach($q); } if (!empty($q = $request->post('areas', []))) { $user->areas()->attach($q); } if (!empty($q = $request->post('permissions', []))) { $user->permissions()->attach($q); } $admin_role = AdminRole::query()->find($request->roles[0]); if (!$admin_role) { return $this->error('请先添加角色'); // 商户管理员不能添加商户 } // 超级管理员可以添加商户 $update_merchant_id = 0; if (Admin::user()->isRole(AdminRole::ADMINISTROTOR) and $admin_role->slug == AdminRole::MERCHANTSADMIN) { return $this->error('管理员暂时不能添加商户'); // 商户管理员不能添加商户 // AdminMerchants::create(['admin_id' => $user->id]); // 添加商户 // AdminUser::query()->where('id', $user->id)->update(['merchant_id' => 0]); // 写入商户 } else if (Admin::user()->isRole(AdminRole::MERCHANTSADMIN)) { // 商户添加用户 绑定 $update_merchant_id = AdminMerchant::getMchId(); // AdminUser::query()->where('id', $user->id)->update(['merchant_id' => $id]); // 写入商户 } else { $update_merchant_id = Admin::user()->merchant_id; // AdminUser::query()->where('id', $user->id)->update(['merchant_id' => Admin::user()->merchant_id]); } // 添加商户id AdminUser::query()->where('id', $user->id)->update(['merchant_id' => $update_merchant_id]); return $this->created(AdminUserResource::make($user)); } public function show(AdminUser $adminUser) { $adminUser->load(['roles', 'permissions', 'areas']); return $this->ok(AdminUserResource::make($adminUser)); } public function update(AdminUserRequest $request, AdminUser $adminUser) { $inputs = $request->validated(); //Log::info($inputs); unset($inputs['roles']); unset($inputs['areas']); $adminUser->updateUser($inputs); if (isset($inputs['roles'])) { $adminUser->roles()->sync($inputs['roles']); } if (isset($inputs['areas'])) { $adminUser->areas()->sync($inputs['areas']); } if (isset($inputs['permissions'])) { $adminUser->permissions()->sync($inputs['permissions']); } return $this->created(AdminUserResource::make($adminUser)); } public function destroy(AdminUser $adminUser) { $adminUser->delete(); return $this->noContent(); } public function edit(AdminUser $adminUser) { $adminUser->load(['roles', 'permissions', 'areas']); return $this->ok(AdminUserResource::make($adminUser)->onlyRolePermissionIds()); } }