package com.zcloud.mapper.datasource.system;

import java.util.List;

import com.zcloud.entity.Page;
import com.zcloud.entity.PageData;
import com.zcloud.entity.system.Role;
import com.zcloud.entity.system.User;
import org.apache.ibatis.annotations.Update;

/**
 * 说明:用户Mapper
 * 作者:luoxiaobao
 * 官网:www.qdkjchina.com
 */
public interface UsersMapper {
	//通过用户ID获取角色等级
	PageData findLevelByUserId(PageData pd);
	/**通过角色ID数组获取角色列表
	 * @param arryROLE_ID
	 * @throws Exception
	 */
	List<Role> listAllRolesByArryROLE_ID(String[] arryROLE_ID);

	/**通过组ID获取组下级角色列表
	 * @param pd
	 * @return
	 */
	List<Role> listAllRolesByPId(PageData pd);

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

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

	/**用户列表
	 * @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> listUserbyDep(PageData pd);

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

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

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

	/**获取人员Cascader数据(人员ID,姓名,部门ID,部门级别)
	 * @param pd
	 * @return
	 * @throws Exception
	 */
	List<PageData> listCascader(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);

	/**
	 * 通过企业ID获取用户信息
	 * @param corpinfo_id
	 * @return
	 */
    User getCorpInfoId(String corpinfo_id);

	/**
	 * 通过部门ID获取用户信息
	 * @param department_id
	 * @return
	 */
	List<PageData> getDepartmentId(String department_id);

	/**清除在线学习人员分类
	 * @param pd
	 * @return
	 * @throws Exception
	 */
    void clearLearnerCategory(PageData pd);

	/**修改用户排班信息
	 * @param pd
	 * @return
	 * @throws Exception
	 */
    void editUserScheduling(PageData pd);

    List<PageData> userConfirmPage(Page page);

	List<PageData> userExaminePage(Page page);

	List<PageData> userApprovePage(Page page);

	/**
	 * 首页隐患排查数据 企业人数(总数、已参加排查人数)
	 * @param pd
	 * @return
	 */
	List<PageData> statisticsByCorp(PageData pd);

    PageData findByDeptName(String user_id);
	 List<PageData> listUserAndDept(PageData pd);

    PageData findByRegulatoryId(PageData pd);

    List<PageData> userlistAll(PageData pd);

	/**
	 * 用户列表(监管端用户+企业端用户)
	 * @return
	 */
	List<PageData> listAllManageAndCorp(PageData pd);

	void lockUser(PageData pd);

    List<PageData> findByPostId(PageData pd);

	PageData findByIdForEmis(PageData pd);

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

	void unlockUser (PageData pd)throws Exception;


	List<PageData> userlistAllToExcel(PageData pd);

    PageData findByCorpInfoId(PageData pd);

	List<PageData> selectUserListByUserIds(PageData pd);
}