package com.wangpeng.bms.web;
import com.wangpeng.bms.exception.NotEnoughException;
import com.wangpeng.bms.exception.OperationFailureException;
import com.wangpeng.bms.model.BookInfo;
import com.wangpeng.bms.model.Borrow;
import com.wangpeng.bms.service.BookInfoService;
import com.wangpeng.bms.service.BorrowService;
import com.wangpeng.bms.utils.MyResult;
import com.wangpeng.bms.utils.MyUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.Date;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping(value = "/borrow")
public class BorrowController {
@Autowired
BorrowService borrowService;
@Autowired
BookInfoService bookInfoService;
// 分页查询借阅 params: {page, limit, userid, bookid}
@RequestMapping(value = "/queryBorrowsByPage")
public Map<String, Object> queryBorrowsByPage(@RequestParam Map<String, Object> params){
MyUtils.parsePageParams(params);
int count = borrowService.getSearchCount(params);
List<Borrow> borrows = borrowService.searchBorrowsByPage(params);
return MyResult.getListResultMap(0, "success", count, borrows);
}
// 添加借阅
@RequestMapping(value = "/addBorrow")
public Integer addBorrow(@RequestBody Borrow borrow){
return borrowService.addBorrow(borrow);
}
// 获得数量
@RequestMapping(value = "/getCount")
public Integer getCount(){
return borrowService.getCount();
}
// 删除借阅
@RequestMapping(value = "/deleteBorrow")
public Integer deleteBorrow(@RequestBody Borrow borrow){
return borrowService.deleteBorrow(borrow);
}
// 删除一些借阅
@RequestMapping(value = "/deleteBorrows")
public Integer deleteBorrows(@RequestBody List<Borrow> borrows){
return borrowService.deleteBorrows(borrows);
}
// 更新借阅
@RequestMapping(value = "/updateBorrow")
public Integer updateBorrow(@RequestBody Borrow borrow){
return borrowService.updateBorrow(borrow);
}
// 借书
@RequestMapping(value = {"/borrowBook", "/reader/borrowBook"})
@Transactional
public Integer borrowBook(Integer userid, Integer bookid){
try{
// 查询该书的情况
BookInfo theBook = bookInfoService.queryBookInfoById(bookid);
if(theBook == null) { // 图书不存在
throw new NullPointerException("图书" + bookid + "不存在");
} else if(theBook.getIsborrowed() == 1) { // 已经被借
throw new NotEnoughException("图书" + bookid + "库存不足(已经被借走)");
}
// 更新图书表的isBorrowed
BookInfo bookInfo = new BookInfo();
bookInfo.setBookid(bookid);
bookInfo.setIsborrowed((byte) 1);
Integer res2 = bookInfoService.updateBookInfo(bookInfo);
if(res2 == 0) throw new OperationFailureException("图书" + bookid + "更新被借信息失败");
// 添加一条记录到borrow表
Borrow borrow = new Borrow();
borrow.setUserid(userid);
borrow.setBookid(bookid);
borrow.setBorrowtime(new Date(System.currentTimeMillis()));
Integer res1 = borrowService.addBorrow2(borrow);
if(res1 == 0) throw new OperationFailureException("图书" + bookid + "添加借阅记录失败");
} catch (Exception e) {
System.out.println("发生异常,进行手动回滚");
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
e.printStackTrace();
return 0;
}
return 1;
}
// 还书
@RequestMapping(value = {"/returnBook", "/reader/returnBook"})
@Transactional
public Integer returnBook(Integer borrowid, Integer bookid){
try {
// 查询该书的情况
BookInfo theBook = bookInfoService.queryBookInfoById(bookid);
// 查询借书的情况
Borrow theBorrow = borrowService.queryBorrowsById(borrowid);
if(theBook == null) { // 图书不存在
throw new NullPointerException("图书" + bookid + "不存在");
} else if(theBorrow == null) { //结束记录不存在
throw new NullPointerException("借书记录" + bookid + "不存在");
} else if(theBorrow.getReturntime() != null) { // 已经还过书
throw new NotEnoughException("图书" + bookid + "已经还过了");
}
// 更新图书表的isBorrowed
BookInfo bookInfo = new BookInfo();
bookInfo.setBookid(bookid);
bookInfo.setIsborrowed((byte) 0);
Integer res2 = bookInfoService.updateBookInfo(bookInfo);
if(res2 == 0) throw new OperationFailureException("图书" + bookid + "更新被借信息失败");
// 更新Borrow表,更新结束时间
Borrow borrow = new Borrow();
borrow.setBorrowid(borrowid);
borrow.setReturntime(new Date(System.currentTimeMillis()));
Integer res1 = borrowService.updateBorrow2(borrow);
if(res1 == 0) throw new OperationFailureException("图书" + bookid + "更新借阅记录失败");
} catch (Exception e) {
System.out.println("发生异常,进行手动回滚");
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
e.printStackTrace();
return 0;
}
return 1;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
基于SpringBoot+Vue的图书管理系统.zip
共75个文件
java:33个
js:12个
css:10个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 163 浏览量
2023-05-30
15:42:41
上传
评论 2
收藏 841KB ZIP 举报
温馨提示
基于SpringBoot框架开发的程序,可以作为毕业设计,包含数据库文件
资源推荐
资源详情
资源评论
收起资源包目录
基于SpringBoot+Vue的图书管理系统.zip (75个子文件)
BookManager2-master
mvnw.cmd 6KB
book_manager.sql 28KB
pom.xml 3KB
src
main
resources
application.properties 863B
static
favicon.ico 4KB
index.html 5KB
static
js
chunk-06ecc303.16fbe78a.js 10KB
chunk-1a25f0cc.b9bd4c0f.js 3KB
chunk-2911f106.b329536c.js 10KB
chunk-2d0e8fe4.1424033f.js 2KB
chunk-libs.71718143.js 376KB
chunk-2accb41c.b6fd6706.js 4KB
chunk-4f10777e.59b2def0.js 10KB
chunk-238c903c.a6f4eea3.js 2KB
app.3082c59a.js 316KB
chunk-2d0e5357.597480c0.js 1KB
chunk-elementUI.a110a801.js 651KB
chunk-168c9df3.873c8b9e.js 18KB
img
404.a57b6f31.png 96KB
404_cloud.0f4bc32b.png 5KB
css
chunk-238c903c.3c7f5ad9.css 5KB
app.bac30f46.css 10KB
chunk-1a25f0cc.ead535ca.css 2KB
chunk-elementUI.68c70ad5.css 228KB
chunk-168c9df3.530bf719.css 1KB
chunk-4f10777e.e098d241.css 1KB
chunk-2accb41c.fb696271.css 2KB
chunk-06ecc303.a36d20c7.css 1KB
chunk-libs.3dfb7769.css 3KB
chunk-2911f106.accf6741.css 1KB
fonts
element-icons.535877f5.woff 28KB
element-icons.732389de.ttf 55KB
META-INF
additional-spring-configuration-metadata.json 184B
java
com
wangpeng
bms
mapper
BookTypeMapper.java 812B
UserMapper.java 980B
BookTypeMapper.xml 4KB
BorrowMapper.xml 6KB
UserMapper.xml 4KB
BorrowMapper.java 903B
BookInfoMapper.java 876B
BookInfoMapper.xml 7KB
utils
TokenProcessor.java 1KB
JsonUtil.java 2KB
MyUtils.java 426B
MyResult.java 1KB
web
BookInfoController.java 2KB
BorrowController.java 6KB
UserController.java 4KB
BookTypeController.java 2KB
UpdateController.java 4KB
BookManagerApplication.java 535B
service
UserService.java 727B
BorrowService.java 607B
BookTypeService.java 547B
BookInfoService.java 595B
impl
BookTypeServiceImpl.java 2KB
BookInfoServiceImpl.java 2KB
UserServiceImpl.java 3KB
BorrowServiceImpl.java 3KB
model
BookType.java 682B
BookInfo.java 2KB
Borrow.java 2KB
User.java 847B
exception
NotEnoughException.java 295B
OperationFailureException.java 237B
config
InterceptorConfig.java 2KB
CorsConfig.java 906B
interceptor
UserInterceptor.java 860B
ReaderInterceptor.java 969B
.mvn
wrapper
maven-wrapper.properties 218B
maven-wrapper.jar 50KB
MavenWrapperDownloader.java 5KB
GeneratorMapper.xml 3KB
mvnw 10KB
.gitignore 395B
共 75 条
- 1
资源评论
我慢慢地也过来了
- 粉丝: 6385
- 资源: 3988
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 零基础DSP实战TMS320F28035:第十节,DSP之CLA内核应用实战.zip
- 789654645645
- 当你说到HTML(HyperText Markup Language),它是用于创建网页内容的标准标记语言 HTML通过标签(t
- 基于zigbee和stm32的智能家居系统,上位机使用Qt编写,实现了基本的监控 主要包括监控室内温度、湿度、烟雾浓度等
- 以下是一个简单的HTML5和CSS3代码示例,用于在网页上展示一个爱心形状,并搭配一些文本作为表白使用 这个代码不依赖于Java
- 079版ijl15.dll 源码.rar
- MATLAB使用教程与知识点总结.docx
- 新版数通认证 HCIA HCIP HCIE DATACOM 大牛知识笔记
- 持续集成-Git 常见的版本控制系统及比较 cvs,svn,git都是版本控制系统 腾讯 tapd、百度 icafe、阿里
- Nature_Graduate Survey_2022_Clean data_v00c.xlsx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功