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 + -
显示快捷键?