package com.zcloud.mapper.datasource.system;

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

import java.util.List;

/**
 * 说明：用户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);
	List<PageData> listAll(PageData pd);

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

	/**通过用户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 pd
	 * @return
	 * @throws Exception
	 */
	List<PageData> listUserByDept(PageData pd);

	/** 获取获取部门账号
	 * @param pd
	 * @return
	 * @throws Exception
	 */
	List<PageData> listUserbyDep(PageData pd);

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

	/**通过用户ID获取数据
	 * @param pd
	 * @return
	 * @throws Exception
	 */
	PageData findById(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);
	void editUserState(PageData pd);
	/**删除用户
	 * @param pd
	 * @throws Exception
	 */
	void deleteUser(PageData pd);

	/**批量删除用户
	 * @param pd
	 * @throws Exception
	 */
	void deleteAllUser(String[] USER_IDS);
	List<PageData>  listUserBYids(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
	 */
	List<PageData> findUserNameAll(PageData pd);

	/**
	 * 	获取用户
	 * @param pd
	 * @return
	 */
	List<PageData> findAllUser(PageData pd);
	/**
	 * 获取企业的主账号
	 * @param pd
	 * @return
	 * @throws Exception
	 */
	PageData findCorpMain (PageData pd);



	/**获取账号及部门岗位
	 * @param page
	 * @return
	 * @throws Exception
	 */
	List<PageData> listUserDepPos(PageData pd);

	/**
	 * 查询公司员工总数
	 * @param pd
	 * @return
	 */
	int getUserCount(PageData pd);

	/**
	 * 查询公司检查过清单的员工总数
	 * @param pd
	 * @return
	 */
	int getWorkedUserCount(PageData pd);

	/**查询用户倒班周期数据
	 * @param page
	 * @return
	 * @throws Exception
	 */
	List<PageData> getUserWork(PageData pd);

	/**修改用户倒班周期
	 * @param pd
	 * @throws Exception
	 */
	void editShiftWork(PageData pd);

	/**获取人员Cascader数据(人员ID，姓名，部门ID，部门级别)
	 * @param pd
	 * @return
	 * @throws Exception
	 */
	List<PageData> listCascader(PageData pd);

	/**清除在线学习人员分类
	 * @param pd
	 * @return
	 * @throws Exception
	 */
	void clearLearnerCategory(PageData pd);
	/**用户列表(弹窗选择用)
	 * @param page
	 * @return
	 * @throws Exception
	 */
	List<PageData> listUserDepPoslistPage(Page page);

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

	/**更新用户pushcid
	 * @param pd
	 * @throws Exception
	 */
	void updatePushCid(PageData pd);

	/**
	 * 	用户列表(本部门及所有上级部门领导负责人)
	 * @param pd
	 * @return
	 */
	List<PageData> listUserLeader(PageData pd);

	void updateCornUser(PageData pd);

	PageData findUserDept(PageData pd);

	List<PageData> listUserlistPage(Page page);

	List<PageData> listUserAndDept(PageData pd);

	PageData findByRegulatoryId(PageData pd);

	PageData findByIdForEmis(PageData pd);

	PageData findByCardNo(PageData getCordNo);

	List<PageData> getUserCardNoAll(PageData departPd);

	List<PageData> selectUserListByUserIds(PageData pd);

    PageData getUserByCardNo(PageData pageData);

	void removeCardNoUser(PageData pageData);

	void editUserCardNoByPid(PageData pageData);

	void editUserWorkName(PageData pageData);

	void removeUserWorkName(PageData pageData);

	int hasUserUseWord(PageData query);
}
