id; $inputs = $request->validated(); $inputs['admin_id'] = $id; if (Admin::user()->isRole(AdminRole::MERCHANTSADMIN)) { $inputs['merchant_id'] = AdminMerchant::getMchId(); } else { $inputs['merchant_id'] = Admin::user()->merchant_id; } $inputs['slug'] = $inputs['slug'] . '_sh_' . $inputs['merchant_id']; // 拼接上商户id $orWhere = ['slug' => $inputs['slug']]; $data = AdminRole::query() ->where('name', $inputs['name']) ->where(function ($query) use ($orWhere) { $query->orWhere($orWhere); })->first(); if ($data) return $this->error('标识不能重复'); if (!Admin::user()->isRole(AdminRole::ADMINISTROTOR) and in_array($inputs['slug'], [AdminRole::ADMINISTROTOR, AdminRole::MERCHANTSADMIN])) { // 控制不能添加 技术管理员标识,商户端标识 return $this->error('添加路由权限不足,请联系服务商'); } $role = $model->create($inputs); if (!empty($perms = $inputs['permissions'] ?? [])) { $role->permissions()->attach($perms); } // 添加菜单权限 if (!empty($vue_routers = $inputs['menu'] ?? [])) { $vue_routers = setlist(object_array($vue_routers)); $role->vue_routers()->attach(array_column($vue_routers, 'id')); } return $this->created(AdminRoleResource::make($role)); } public function edit(AdminRole $adminRole) { $adminRole->load(['permissions', 'vue_routers']); return $this->ok(AdminRoleResource::make($adminRole)); } public function update(AdminRoleRequest $request, AdminRole $adminRole) { $inputs = $request->validated(); //Log::info(json_encode($inputs)); $adminRole->update($inputs); if (isset($inputs['permissions'])) { $adminRole->permissions()->sync($inputs['permissions']); } //更新菜单权限 if (!empty($inputs['menu'])) { $vue_routeres = setlist(object_array($inputs['menu'])); // Log::info($vue_routeres); // $vue_routeres = $inputs['vue_routers']; $adminRole->vue_routers()->sync(array_column($vue_routeres, 'id')); } return $this->created(AdminRoleResource::make($adminRole)); } public function destroy(AdminRole $adminRole) { $adminRole->delete(); return $this->noContent(); } // 权限列表 if (Admin::user()->isRole('administrator')) { public function index(Request $request, AdminRoleFilter $filter) { $id = Admin::user()->id; $userQuery = $roles = AdminRole::query()->with(['permissions'])->filter($filter); // if (Admin::isAdministrator()) { if (Admin::user()->isRole(AdminRole::ADMINISTROTOR)) { // 技术管理员 不限制权限 // $userQuery->where('admin_id', $id); } else if (Admin::user()->isRole(AdminRole::MERCHANTSADMIN)) { //查看当前 $userQuery->where(function ($query) { return $query->where('merchant_id', AdminMerchant::getMchId()); })->orWhereIn('id', [3, 4, 5]); } else { $userQuery->where('admin_id', $id); } $userQuery->orderBy('order'); $roles = $request->get('all') ? $userQuery->get() : $userQuery->paginate(); return $this->ok(AdminRoleResource::collection($roles)); } }