package com.xmomen.module.account.service;

import com.xmomen.module.account.web.controller.vo.GroupPermissionRelation;
import com.xmomen.module.account.web.controller.vo.UserGroupRelation;
import com.xmomen.module.user.entity.SysRoles;
import com.xmomen.framework.mybatis.page.Page;

import java.util.List;

/**
 * <p>User: Zhang Kaitao
 * <p>Date: 14-1-28
 * <p>Version: 1.0
 */
public interface RoleService {

     // 根据角色ID查询用户
     // @param roleId 角色ID
     // @param chose 是否选择
     // @param pageSize 每页大小
     // @param pageNum 当前页码
     // @return 用户组关系分页对象

    public Page<UserGroupRelation> findUsersByRoles(String roleId, boolean chose, Integer pageSize, Integer pageNum);

     // 查询用户角色
     // @param keyValue 查询关键字
     // @param pageSize 每页大小
     // @param pageNum 当前页码
     // @return 角色分页对象
    public Page<SysRoles> findRoles(String keyValue, Integer pageSize, Integer pageNum);

     // 获取角色
     // @param roleId 角色ID
     // @return 角色对象
    public SysRoles getRole(Integer roleId);

     // 获取角色
     // @param sysRoles 角色对象
    public void updateRole(SysRoles sysRoles);

     // 更新用户组信息并添加用户
     // @param sysRoles 角色对象
     // @param userIdList 用户ID列表
    public void updateRole(SysRoles sysRoles, List<Integer> userIdList);

     // 创建角色
     // @param role 角色对象
     // @return 角色对象
    public SysRoles createRole(SysRoles role);

     // 删除角色
     // @param roleId 角色ID
    public void deleteRole(Integer roleId);

     // 根据角色查询权限
     // @param roleId 角色ID
     // @param chose 是否选择
     // @param pageSize 每页大小
     // @param pageNum 当前页码
     // @return 角色权限关系分页对象
    public Page<GroupPermissionRelation> findPermissionByRoles(String roleId, boolean chose, Integer pageSize, Integer pageNum);

     // 添加角色-权限之间关系
     // @param roleId 角色ID
     // @param permissionIds 权限ID列表
    public void correlationPermissions(Integer roleId, Integer... permissionIds);

     // 移除角色-权限之间关系
     // @param roleId 角色ID
     //@param permissionIds 权限ID列表
    public void unCorrelationPermissions(Integer roleId, Integer... permissionIds);

}
