package com.zcloud.service.system.impl;

import java.util.List;

import com.zcloud.util.UuidUtil;
import org.apache.shiro.crypto.hash.SimpleHash;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.zcloud.entity.Page;
import com.zcloud.entity.PageData;
import com.zcloud.entity.system.User;
import com.zcloud.mapper.dsno2.system.UsersMapper;
import com.zcloud.service.system.UsersService;

/**
 * 说明：用户服务接口实现类
 * 作者：luoxiaobao
 * 官网：www.qdkjchina.com
 */
@Service
@Transactional //开启事物
public class UsersServiceImpl implements UsersService {

	@Autowired
	private UsersMapper usersMapper;


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

	/**通过用户ID获取用户信息
	 * @param pd
	 * @return
	 * @throws Exception
	 */
	public PageData findById(PageData pd)throws Exception{
		return	usersMapper.findById(pd);
	}

	public List<PageData> listbyId(PageData pd)throws Exception{
		return usersMapper.listbyId(pd);
	}

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

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

	/**
	 * 获取该企业下所有用户，用户判断是否重复
	 * @param pd
	 * @return
	 * @throws Exception
	 */
	public List<PageData> findUserNameAll(PageData pd) throws Exception {
		// TODO Auto-generated method stub
		return usersMapper.findUserNameAll(pd);
	}


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

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

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

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

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

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

	public List<PageData> listAll(PageData pd)throws Exception{
		return usersMapper.listAll(pd);
	}

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

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

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

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

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

	public void editPassword(PageData pd)throws Exception{
		usersMapper.editPassword(pd);
	}

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

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

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

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

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


	@Override
	public List<PageData> listUserDeptPostlist(PageData pd) throws Exception {
		return usersMapper.listUserDeptPostlist(pd);
	}

	@Override
	public void batchUpdate(List<PageData> usersList){
		usersMapper.batchUpdate(usersList);
	}

	@Override
	public void updateGeneralUserRole(PageData userRole) {
		usersMapper.updateGeneralUserRole(userRole);
	}
}
