| 123456789101112131415161718192021222324252627282930313233 |
- <?php
- namespace app\admin\model;
- use app\BaseModel;
- use think\facade\Cache;
- use app\admin\model\Menu;
- class Role extends BaseModel
- {
- /**
- * 获取角色对应的权限列表(带30分钟缓存)
- * @param int $roleId 角色ID
- * @return array 权限标识列表
- */
- public static function getRoleMenu(int $roleId): array
- {
- // 缓存key(规范命名,避免冲突)
- $cacheKey = "admin:role_menu:{$roleId}";
- // 缓存有效期(30分钟,单位:秒)
- $expire = 30 * 60;
- return Cache::remember( $cacheKey, function () use ($roleId) {
- return Menu::alias('m')
- ->join('role_menu rm', 'm.id = rm.menu_id', 'join')
- ->where('rm.role_id', $roleId)
- ->whereNotNull('m.perms')
- ->pluck('m.perms')
- ->toArray();
- },$expire
- );
- }
- }
|