package com.sptg.permissions.biz.service;

import com.baomidou.mybatisplus.plugins.Page;
import com.sptg.common.core.beans.PageBean;
import com.sptg.common.core.beans.ResultBean;
import com.sptg.permissions.api.dto.RoleDto;
import com.sptg.permissions.api.entity.Role;
import java.io.Serializable;
import java.util.List;

/**
 * title: RoleServiceInterface
 * package: com.sptg.permissions.biz.security
 * description: 角色服务接口
 *
 *                  
 *                 
 */
public interface RoleServiceInterface {

    /**
     * 功能描述: 根据Id查询角色，并将查询结果加入Redis缓存中
     * @param id 主键
     * @return Role
     *                  
     *                       
     */
    Role selectById(Serializable id);

    /**
     * 功能描述: 分页查询角色列表
     * @param pageBean 查询条件
     * @return ResultBean<Page>
     *                  
     *                       
     */
    ResultBean<Page> pagingQuery(PageBean<Role,RoleDto> pageBean);

    /**
     * 功能描述: 创建角色
     * @param dto 角色信息
     * @return ResultBean<Boolean> { true：成功,false：失败 }
     *                  
     *                       
     */
    ResultBean<Boolean> addEntity(RoleDto dto);

    /**
     * 功能描述: 根据名称和机构Id查询角色
     * @param name 角色名称
     * @param orgId 机构Id
     * @return Role
     *                  
     *                       
     */
    Role selectByNameAndOrgId(String name,Long orgId);

    /**
     * 功能描述: 修改角色
     * @param dto 角色信息
     * @return ResultBean<Boolean> { true：成功,false：失败 }
     *                  
     *                       
     */
    ResultBean<Boolean> updateEntity(RoleDto dto);

    /**
     * 功能描述: 删除角色信息
     * @param dto 角色信息
     * @return ResultBean<Boolean> { true：成功,false：失败 }
     *                  
     *                       
     */
    ResultBean<Boolean> deleteEntity(RoleDto dto);

    /**
     * 功能描述: 根据机构Id获取角色列表
     * @param orgId 机构Id
     * @return List<Role>
     *                  
     *                       
     */
    List<Role> getListByOrgId(Serializable orgId);

    /**
     * 功能描述: 根据账号Id获取角色列表
     * @param accountId 账号Id
     * @return List<Role>
     *                  
     *                       
     */
    List<Role> getListByAccountId(Serializable accountId);

    /**
     * 功能描述: 批量修改
     * @param roleList 角色列表
     *                  
     *                       
     */
    void updateBatch(List<Role> roleList);

    /**
     * 功能描述: 获取某机构下以及其子机构下的角色列表
     * @param position 机构存储位置
     * @return List<Role>
     *                  
     *                      
     */
    List<Role> selectByOrgPosition(String position);
}
