$cacheService
$cacheService : \App\Services\Admin\PermissionCacheService
用户角色服务
职责:角色仅承载用户直授(kind=2,岗位已独立建表)。负责角色 CRUD、菜单/权限分配, 以及 super 锚点的锁删锁改保护、is_exempt 数据豁免角色的提权拦截。
┌────────────────── 分区导航(按此顺序阅读)──────────────────┐ 分区 1 · 构造与依赖 __construct 分区 2 · 查询(读) paginate / getMenuIds / getPermissionIds 分区 3 · 角色写操作 create / update / destroy 分区 4 · 分配与编排 createWithAssignments / updateWithAssignments syncMenus / syncPermissions └────────────────────────────────────────────────────────────┘
$cacheService : \App\Services\Admin\PermissionCacheService
createWithAssignments(array $data, int[]|null $menuIds = null, int[]|null $permissionIds = null) : \App\Models\SysRole
创建角色并同步菜单/权限分配(提交 menu_ids/permission_ids 时)。
| array | $data | |
| int[]|null | $menuIds | null=本次未提交分配(不触碰) |
| int[]|null | $permissionIds | null=本次未提交分配(不触碰) |
updateWithAssignments(\App\Models\SysRole $role, array $data, int[]|null $menuIds = null, int[]|null $permissionIds = null) : \App\Models\SysRole
更新角色并同步菜单/权限分配(语义同 createWithAssignments)。
| \App\Models\SysRole | $role | |
| array | $data | |
| int[]|null | $menuIds | null=本次未提交分配(不触碰) |
| int[]|null | $permissionIds | null=本次未提交分配(不触碰) |
normalizeStringColumns(array<string,mixed> $data, string[] $columns, array<string,string> $defaults = [], bool $fillMissing = false) : array
字符串列归一化:值为 null 的键写入 $defaults 对应默认值(缺省 '')。
| array |
$data | 待写库数据(按引用字段处理,返回归一化副本) |
| string[] | $columns | 参与归一化的列名 |
| array |
$defaults | 列 => 默认值(缺省 '',如 link_target => '_self') |
| bool | $fillMissing | true 时缺失键也补默认值(创建路径全字段落库用);false 只处理已存在的键 |