package com.ylcm.sys.mapper;

import java.util.List;
import java.util.Map;

import com.ylcm.sys.domain.Role;


public interface RoleMapper {

	/**
	 * 新增角色
	 * 
	 * @param role
	 *            角色信息
	 */
	void addRole(Role role);

	/**
	 * 修改角色
	 * 
	 * @param role
	 *            角色信息
	 */
	void updRole(Role role);

	/**
	 * 删除角色
	 * 
	 * @param roleId
	 *            角色标识
	 */
	void delRole(int roleId);

	/**
	 * 根据条件查询角色总数
	 * 
	 * @param map
	 *            角色名称
	 * @return 角色总数
	 */
	@SuppressWarnings("rawtypes")
	int getRowCount(Map map);

	/**
	 * 根据条件查询角色列表
	 * 
	 * @param map
	 *            角色名称
	 * @return 角色集合
	 */
	@SuppressWarnings("rawtypes")
	List<Role> getRoleList(Map map);

	/**
	 * 查询角色列表
	 * 
	 * @return 角色集合
	 */
	List<Role> getRolesList();

	/**
	 * 根据角色标识获取角色信息
	 * 
	 * @param roleId
	 *            角色标识
	 * @return 角色信息
	 */
	Role getRoleById(int roleId);

	/**
	 * 根据角色编码获取角色
	 * 
	 * @param code
	 *            角色编码
	 * @return 角色信息
	 */
	Role getRoleByCode(String code);

	/**
	 * 根据用户标识获取用户角色
	 * 
	 * @param userId
	 *            用户标识
	 * @return 用户角色
	 */
	Role getRolesByUserId(int userId);

	/**
	 * 根据用户标识获取用户角色(登录)
	 * 
	 * @param userId
	 *            用户标识
	 * @return 用户角色
	 */
	Role getByUserIdForLogin(int userId);

	/**
	 * 删除角色信息(只删除未关联用户的权限)
	 * 
	 * @param ids
	 *            角色标识集合
	 */
	void delRolesByIds(String[] ids);

	/**
	 * 根据用户标识删除用户角色
	 * 
	 * @param userId
	 *            用户标识
	 */
	void delUserRolesByUserId(int userId);

	/**
	 * 新增用户角色关联信息
	 * 
	 * @param map
	 *            用户角色信息
	 */
	@SuppressWarnings("rawtypes")
	void addUserRole(Map map);

	/**
	 * 根据角色标识删除角色权限
	 * 
	 * @param roleId
	 *            角色标识
	 */
	void delRolePermsByRoleId(int roleId);

	/**
	 * 新增角色权限
	 * 
	 * @param map
	 *            角色权限信息
	 */
	@SuppressWarnings("rawtypes")
	void addRolePerm(Map map);
	
}