package com.mosty.common.core.business.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.mosty.common.core.business.entity.SysDept;
import com.mosty.common.core.business.entity.SysRole;
import com.baomidou.mybatisplus.extension.service.IService;
import com.mosty.common.core.business.entity.vo.*;
import com.mosty.common.token.DeptInfo;
import io.swagger.annotations.ApiOperation;

import java.util.List;

/**
* @author li
* @description 针对表【sys_role(角色表)】的数据库操作Service
* @createDate 2022-02-12 16:53:11
*/
public interface SysRoleService extends IService<SysRole> {

    @ApiOperation("查询角色分页信息")
    IPage<SysRole> selectByPage(RolePage rolePage);

    @ApiOperation("查询用户角色列表")
    List<SysRoleVO> getUserRoleList(Long userId);

    @ApiOperation("添加角色信息")
    void insertRole(AddRoleVO addRoleVo, String ipAddress);

    @ApiOperation("添加角色和菜单关联关系")
    void saveRoleMenuInfo(AddRoleMenuVO roleMenuVO);

    @ApiOperation("分配数据权限")
    void saveDataPermission(AddRoleDataPartitionVO addRoleDataPartitionVO,String ipAddress);

    @ApiOperation("根据菜单标识获取数据权限")
    DataPermissionVO getDataPermission(String menuUrl);

    @ApiOperation("分页查询未绑定当前用户的角色")
    IPage<SysRole> selectUnAccreditPage(RolePage rolePage);

    @ApiOperation("分页查询当前角色下用户")
    IPage<SysUserVO> getRoleUserList(GetUserRoleListVo vo);

    @ApiOperation("查询用户绑定的菜单ids")
    List<Long> getRoleMenuIds(Long roleId);

    @ApiOperation("获取部门最高角色等级权限")
    DeptInfo getSysDeptLevel(String orgCode);
}
