\App\Services\AdminMaintainPermissionService

权限维护服务

职责:权限(菜单/按钮/接口)的增删改。外链菜单不能挂权限;删除时同事务级联清 role_permission 绑定行与子权限提升,随后全量清用户权限/菜单缓存。

┌────────────────── 分区导航(按此顺序阅读)──────────────────┐ 分区 1 · 权限写操作 create / update / destroy 分区 2 · 校验 validateMenuCanHavePermission └────────────────────────────────────────────────────────────┘

Summary

Methods
Properties
Constants
create()
update()
destroy()
No public properties found
TYPE_NAMES
normalizeStringColumns()
No protected properties found
N/A
validateMenuCanHavePermission()
No private properties found
N/A

Constants

TYPE_NAMES

TYPE_NAMES = [1 => '菜单权限', 2 => '按钮权限', 3 => '接口权限']

Methods

create()

create(array  $data) : \App\Models\SysPermission

创建权限。

Parameters

array $data

Returns

\App\Models\SysPermission —

update()

update(\App\Models\SysPermission  $permission, array  $data) : \App\Models\SysPermission

更新权限。

Parameters

\App\Models\SysPermission $permission
array $data

Returns

\App\Models\SysPermission —

destroy()

destroy(\App\Models\SysPermission  $permission) : void

删除权限。

同事务级联清 role_permission 绑定行(mass delete 不走模型事件,孤儿行需显式清); 删后全量清用户权限+菜单缓存——权限结构变更本来就是全用户语义,不清的话已删权限码 在用户权限 Set 里残留至 TTL 过期,期间越权判定仍通过。

Parameters

\App\Models\SysPermission $permission

normalizeStringColumns()

normalizeStringColumns(array<string,mixed>  $data, string[]  $columns, array<string,string>  $defaults = [], bool  $fillMissing = false) : array

字符串列归一化:值为 null 的键写入 $defaults 对应默认值(缺省 '')。

Parameters

array $data

待写库数据(按引用字段处理,返回归一化副本)

string[] $columns

参与归一化的列名

array $defaults

列 => 默认值(缺省 '',如 link_target => '_self')

bool $fillMissing

true 时缺失键也补默认值(创建路径全字段落库用);false 只处理已存在的键

Returns

array —

validateMenuCanHavePermission()

validateMenuCanHavePermission(int  $menuId) : void

外链不能挂权限。

Parameters

int $menuId