/**
 * 版权所有 ©2020 莱欧有限公司
 * 工程名：base02
 * 文件名：UserService.java
 * 创建日期：2020年12月23日 下午3:45:30
 * 作者：mt.W
 */
package com.lion.service;

import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.lion.config.LoginUserInfoCache;
import com.lion.dao.LogDao;
import com.lion.dao.UserDao;
import com.lion.entity.LoginUserInfo;
import com.lion.entity.User;
import com.lion.util.CheckUtil;
import com.lion.util.TokenUtil;
import com.lion.util.Util;

import jodd.util.StringUtil;

/**
 * 类描述
 * @author mt.W
 * @since 2020年12月23日
 */
@Service
public class UserService {
	@Autowired
	private UserDao dao;
	@Autowired
	private LogDao logDao;
	
	/**
	 * 
	 * 方法描述  查询人员列表
	 * @author mt.W
	 * @since 2020年12月23日
	 * @param req
	 * @param session
	 * @param page
	 * @param rows
	 * @param orgid
	 * @param phname
	 * @return
	 */
	public Map<String,Object> getUser(String page,String rows,String orgid,String phname,HttpServletRequest req){
		int row=Integer.valueOf(rows);
		int start=(Integer.valueOf(page)-1)*row;
		if(StringUtil.isEmpty(orgid)){
			orgid=TokenUtil.getUserInfo(req).getOrgid();
		}
		List<Map<String, Object>> list=dao.getUser(start, row, phname,orgid);
		int count=dao.getUserCount(phname,orgid);
		Map<String,Object> map=Util.responseMap("true",list,count);
		int totalpages=count/row;
		if(count%row!=0){
			totalpages++;
		}
		map.put("currPage", page);
		map.put("totalpages",totalpages);
		return map;
	}
	/**
	 * 
	 * 方法描述       迁移人员
	 * @author mt.W
	 * @since 2019年10月30日
	 * @param req
	 * @param id  人员 id
	 * @param orgid  部门id 
	 * @return
	 */
	public String updateUser(String id,String orgid){
		int count = dao.updateUserOrgid(id, orgid);
		if(count>0){
			List<Map<String,Object>> list=dao.getLoginUserToken(id);
			if(list.size()>0){
				LoginUserInfo user=null;
				for(Map<String,Object> map:list){
					String token=map.get("cookie").toString();
					user=LoginUserInfoCache.getLoginUserInfoByToken(token);
					if(user!=null){
						user.setOrgid(orgid);
					}
				}
			}
			return Util.responseString("true", "操作成功");
		}
		return Util.responseString("false", "操作失败");
	}
	/**
	 * 方法描述		保存人员信息修改
	 * @author wcj
	 * @since 2019年11月6日
	 * @param req
	 * @return	
	 */
	public String updataUser(HttpServletRequest req, HttpSession session, User u) {
		LoginUserInfo s = TokenUtil.getUserInfo(req);
		int rs = 0;
		String context = "";
		String type = "";
		if (CheckUtil.checkStrIsName(u.getName())) {
			return Util.responseString("false", "人员姓名中不能出现特殊符号");
		}
		int acount = dao.getIfAccount(u);
		if(acount>0){
			return Util.responseString("false", "登录账号重复");
		}
		if(StringUtil.isNotEmpty(u.getPhone())){
			int pcount = dao.getIfPhone(u);
			if(pcount>0){
				return Util.responseString("false", "手机号重复");
			}
		}
		// 判断新增还是修改
		if (StringUtil.isNotEmpty(u.getId())) {// 修改
			type = "人员修改";
			context = s.getUserAccount() + "进行修改操作";
			rs = dao.editUserById(u);
			if(rs>0){
				List<Map<String,Object>> list=dao.getLoginUserToken(u.getId());
				if(list.size()>0){
					LoginUserInfo user=null;
					for(Map<String,Object> map:list){
						String token=map.get("cookie").toString();
						user=LoginUserInfoCache.getLoginUserInfoByToken(token);
						if(user!=null){
							user.setUserAccount(u.getUserAccount());
							user.setRoleid(u.getRoleid());
						}
					}
				}
			}
		} else {
			if(StringUtil.isEmpty(u.getPwd())){
				u.setPwd("123456");
			}
			rs = dao.addUser(u, s.getUserId());
			type = "人员添加";
			context =  s.getUserAccount() + "进行了人员添加，姓名为" + u.getName() + "手机号为:" + u.getPhone();
		}
		if (rs > 0) {
			logDao.saveLog(context, type, s.getUserId());
			return Util.responseString("true", "操作成功");
		}
		return Util.responseString("false", "操作失败");
	}
	
	
	/**
	 * 方法描述		删除人员
	 * @author wcj
	 * @since 2019年11月7日
	 * @param req
	 * @param id
	 * @return	
	 */
	public String deleteUser(HttpServletRequest req,String id){
		int count = dao.deleteUser(id);
		if(count>0){
			return Util.responseString("true", "操作成功");
		}
		return Util.responseString("false", "操作失败");
	}
	
	/**
	 * 方法描述		查询所有角色
	 * @author wcj
	 * @since 2019年11月7日
	 * @param req
	 * @return	
	 */
	public Map<String,Object> getrole(HttpServletRequest req){
		List<Map<String,Object>> list = dao.getrole();
		Map<String,Object> map=Util.responseMap("true",list);
		return map;
	}
	/**
	 * 
	 * 方法描述   初始化人员密码
	 * @author mt.W
	 * @since 2020年2月25日
	 * @param req
	 * @param id
	 * @return
	 */
	public String initPwd(HttpServletRequest req,String id){
		int count = dao.updateUserPwd(id, "123456");
		if(count>0){
			return Util.responseString("true", "操作成功");
		}
		return Util.responseString("false", "操作失败");
	}
}
