borrowserviceimpl.java

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

JAVA
306
字号
package c18.service;

import java.util.Date;

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

import c18.dao.BookDao;
import c18.dao.BookDaoImpl;
import c18.dao.BorrowDao;
import c18.dao.BorrowDaoImpl;
import c18.dao.HibernateSessionFactory;
import c18.entity.Book;
import c18.entity.Borrow;
import c18.entity.PreBorrow;
import c18.helper.PageBean;
import c18.helper.PageResult;
import c18.struts.action.exception.ActionException;
import c18.struts.action.exception.ExistNameActionException;
import c18.struts.action.exception.ExistReferActionException;
import c18.struts.action.exception.NotEnoughActionException;
import c18.struts.action.exception.NotFindActionException;

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

	public PreBorrow getPreBorrow(int preBorrowNo) throws ActionException {
		//得到当前Session
		Session session = HibernateSessionFactory.getSession();
		//组建BorrowDao对象
		BorrowDao borrowDao = new BorrowDaoImpl(session);

		//查询
		return borrowDao.getPreBorrow(preBorrowNo);
	}

	public PageResult getPreBorrows(int userNo, PageBean pageBean)
			throws ActionException {
		//得到当前Session
		Session session = HibernateSessionFactory.getSession();
		//组建BorrowDao对象
		BorrowDao borrowDao = new BorrowDaoImpl(session);
		
		return borrowDao.getPreBorrowsByUser(userNo, pageBean);
	}

	public void preBorrow(int userNo, int bookNo) throws ActionException {
		//得到当前Session
		Session session = HibernateSessionFactory.getSession();
		session.beginTransaction();
		//组建BorrowDao对象
		BorrowDao borrowDao = new BorrowDaoImpl(session);
		//组建BookDao对象
		BookDao bookDao = new BookDaoImpl(session);
		
		//得到图书信息
		Book book = bookDao.get(bookNo);
		//判断余量是否充足
		if(book.getRemain() < 1){
			//回滚
			session.getTransaction().rollback();
			log.debug("余量不足");
			throw new NotEnoughActionException("此图书余量不足,不能预借,请稍后再试");
		}
		
		//判断是否已有未处理预借
		PreBorrow preBorrow = borrowDao.getPreBorrowByStatus(userNo, bookNo, 0);
		if(preBorrow != null){ //已有未处理预借
			//回滚
			session.getTransaction().rollback();
			log.debug("已有此图书的未处理预借,请去图书馆完成预借");
			throw new ExistReferActionException("已有此图书的未处理预借,请直接去图书馆完成借阅");
		}
		
		//判断是否已有借阅
		preBorrow = borrowDao.getPreBorrowByStatus(userNo, bookNo, 1);
		if(preBorrow != null){
			Borrow borrow = borrowDao.getBorrowByPre(preBorrow.getPreBorrowNo());
			if(borrow != null && borrow.getStatus() == 0){ //在借阅中
				//回滚
				session.getTransaction().rollback();
				log.debug("此图书您正在借阅中");
				throw new ExistReferActionException("此图书您正在借阅中");
			}
		}
		
		
		//预借
		preBorrow = new PreBorrow();
		preBorrow.setBookNo(bookNo);
		preBorrow.setPreBorrowTime(new Date());
		preBorrow.setRemark("");
		preBorrow.setStatus(0);
		preBorrow.setUserNo(userNo);
		
		borrowDao.savePreBorrow(preBorrow);
		
		//减少图书余量
		book.setRemain(book.getRemain() - 1);
		bookDao.update(book);
		
		//提交
		session.getTransaction().commit();
		
	}

	public void borrow(int preBorrowNo) throws ActionException {
		//得到当前Session
		Session session = HibernateSessionFactory.getSession();
		session.beginTransaction();
		//组建BorrowDao对象
		BorrowDao borrowDao = new BorrowDaoImpl(session);
		//组建BookDao对象
		BookDao bookDao = new BookDaoImpl(session);
		
		//得到预借信息
		PreBorrow preBorrow = borrowDao.getPreBorrow(preBorrowNo);
		if(preBorrow == null){
			//回滚
			session.getTransaction().rollback();
			log.debug("预借信息不存在");
			throw new NotFindActionException("对应预借信息不存在");
		}
		
		//判断预借状态
		if(preBorrow.getStatus() != 0){
			//回滚
			session.getTransaction().rollback();
			log.debug("对应预借状态不正确");
			throw new NotFindActionException("对应预借状态不正确");
		}
		
		//判断是否已有此预借的借阅(包括归还了的借阅)
		Borrow borrow1 = borrowDao.getBorrowByPre(preBorrowNo);
		if(borrow1 != null){
			//回滚
			session.getTransaction().rollback();
			log.debug("已存在对应的借阅信息");
			throw new ExistNameActionException("已存在对应的借阅信息");
			
		}
		
		//得到图书信息
		Book book = bookDao.get(preBorrow.getBookNo());
		if(book == null){
			//回滚
			session.getTransaction().rollback();
			log.debug("对应图书信息不存在");
			throw new NotFindActionException("对应图书信息不存在");
		}
		
		//借阅
		Borrow borrow = new Borrow();
		borrow.setPreBorrowNo(preBorrow.getPreBorrowNo());
		borrow.setBorrowTime(new Date());
		borrow.setRemark("");
		borrow.setStatus(0);
		
		borrowDao.saveBorrow(borrow);
		
		//更新预借状态
		preBorrow.setStatus(1);
		borrowDao.savePreBorrow(preBorrow);
		
		//提交
		session.getTransaction().commit();
	}

	public void cancelPreBorrow(int preBorrowNo) throws ActionException {
		//得到当前Session
		Session session = HibernateSessionFactory.getSession();
		session.beginTransaction();
		//组建BorrowDao对象
		BorrowDao borrowDao = new BorrowDaoImpl(session);
		//组建BookDao对象
		BookDao bookDao = new BookDaoImpl(session);
		
		//得到预借信息
		PreBorrow preBorrow = borrowDao.getPreBorrow(preBorrowNo);
		if(preBorrow == null){
			//回滚
			session.getTransaction().rollback();
			log.debug("预借信息不存在");
			throw new NotFindActionException("对应预借信息不存在");
		}
		
		//判断预借状态
		if(preBorrow.getStatus() != 0){
			//回滚
			session.getTransaction().rollback();
			log.debug("对应预借状态不正确");
			throw new NotFindActionException("对应预借状态不正确");
		}
		
		//得到图书信息
		Book book = bookDao.get(preBorrow.getBookNo());
		if(book == null){
			//回滚
			session.getTransaction().rollback();
			log.debug("对应图书信息不存在");
			throw new NotFindActionException("对应图书信息不存在");
		}
				
		//取消预借,更新预借状态
		preBorrow.setStatus(2);
		borrowDao.savePreBorrow(preBorrow);

		//增加图书余量
		book.setRemain(book.getRemain() + 1);
		bookDao.update(book);
		
		//提交
		session.getTransaction().commit();
	}

	public Borrow getBorrow(int borrowNo) throws ActionException {
		//得到当前Session
		Session session = HibernateSessionFactory.getSession();
		//组建BorrowDao对象
		BorrowDao borrowDao = new BorrowDaoImpl(session);

		//查询
		return borrowDao.getBorrow(borrowNo);
	}

	public Borrow getBorrowByPre(int preBorrowNo) throws ActionException {
		//得到当前Session
		Session session = HibernateSessionFactory.getSession();
		//组建BorrowDao对象
		BorrowDao borrowDao = new BorrowDaoImpl(session);

		//查询
		return borrowDao.getBorrowByPre(preBorrowNo);
	}

	public PageResult getBorrows(int userNo, PageBean pageBean) throws ActionException {
		//得到当前Session
		Session session = HibernateSessionFactory.getSession();
		//组建BorrowDao对象
		BorrowDao borrowDao = new BorrowDaoImpl(session);
		
		return borrowDao.getBorrowsByUser(userNo, pageBean);
	}

	public void returnSub(int borrowNo) throws ActionException {
		//得到当前Session
		Session session = HibernateSessionFactory.getSession();
		session.beginTransaction();
		//组建BorrowDao对象
		BorrowDao borrowDao = new BorrowDaoImpl(session);
		//组建BookDao对象
		BookDao bookDao = new BookDaoImpl(session);
		
		//得到借阅信息
		Borrow borrow = borrowDao.getBorrow(borrowNo);
		if(borrow == null){
			//回滚
			session.getTransaction().rollback();
			log.debug("借阅信息不存在");
			throw new NotFindActionException("对应借阅信息不存在");
		}
		
		//判断借阅状态
		if(borrow.getStatus() != 0){
			//回滚
			session.getTransaction().rollback();
			log.debug("对应借阅状态不正确");
			throw new NotFindActionException("对应借阅状态不正确");
		}
		
		//得到对应预借信息
		PreBorrow preBorrow = borrowDao.getPreBorrow(borrow.getPreBorrowNo());
		if(preBorrow == null){
			//回滚
			session.getTransaction().rollback();
			log.debug("预借信息不存在");
			throw new NotFindActionException("对应预借信息不存在");
		}
		
		//得到图书信息
		Book book = bookDao.get(preBorrow.getBookNo());
		if(book == null){
			//回滚
			session.getTransaction().rollback();
			log.debug("对应图书信息不存在");
			throw new NotFindActionException("对应图书信息不存在");
		}
		
		//归还,更新借阅状态
		borrow.setStatus(1);
		borrowDao.saveBorrow(borrow);
		
		//增加图书余量
		book.setRemain(book.getRemain() + 1);
		bookDao.update(book);

		//提交
		session.getTransaction().commit();
	}

}

⌨️ 快捷键说明

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