$cacheService
$cacheService : \App\Services\Admin\PermissionCacheService
岗位服务
职责:岗位是数据权限体系的独立实体——唯一归属一个部门(td_sys_post.dept_id)、 配置数据范围(td_sys_post_scope)。岗位只管数据、不管功能, 菜单/权限归属角色(td_sys_role_menu / td_sys_role_permission)。 岗位删除级联清理数据范围与孤儿任职;部门岗位目录(depts/{dept}/posts)在此聚合读取。
┌────────────────── 分区导航(按此顺序阅读)──────────────────┐ 分区 1 · 构造与依赖 __construct 分区 2 · 岗位查询(读) paginate / deptPosts / getScopeRules 分区 3 · 岗位写操作 create / update / destroy 分区 4 · 数据范围同步 syncScopeRules 分区 5 · 内部辅助 withUserCounts └────────────────────────────────────────────────────────────┘
$cacheService : \App\Services\Admin\PermissionCacheService
syncScopeRules(\App\Models\SysPost $post, array $items) : void
同步岗位数据范围(覆盖式)。
规则模式(SysPostScope): MODE_ORG(0) 显式组织——company_id 必填,dept_id 恒 0; MODE_DEPT(1) 显式末级部门——company_id + dept_id 必填,部门必须属于该组织且为叶子(末级)节点。 同一岗位可同时配置多条(并集生效)。
| \App\Models\SysPost | $post | |
| array | $items | 范围规则 [{scope_mode, company_id, dept_id}] |
模式取值无效、组织/部门不存在或归属不符时抛 400
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 只处理已存在的键 |