package cn.ey.biz.module.system.service.permission;

import cn.ey.biz.common.pojo.PageResult;
import cn.ey.biz.module.system.controller.admin.permission.vo.dataRole.DataRoleVO;
import cn.ey.biz.module.system.controller.admin.permission.vo.role.RoleFunctionalReqVO;
import cn.ey.biz.module.system.controller.admin.permission.vo.role.RoleSimpleDataRespVO;
import cn.ey.biz.module.system.dal.dataobject.user.AdminUserDO;

import java.util.List;

/**
 * 数据角色 Service 接口
 */
public interface DataRoleService {

    /**
     * 创建角色
     *
     * @param roleVO 数据角色信息
     * @return 角色编号
     */
    Long createRole(DataRoleVO roleVO);

    /**
     * 更新角色
     *
     * @param roleVO 更新角色信息
     */
    void updateRole(DataRoleVO roleVO);

    /**
     * 删除角色
     *
     * @param id 角色编号
     */
    void deleteRole(Long id);

    /**
     * 获得角色分页
     *
     * @param roleVO 角色分页查询
     * @return 角色分页结果
     */
    PageResult<DataRoleVO> getRolePage(DataRoleVO roleVO);

    List<DataRoleVO> getRoleListByUserId(Long id);

    List<DataRoleVO> getAllRoleList();

    List<AdminUserDO> getUsersByDataRoleId(Long dataRoleId);

    List<AdminUserDO> getUsersByDataRoleCode(String code);

    List<RoleSimpleDataRespVO> getDataRoles(RoleFunctionalReqVO reqVO);

    String getMaxRoleCodeByAppAndClass(String appCode);
}
