

package com.blueland.bpm.identity;
import java.util.List;
import java.util.Map;

import com.blueland.bpm.identity.model.Org;
import com.blueland.bpm.identity.model.User;

/**
 * @author lw
 * @version 1.0
 * @since
 */

public interface UserService {
	/**
	 * 根据用户ID来获取用户对象
	 * 
	 * @param userId
	 * @return 用户对象
	 */
	User getUserById(String userId);
	
	User getCenterUserById(String userId);
	
	Map<String, Object> pageQueryUserByAttr(String userType, String userName, int pageNumber, int pageSize);
	
	User getUserByCode(String userCode,String orgId);
	
	User getUserByCode(String userCode);
	/**
	 * 根据用户所属组织机构ID来获取用户列表
	 * 
	 * @param orgId
	 *            组织机构ID
	 * @return 用户对象列表
	 */
	List<User> findUserByOrgId(String orgId);
	
	/**
	 * 根据用户所属组织机构对象列表来获取用户列表
	 * 
	 * @param orgId
	 *            组织机构ID
	 * @return 用户对象列表
	 */
	List<User> findUserByOrgIds(List<Org> orgs);

	/**
	 * 
	 * @param orgId
	 * @return
	 */
	List<User> findUserTreeByOrgId(String orgId);
	/**
	 * 根据用户对象做为查询条件来获取用户列表
	 * 
	 * @param paramEntity
	 * @return 用户对象列表
	 */
	List<User> findUserByEntitiyCriteria(User paramEntity);
	/**
	 * 根据组织机构ID来判断该组织下是否包含该用户
	 * @param orgId
	 * @return	true:是,false:否
	 */
	boolean hasUser(String orgId);
	/**
	 * 根据userName或者UserCode查询用户对象列表
	 * @param userName
	 * @param userCode
	 * @return
	 */
	public List<User> getUserByUserNameOrUserCode(String userName,String userCode);
	/**
	 * 根据用户ID和组织机构ID来判断该用户是否包含该组织中
	 * @param userId
	 * @param orgId
	 * @return
	 */
	boolean isUserInOrg(String userId, String orgId);
	/**
	 * 根据用户ID和角色ID来判断该用户是否包含该角色中
	 * @param userId
	 * @param roleId
	 * @return
	 */
	boolean isUserInRole(String userId, String roleId);
	
	/**
	 * 根据部门ID和usercode得到user对象
	 * @param deptId
	 * @param userCode
	 * @return
	 */
	public User getUserByDeptId(String deptId,String userCode);
	
	
	/**
	 * 根据多个userid获取对应手机号码列表
	 * @param userId
	 * @return
	 */
	public List<String> findUserMobiles(List<String> userId);
	
	
	
	/**
	 * 根据角色ID来获取用户列表
	 * 
	 * @param roleId
	 * @return 用户对象列表
	 */
	List<User> findUserByRoleId(String roleId);
	/**
	 * 根据角色ID来获取用户列表
	 * 
	 * @param roleId
	 * @return 用户对象列表
	 */
	List<String> findUserIdByRoleId(String roleId);
	List<User> findAllUserByRole(String roleId);
	/**
	 * 根据角色ID来获取用户列表
	 * 
	 * @param roleId
	 * @return 用户对象列表
	 */
	List<User> findUserIdByRoleCascade(String roleId);
	/**
	 * 根据角色ID和orgId来获取用户列表
	 * @param roleId 角色id
	 * @param orgId  部门id
	 * @param flag   需要取出的用户数（如果为空则获取全部）
	 * @return
	 */
	List<User> findUserByRole(String roleId,String companyId,String deptId);
	
	/**
	 * 根据角色ID和orgId来获取用户列表
	 * @param roleId 角色id
	 * @param orgId  部门id
	 * @param flag   需要取出的用户数（如果为空则获取全部）
	 * @return
	 */
	List<User> findUserByRoleCascade(String roleId,String orgId,Integer flag);
	

	/**
	 * 根据角色ID和组织机构ID来获取用户列表
	 * 
	 * @param roleId
	 *            角色ID
	 * @param orgId
	 *            组织机构ID
	 * @return 用户对象列表
	 */
	List<User> findUser(String roleId, String orgId);
	
	
	Map<String, Object> ssoLogin(String bwUcLocalCookieValue);
}
