package com.zcloud.mapper.dsno2.system;

import java.util.List;

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

/**
 * 说明：用户Mapper
 * 作者：luoxiaobao
 * 官网：www.qdkjchina.com
 */
public interface UsersMapper {

	/**通过用户获取数据
	 * @param pd
	 * @return
	 */
	PageData findByUsername(PageData pd);
	PageData findByName(PageData pd);

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

	/**
	 * 获取该企业下的所有用户名，用户判断重复，减少返回字段，优化压力
	 * @param pd
	 * @return
	 */
	List<PageData> findUserNameAll(PageData pd);

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

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

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

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

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

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

	/**通过用户ID获取数据
	 * @param pd
	 * @return
	 * @throws Exception
	 */
	PageData findById(PageData pd);

	List<PageData> listbyId(PageData pd);
	/**保存用户IP
	 * @param pd
	 */
	void saveIP(PageData pd);

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

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

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

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

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

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

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

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

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

    List<PageData> findByCorpId(PageData pd);

	/**
	 * 根据机构id查询机构下人数
	 * @param pd
	 * @return
	 */
    Integer getUserCountByAgencyId(PageData pd);

	/**
	 * 删除机构账号
	 * @param pd
	 * @return
	 */
    Integer deleteAgencyAccountByAgencyId(PageData pd);

	/**
	 * 项目负责人管理-开始部署-获取实施人员下拉列表
	 * @param pd
	 */
    List<PageData> getImplementPersonList(PageData pd);

	/**
	 * 项目负责人管理-交付-获取运维人员下拉列表
	 * @param pd
	 */
    List<PageData> getOperationPersonList(PageData pd);

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

	List<PageData> listAll(PageData pd);

    void batchUpdate(List<PageData> list);

	void updateGeneralUserRole(PageData userRole);
}
