userserviceimpl.java

来自「一个基本的图书馆管理系统」· Java 代码 · 共 227 行

JAVA
227
字号
package c18.service;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.HibernateException;
import org.hibernate.Session;

import c18.dao.HibernateSessionFactory;
import c18.dao.UserDao;
import c18.dao.UserDaoImpl;
import c18.entity.User;
import c18.helper.PageBean;
import c18.helper.PageResult;
import c18.struts.action.exception.ActionException;
import c18.session.UserSession;
import c18.struts.action.exception.ExistReferActionException;
import c18.struts.action.exception.InvalidPasswordActionException;
import c18.struts.action.exception.NotFindActionException;
import c18.struts.action.exception.NotLoginActionException;
import c18.struts.action.exception.ExistNameActionException;

public class UserServiceImpl implements UserService {
	/**
	 * 日志操作对象
	 */
    private static final Log log = LogFactory.getLog(UserServiceImpl.class);

	public int login(String loginName, String password,
			HttpServletRequest request, HttpServletResponse response)
			throws ActionException {
		//得到当前Session
		Session session = HibernateSessionFactory.getSession();
		//组建UserDao对象
		UserDao userDao = new UserDaoImpl(session);
		//查询登陆名用户
		List list = userDao.findByLoginName(loginName);

		//不存在此登陆名用户
		if (list == null || list.size() < 1) {
			log.debug("用户登陆名" + loginName + "的用户不存在");
			throw new NotFindActionException("用户登陆名" + loginName + "的用户不存在");
		}

		//存在此登陆名用户,判断密码
		User user = (User) list.get(0);

		//密码不正确
		if (password == null || !password.equals(user.getPassword())) {
			log.debug("用户登陆名" + loginName + "的用户密码不正确");
			throw new InvalidPasswordActionException("用户登陆名" + loginName + "的用户密码不正确");
		}

		//在Session中保存登陆信息
		UserSession.saveSession(user, request, response);

		return user.getUserNo();
	}

	public int loginOn(HttpServletRequest request, HttpServletResponse response)
			throws ActionException {
		//取用户登陆信息
		UserSession usersession = UserSession.getSession(request, response);
		//未登陆或Session已失效
		if (usersession == null) {
			throw new NotLoginActionException("用户未登陆或登陆已失效");
		}
		return usersession.getUserNo();
	}

	public int logout(HttpServletRequest request, HttpServletResponse response)
			throws ActionException {
		//取用户登陆信息
		UserSession usersession = UserSession.getSession(request, response);
		//有登陆信息
		if (usersession != null) {
			//清除用户登陆信息
			UserSession.removeSession(request, response);

		}

		return 0;
	}

	public int register(User user) throws ActionException {
		//得到当前Session
		Session session = HibernateSessionFactory.getSession();
		//开始事务
		session.beginTransaction();
		//组建UserDao对象
		UserDao userDao = new UserDaoImpl(session);
		
		
		//判断是否已存在同一账号
		List users = userDao.findByLoginName(user.getLoginName());
		if (users != null && users.size() > 0) {
			//已存在同一账号
			//事务回滚
			session.getTransaction().rollback();
			
			throw new ExistNameActionException("已存在此账号的用户");
		}

		//生成用户
		userDao.save(user);
		
		//事务提交
		session.getTransaction().commit();

		return user.getUserNo();
	}

	public PageResult searchByLoginName(String loginName, PageBean pageBean) {
		//得到当前Session
		Session session = HibernateSessionFactory.getSession();
		//组建UserDao对象
		UserDao userDao = new UserDaoImpl(session);
		
		//搜索
		return userDao.searchByLoginName(loginName, pageBean);
	}

	public User getUser(int userNo) throws ActionException {
		//得到当前Session
		Session session = HibernateSessionFactory.getSession();
		//组建UserDao对象
		UserDao userDao = new UserDaoImpl(session);
		
		return userDao.get(userNo);
	}

	public PageResult getUsers(PageBean pageBean) throws ActionException {
		//得到当前Session
		Session session = HibernateSessionFactory.getSession();
		//组建UserDao对象
		UserDao userDao = new UserDaoImpl(session);
		
		return userDao.getUsers(pageBean);
	}

	public void modUser(User user) throws ActionException {
		//得到当前Session
		Session session = HibernateSessionFactory.getSession();
		//开始事务
		session.beginTransaction();
		//组建UserDao对象
		UserDao userDao = new UserDaoImpl(session);
		
		//得到原用户信息
		User moduser = userDao.get(user.getUserNo());
		if(moduser == null){//原用户信息不存在
			//事务回滚
			session.getTransaction().rollback();
			log.debug("原始用户信息不存在");
			throw new ExistNameActionException("原始用户信息不存在");
		}
		
		
		//判断是否已存在同一登陆名
		List users = userDao.findByLoginName(user.getLoginName());
		if (users != null && users.size() > 0 
				&& ((User)users.get(0)).getUserNo() != user.getUserNo()) {
			
			//已存在同一登陆名
			//事务回滚
			session.getTransaction().rollback();
			log.debug("已存在同一账号的其它用户");
			throw new ExistNameActionException("已存在同一账号的其它用户");
		}
		
		moduser.setBirthday(user.getBirthday());
		moduser.setCert(user.getCert());
		moduser.setCertType(user.getCertType());
		moduser.setEmail(user.getEmail());
		moduser.setLoginName(user.getLoginName());
		moduser.setPassword(user.getPassword());
		moduser.setPhone(user.getPhone());
		moduser.setSex(user.getSex());
		moduser.setUserName(user.getUserName());
		moduser.setUserNo(user.getUserNo());
		
		//更新用户
		userDao.update(moduser);
		
		//事务提交
		session.getTransaction().commit();
		
	}

	public void delUser(int userNo) throws ActionException {
		//得到当前Session
		Session session = HibernateSessionFactory.getSession();
		//开始事务
		session.beginTransaction();
		//组建UserDao对象
		UserDao userDao = new UserDaoImpl(session);
		
		//得到原用户信息
		User user = userDao.get(userNo);
		if(user == null){//原用户信息不存在
			//事务回滚
			session.getTransaction().rollback();
			log.debug("用户信息不存在");
			throw new NotFindActionException("用户信息不存在");
		}
		
		
		try {
			//删除用户
			userDao.remove(user);
		} catch (HibernateException e) { //删除错误,回滚
			//回滚
			session.getTransaction().rollback();
			log.debug("可能存在其它引用,delUser()失败");
			throw new ExistReferActionException("此用户可能存在引用,请先删除相关引用");
		}
		
		//事务提交
		session.getTransaction().commit();
	}

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?