package cn.edu.jxnu.base.controller.web;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import com.google.gson.Gson;
import cn.edu.jxnu.base.common.JsonResult;
import cn.edu.jxnu.base.common.MemorandumUtils;
import cn.edu.jxnu.base.controller.BaseController;
import cn.edu.jxnu.base.entity.Book;
import cn.edu.jxnu.base.entity.BorrowBook;
import cn.edu.jxnu.base.entity.BorrowList;
import cn.edu.jxnu.base.entity.User;
import cn.edu.jxnu.base.redis.RedisService;
import cn.edu.jxnu.base.service.IBookService;
import cn.edu.jxnu.base.service.IBorrowBookService;
import cn.edu.jxnu.base.service.IUserService;
import cn.edu.jxnu.base.service.specification.SimpleSpecificationBuilder;
import cn.edu.jxnu.base.service.specification.SpecificationOperator.Operator;
/**
* 图书管理控制类
*
* @author 梦境迷离
* @time 2018年4月10日 下午5:28:05.
* @version V1.0
*/
@Controller
@RequestMapping("/web/books")
public class BookController extends BaseController {
@Autowired
private RedisService redisService;
@Autowired
private IBookService bookService;
@Autowired
private IBorrowBookService borrowBookService;
@Autowired
private IUserService userService;
@Autowired
private MemorandumUtils memorandumUtils;
/**
* 默认索引页
*
* @return index页面
*/
@RequestMapping("/index")
public String index() {
return "/admin/books/index";
}
/**
* 添加图书
*
* @return addform页面
*/
@RequestMapping(value = { "/addBook" }, method = RequestMethod.GET)
public String addBook() {
return "admin/books/addform";
}
/**
* 删除图书
*
* 考虑书已经被借出去了,不能再删除
*
* @time 2018年4月10日 下午5:28:38.
*
* @version V1.0
* @param id
* @param map
* @param uCode
* 操作人
* @return JsonResult
*
*/
@RequestMapping(value = "/delete/{id}", method = RequestMethod.POST)
@ResponseBody
public JsonResult delete(@PathVariable String id, ModelMap map, @RequestParam("uCode") String uCode) {
try {
List<User> ls = userService.findAll();
for (User user : ls) {
// 得到所有用户,如果有,则不能删除
List<String> bookIdList = redisService.hashGet("base:0", user.getId());
if (bookIdList != null) {
for (String string : bookIdList) {
// 当前需要删除的书籍,存在一条redis中的记录,则不能删除
if (string.equals(id)) {
return JsonResult.failure("该书有用户借阅,暂时不可删除");
}
}
}
}
Book temp = bookService.findByBookId(id);
bookService.delete(id);
memorandumUtils.saveMemorandum(memorandumUtils, uCode, userService.findByUserCode(uCode).getUserName(),
"删除图书", temp.getBookId() + " | " + temp.getBookName());
} catch (Exception e) {
e.printStackTrace();
return JsonResult.failure("删除失败");
}
return JsonResult.success();
}
/**
* 借书
*
* @time 2018年4月10日 下午5:29:10.
*
* @version V1.0
* @param borrowlist
* Json类型的借书表,数据集
* @param map
* @return JsonResult
*/
@RequestMapping(value = { "/borrowlist/{borrowlist}" }, method = RequestMethod.POST)
@ResponseBody
public JsonResult borrowList(@PathVariable String borrowlist, ModelMap map) {
if (!borrowlist.equals("undefined")) {
Gson gson = new Gson();
BorrowList mBorrowList = gson.fromJson(borrowlist, BorrowList.class);
int count = mBorrowList.getBooklist().length;
BorrowBook[] borrowBook = new BorrowBook[count];
if (count == 0) {
// 没有任何的提交同样需要提示
return JsonResult.failure("未选择要借阅的书籍!");
}
Book[] book = new Book[mBorrowList.getBooklist().length];
int i = 0;
while (i < mBorrowList.getBooklist().length) {
borrowBook[i] = new BorrowBook();
book[i] = new Book();
borrowBook[i].setUserId(mBorrowList.getId());
borrowBook[i].setBookId(mBorrowList.getBooklist()[i]);
book[i] = bookService.findByBookId(mBorrowList.getBooklist()[i]);
// 一本书只能借一次,因此需要判断一下该用户是否已经借过该书
BorrowBook isBorrowBook = borrowBookService.findByUserIdAndBookId(mBorrowList.getId(),
mBorrowList.getBooklist()[i]);
if (book[i].getCurrentInventory() > 0) {
if (isBorrowBook == null) {
book[i].setCurrentInventory(book[i].getCurrentInventory() - 1);
// 添加额外的属性
Book book2 = bookService.findByBookId((book[i].getBookId()));//
borrowBook[i].setBookName(book2.getBookName());
borrowBook[i].setBookAuthor((book2.getBookAuthor()));
borrowBook[i].setBookPress((book2.getBookPress()));
// 更新库存
bookService.saveOrUpdate(book[i]);
borrowBookService.save(borrowBook[i]);
// 添加到redis中
List<String> bookIdList = redisService.hashGet("base:0", mBorrowList.getId());
if (bookIdList == null) {
// 不存在添加。userId<--->bookId。
bookIdList = new ArrayList<>();
bookIdList.add(book[i].getBookId());
redisService.hashPushHashMap("base:0", mBorrowList.getId(), bookIdList);
} else {
// 存在,继续添加到redis
bookIdList.add(book[i].getBookId());
redisService.hashPushHashMap("base:0", mBorrowList.getId(), bookIdList);
}
} else {
return JsonResult.failure("您已经借阅该书!");
}
} else {
return JsonResult.failure("库存不足请重新选择图书!");
}
i++;
}
i = 0;
return JsonResult.success();
} else {
return JsonResult.failure("未选择要借阅的书籍!");
}
}
/**
* 还书表
*
* @time 2018年4月10日 下午5:29:44.
*
* @version V1.0
* @param id
* 借书用户id
* @param map
* @return String
*/
@RequestMapping(value = { "/returnBookList/{id}" }, method = RequestMethod.POST)
@ResponseBody
public String returnBookList(@PathVariable String id, ModelMap map) {
BorrowBook[] borrowBooks = borrowBookService.findByUserId(Integer.parseInt(id));
Book[] books = new Book[borrowBooks.length];
// Date date=null;
for (int i = 0; i < books.length; i++) {
books[i] = bookService.findByBookId(borrowBooks[i].getBookId());
}
Map<String, Object> resultMap = new HashMap<>();
resultMap.put("borrowBooks", borrowBooks);
resultMap.put("books", books);
Gson gson = new Gson();
String jsonStr = gson.toJson(resultMap);
return jsonStr;
}
/**
* 管理员归还图书
*
* @time 2018年4月10日 下午5:30:39.
*
* @version V1.0
* @param borrowlist
* Json类型的借书表
* @return JsonResult
* @throws Exception
*/
@RequestMapping(value = { "/returnBook/{borrowlist}" }, method = RequestMethod.POST)
@ResponseBody
public JsonResult returnBook(@PathVariable String borrowlist) throws Exception {
Gson gson = new Gson();
BorrowList mBorrowList = gson.fromJson(borrowlist, BorrowList.class);
BorrowBook[] borrowBook = new BorrowBook[mBorrowList.getBooklist().length];
Book[] book = new Book[mBorrowList.getBooklist().length];
int i = 0;
// 同样需要更新,首先得到用户id
List<String> bookIdList = redisService.hashGet("base:0", mBorrowList.getId());
while (i < mBorrowList.getBooklist().length) {
borrowBook[i] = new BorrowBook();
book[i] = new Book();
borrowBook[i].setUserId(mBorrowList.getId());
bo
没有合适的资源?快使用搜索试试~ 我知道了~
使用SpringBoot_WebFlux+Shiro+JPA+Java_Scala,实现的基于数据库细粒度动态权限管理系统.zi...

共542个文件
html:117个
java:97个
js:90个

0 下载量 9 浏览量
2025-08-22
11:32:51
上传
评论
收藏 8.33MB ZIP 举报
温馨提示
使用SpringBoot_WebFlux+Shiro+JPA+Java_Scala,实现的基于数据库细粒度动态权限管理系统.zip
资源推荐
资源详情
资源评论































收起资源包目录





































































































共 542 条
- 1
- 2
- 3
- 4
- 5
- 6
资源评论


智慧安全方案
- 粉丝: 3927
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- WHOISpy是一个Python编写的基于RFC3912协议的智能WHOIS客户端.zip
- 基于python tkinter 的排序算法的可视化.zip
- 基于 asyncio 的高性能_插件式 Python Agent, 灵感来自 Telegraf, 跨平台的运维监控和指标采集客户端框架.zip
- (开发暂停)基于 ricq 包装,供 Python 使用的 QQ 无头客户端。.zip
- [原创]基于json文件数据驱动的的接口测试框架(Python).zip
- IE11(x32,X64)离线一键直装安装包(包含全部补丁).zip
- IET_LaTeX模板.zip
- [基于Python]自己写的一个微信跳一跳自动游戏程序(针对安卓手机)。 全自动运行 自动适应不同分辨率 自动调整各个参数误差.zip
- 《21世纪Python教學》subtitle_ 基于脚本语言的实用基础教程及應用.zip
- 《深度学习入门——基于Python的理论与实现》.zip
- 《Python 深度学习基于 PyTorch》.zip
- 「图像处理仿真系统」客户端程序。基于OpenCV + Python + Qt实现,实现了《图像处理》课程的所有案例,包含简单的人脸识别。.zip
- 100%基于Python的,模仿元气骑士的游戏.zip
- IET_LaTeX模板.zip
- IE11(x32,X64)离线一键直装安装包(包含全部补丁).zip
- 库文件libz.a
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
