<?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 
        );
    }
}