Role.php 944 B

123456789101112131415161718192021222324252627282930313233
  1. <?php
  2. namespace app\admin\model;
  3. use app\BaseModel;
  4. use think\facade\Cache;
  5. use app\admin\model\Menu;
  6. class Role extends BaseModel
  7. {
  8. /**
  9. * 获取角色对应的权限列表(带30分钟缓存)
  10. * @param int $roleId 角色ID
  11. * @return array 权限标识列表
  12. */
  13. public static function getRoleMenu(int $roleId): array
  14. {
  15. // 缓存key(规范命名,避免冲突)
  16. $cacheKey = "admin:role_menu:{$roleId}";
  17. // 缓存有效期(30分钟,单位:秒)
  18. $expire = 30 * 60;
  19. return Cache::remember( $cacheKey, function () use ($roleId) {
  20. return Menu::alias('m')
  21. ->join('role_menu rm', 'm.id = rm.menu_id', 'join')
  22. ->where('rm.role_id', $roleId)
  23. ->whereNotNull('m.perms')
  24. ->pluck('m.perms')
  25. ->toArray();
  26. },$expire
  27. );
  28. }
  29. }