package com.qqchen.deploy.backend.system.service;

import com.qqchen.deploy.backend.framework.service.IBaseService;
import com.qqchen.deploy.backend.system.entity.Role;
import com.qqchen.deploy.backend.system.model.RoleDTO;
import com.qqchen.deploy.backend.system.model.PermissionDTO;
import com.qqchen.deploy.backend.system.model.query.RoleQuery;

import java.util.List;

public interface IRoleService extends IBaseService<Role, RoleDTO, RoleQuery, Long> {

    /**
     * 验证角色编码是否存在
     */
    void validateCode(String code);

    /**
     * 验证角色名称是否存在
     */
    void validateName(String name);

    /**
     * 获取用户的所有角色ID
     */
    List<Long> getUserRoleIds(Long userId);

    /**
     * 分配标签
     */
    void assignTags(Long roleId, List<Long> tagIds);

    /**
     * 分配角色
     */
    void assignRoles(Long userId, List<Long> roleIds);

    /**
     * 获取角色的权限列表
     */
    List<PermissionDTO> listRolePermissions(Long roleId);

    /**
     * 分配权限给角色
     */
    void assignPermissions(Long roleId, List<Long> permissionIds);
}