package com.jy.system.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jy.system.model.dto.EditRoleDataScopeDto;
import com.jy.system.model.dto.EditRoleMenuScopeDto;
import com.jy.system.model.dto.SysRoleDto;
import com.jy.system.model.dto.SysRoleSelectDto;
import com.jy.system.model.entity.SysRole;
import com.jy.system.model.vo.RoleDataScopeVo;
import com.jy.system.model.vo.RoleMenuScopeVo;
import com.jy.system.model.vo.SysRoleVo;

import java.util.List;

/**
 * <p>
 * 角色 服务类
 * </p>
 *
 * @author
 * @since 2024-06-20
 */
public interface SysRoleService {

    /**
     * 角色列表
     */
    List<SysRoleVo> getList(SysRoleSelectDto dto);

    /**
     * 角色分页
     */
    Page<SysRoleVo> getPage(SysRoleSelectDto dto);

    /**
     * 角色明细
     */
    SysRoleVo getDetail(Long id);

    /**
     * 角色新增
     */
    void add(SysRoleDto dto);

    /**
     * 角色编辑
     */
    void edit(SysRoleDto dto);

    /**
     * 角色删除
     */
    void delete(List<Long> idList);

    /**
     * 获取用户启用的角色列表
     *
     * @param userId 用户id
     * @return 角色列表
     */
    List<SysRole> getUserEnableList(Long userId);

    /**
     * 查询角色菜单权限
     */
    RoleMenuScopeVo getMenuScope(Long id);

    /**
     * 编辑菜单权限
     */
    void editMenuScope(EditRoleMenuScopeDto dto);


    /**
     * 查询角色部门权限
     */
    RoleDataScopeVo getDataScope(Long id);

    /**
     * 编辑角色部门权限
     */
    void editDataScope(EditRoleDataScopeDto dto);

}
