package com.zcloud.service.system;

import java.util.List;

import com.zcloud.entity.Page;
import com.zcloud.entity.PageData;
import com.zcloud.entity.system.User;

/**
 * 说明：用户服务接口
 * 作者：luoxiaobao
 * 官网：www.qdkjchina.com
 */
public interface UsersService {

	/**通过用户名获取用户信息
	 * @param pd
	 * @return
	 * @throws Exception
	 */
	public PageData findByUsername(PageData pd)throws Exception;

	/**通过用户ID获取用户信息
	 * @param pd
	 * @return
	 * @throws Exception
	 */
	public PageData findById(PageData pd)throws Exception;
	public List<PageData> listbyId(PageData pd)throws Exception;

	/**通过企业ID获取用户主账号信息
	 * @param pd
	 * @return
	 * @throws Exception
	 */
	public List<PageData> findByCorpId(PageData pd)throws Exception;

	/**通过用户名称获取用户信息
	 * @param pd
	 * @return
	 * @throws Exception
	 */
	public PageData findByName(PageData pd)throws Exception;

	/**用户列表
	 * @param page
	 * @return
	 * @throws Exception
	 */
	public List<PageData> userlistPage(Page page)throws Exception;

	/**
	 * 获取该企业下所有用户，用户判断是否重复
	 * @param pd
	 * @return
	 * @throws Exception
	 */
	public List<PageData> findUserNameAll (PageData pd)throws Exception;

	/**通过用户ID获取用户信息和角色信息
	 * @param USER_ID
	 * @return
	 * @throws Exception
	 */
	public User getUserAndRoleById(String USER_ID) throws Exception;

	/**保存用户IP
	 * @param pd
	 * @throws Exception
	 */
	public void saveIP(PageData pd)throws Exception;

	/**通过邮箱获取数据
	 * @param pd
	 * @return
	 * @throws Exception
	 */
	public PageData findByEmail(PageData pd)throws Exception;

	/**通过编码获取数据
	 * @param pd
	 * @return
	 * @throws Exception
	 */
	public PageData findByNumbe(PageData pd) throws Exception;

	/**列出某角色下的所有用户
	 * @param pd
	 * @return
	 * @throws Exception
	 */
	public List<PageData> listAllUserByRoldId(PageData pd) throws Exception;

	/**用户列表(全部)
	 * @param pd
	 * @return
	 * @throws Exception
	 */
	public List<PageData> listAllUser(PageData pd)throws Exception;

	List<PageData> listAll(PageData pd)throws Exception;

	/**用户列表(弹窗选择用)
	 * @param page
	 * @return
	 * @throws Exception
	 */
	public List<PageData> listUsersBystaff(Page page)throws Exception;

	/**保存用户
	 * @param pd
	 * @throws Exception
	 */
	public void saveUser(PageData pd)throws Exception;

	/**保存用户系统皮肤
	 * @param pd
	 * @throws Exception
	 */
	public void saveSkin(PageData pd)throws Exception;

	/**修改用户
	 * @param pd
	 * @throws Exception
	 */
	public void editUser(PageData pd)throws Exception;

	/**修改公司名称时同步修改企业账号
	 * @param pd
	 * @throws Exception
	 */
	public void updateCornUser(PageData pd)throws Exception;
	public void editPassword(PageData pd)throws Exception;

	/**删除用户
	 * @param pd
	 * @throws Exception
	 */
	public void deleteUser(PageData pd)throws Exception;
	public void deleteUsers(PageData pd)throws Exception;
	/**批量删除用户
	 * @param pd
	 * @throws Exception
	 */
	public void deleteAllUser(String[] USER_IDS)throws Exception;

	/**修改用户小程序权限
	 * @param pd
	 * @throws Exception
	 */
	public void editUserFuns(PageData pd);

	/**查询小程序用户
	 * @param pd
	 * @return
	 * @throws Exception
	 */
	public PageData findAppUserById(PageData pd) throws Exception;

	/**用户同意协议
	 * @param pd
	 * @throws Exception
	 */
	public void agreeProtocol(PageData pd) throws Exception;
	/**
	 * 获取企业的主账号
	 * @param pd
	 * @return
	 * @throws Exception
	 */
	public List<PageData> findCorpMain (PageData pd) throws Exception;

	/**
	 * 获取企业的主账号(及分组id)
	 * @param pd
	 * @return
	 * @throws Exception
	 */
	public PageData findCorpMainUser (PageData pd) throws Exception;
	/**获取人员Cascader数据(人员ID，姓名，部门ID，部门级别)
	 * @param pd
	 * @return
	 * @throws Exception
	 */
	public List<PageData> listCascader(PageData pd)throws Exception;


	/**修改用户角色
	 * @param pd
	 * @throws Exception
	 */
	public void updateUserRole(PageData pd)throws Exception;

	/**
	 * 获取企业人员-部门-岗位
	 * @param pd
	 */
    List<PageData> listUserDeptPostlist(PageData pd)throws Exception;

	void batchUpdate(List<PageData> usersList);

	void updateGeneralUserRole(PageData userRole);
}
