$userConfigService
$userConfigService : \App\Services\Admin\UserConfigService
用户配置控制器
职责:用户配置模块全部 HTTP 接口的入口,校验入参、编排服务、组装统一响应, 业务下沉 UserConfigService(缓存查询走 PermissionCacheService,导出走 UserConfigExporter)。
┌────────────────── 分区导航(按此顺序阅读)──────────────────┐ 分区 1 · 列表与统计 index / overview / show / byPost 分区 2 · 用户写操作 batchStatus / store / update / resetPassword destroy / export / import 分区 3 · 角色与个人权限 syncUserRoles / permissions / syncPermissions 分区 4 · 任职与数据范围 memberships / syncMemberships / scopes / syncScopes └────────────────────────────────────────────────────────────┘
$userConfigService : \App\Services\Admin\UserConfigService
$cacheService : \App\Services\Admin\PermissionCacheService
update(\App\Http\Requests\Admin\UserConfigRequest $request, \App\Models\SysUser $user) : \Illuminate\Http\JsonResponse
更新用户
非超管操作超管目标、或将 is_super 置 1,返回 403; 停用或超管身份变更后目标用户会被立即强制下线。
| \App\Http\Requests\Admin\UserConfigRequest | $request | |
| \App\Models\SysUser | $user |
import(\App\Http\Requests\Admin\UserConfigRequest $request) : \Illuminate\Http\JsonResponse
导入用户 CSV
每个导入成功的用户由系统生成随机初始密码,响应 data.passwords 返回 {用户名: 明文初始密码} 列表,仅本次响应可见,请立即分发给对应用户。 非超管导入时,行内"超管=是"的记录会被跳过。
| \App\Http\Requests\Admin\UserConfigRequest | $request |
syncUserRoles(\App\Http\Requests\Admin\UserConfigSyncRolesRequest $request, \App\Models\SysUser $user) : \Illuminate\Http\JsonResponse
用户角色分配
覆盖式同步用户直授角色:提交的 role_ids 即用户最终直授角色, 限定 kind=2 用户角色,同步后用户权限缓存失效。
| \App\Http\Requests\Admin\UserConfigSyncRolesRequest | $request | |
| \App\Models\SysUser | $user |
syncPermissions(\App\Http\Requests\Admin\UserConfigSyncPermissionsRequest $request, \App\Models\SysUser $user) : \Illuminate\Http\JsonResponse
同步用户个人权限(不进 API 文档,覆盖式)
覆盖式重建:提交的 permission_ids 即该用户最终个人权限(仅按钮/接口权限, 菜单页面可见性仍由角色决定),与角色权限并集生效。
| \App\Http\Requests\Admin\UserConfigSyncPermissionsRequest | $request | |
| \App\Models\SysUser | $user |
syncMemberships(\App\Http\Requests\Admin\UserConfigSyncMembershipsRequest $request, \App\Models\SysUser $user) : \Illuminate\Http\JsonResponse
同步用户任职(不进 API 文档)
覆盖式更新:每条 = 部门 + 岗位(post_id,任职仅为归属标记, 不再携带数据范围;可见性由岗位范围与个人范围决定)。 任职影响有效权限与数据范围,同步后清缓存。
| \App\Http\Requests\Admin\UserConfigSyncMembershipsRequest | $request | |
| \App\Models\SysUser | $user |
syncScopes(\App\Http\Requests\Admin\UserConfigSyncScopesRequest $request, \App\Models\SysUser $user) : \Illuminate\Http\JsonResponse
同步用户个人数据范围(不进 API 文档,覆盖式)
覆盖式重建:提交的 items 即该用户最终个人数据范围(组织 + 部门,dept_id=0 表示整组织), 与岗位范围并集生效。
| \App\Http\Requests\Admin\UserConfigSyncScopesRequest | $request | |
| \App\Models\SysUser | $user |