package com.itjob.service;

import java.util.LinkedList;
import java.util.List;

import com.itjob.dao.BaseDao;
import com.itjob.dao.model.User;

/**
 * 用户信息管理的业务逻辑实现类.
 */
public class UserManagerImpl implements UserManager{
	protected BaseDao dao;

	public void setDao(BaseDao dao) {
		this.dao = dao;
	}

	/**
	 * 用户登录
	 * @param userNumber 用户帐号
	 * @param userPasswd 用户密码
	 * @return 0:登录成功，1:用户不存在，2:密码错误，3:号码已注销
	 */
	public int userLogin(String userNumber, String userPasswd) throws Exception {
		LinkedList<Object> params = new LinkedList<Object>();
		params.add(userNumber);
		List list = dao.hqlQuery("from User where userNumber=?",
					params.toArray());
		if (list != null && list.size() > 0) {
			User user = (User) list.get(0);
			if (user.getUserState() != 1) {
				return 3;
			} else if (userPasswd.equals(user.getUserPasswd())) {
				return 0;
			} else {
				return 2;
			}
		} else {
			return 1;
		}
	}
	
	/**
	 * 获得用户信息
	 * @param userNumber 用户帐号
	 * @return 返回用户信息
	 */
	public User getUser(String userNumber) throws Exception {
		User user = (User) dao.getObject(User.class, userNumber);
		return user;
	}
	
	/**
	 * 注销用户
	 * @param userNumber 用户帐号
	 */
	public void logoutUser(String userNumber) throws Exception {
		User user = (User) dao.getObject(User.class, userNumber);
		// 将状态更新为“注销期内保号”
		user.setUserState(3);
		dao.updateObject(user);
	}

	/**
	 * 设置振铃方式
	 * @param userNumber 用户帐号
	 * @param ringType   振铃方式
	 */
	public void setRingType(String userNumber, int ringType) throws Exception {
		User user = (User) dao.getObject(User.class, userNumber);
		user.setRingType(ringType);
		dao.updateObject(user);
	}
	
	/**
	 * 修改一号通用户的密码
	 * @param userNumber 用户帐号
	 * @param userPasswd 用户密码
	 */
	public void updateUserPasswd(String userNumber, String userPasswd) throws Exception {
		User user = (User) dao.getObject(User.class, userNumber);
		user.setUserPasswd(userPasswd);
		dao.updateObject(user);
	}
}
