源码获取:俺的博客首页 "资源" 里下载!
项目介绍
管理员:首页、个人中心、用户管理、卖家管理、图书类型管理、图书信息管理、图书信息、系统管理 、订单管理
卖家: 首页、个人中心、图书信息管理、订单管理
用户: 首页、图书信息、图书资讯、个人中心、购物车
环境需要
1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
3.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS;
4.数据库:MySql 5.7/8.0版本均可;
5.是否Maven项目:是;
技术栈
后端:SpringBot(Spring+SpringMVC+Mybatis)
前端:Vue
使用说明
项目运行:
1. 使用Navicat或者其它工具,在mysql中创建对应sql文件名称的数据库,并导入项目的sql文件;
2. 使用IDEA/Eclipse/MyEclipse导入项目,导入成功后请执行maven clean;maven install命令,然后运行;
3. 将项目中application.yml配置文件中的数据库配置改为自己的配置;
4. 运行项目,控制台提示运行成功后再去运行前端项目;
5. 管理员用户名密码:admin/admin
普通用户名密码:user/123456
文档介绍(课题背景与意义、系统实现功能、课题研究现状、系统相关技术、java技术、B/S架构、Mysql介绍、Mysql环境配置、Springboot框架、系统需求分析、系统功能、可行性研究、经济可行性、技术可行性、运行可行性、事件可行性、系统业务过程分析、系统业务过程分析、系统用例图、系统设计、数据库设计、系统整体设计、系统设计思想、系统流程图、系统详情设计、系统功能模块、系统功能模块、管理员功能模块):![](https://i-blog.csdnimg.cn/blog_migrate/97c849d3cdbb1489aa842d50555667b1.jpeg)
图书商城首页展示:
图书信息展示页面:
图书信息详情页面:
购物车展示页面:
个人中心详情展示:
后台登陆管理页面:![](https://i-blog.csdnimg.cn/blog_migrate/92309ab5082acd4d7ff6d5ccff4088a8.jpeg)
图书归还列表详情:
图书借阅列表:
图书信息详情:
用户登录管理控制层:
@Controller
@RequestMapping("/Userlogin")
public class UserLoginController {
@Autowired
private UserLoginMapper userLoginMapper;
@Autowired
private UserRealm userRealm;
/**
* @throws IOException
* @throws ServletException
* @Title : createIdentity
* @功能描述: TODO 产生验证码
* @开发者:陈强
* @参数:
* @返回类型:void
*/
@RequestMapping("/identity")
public void createIdentity(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException
{
//com.chen.PLoveLibrary.util.IdentityCode.outputIdentity(request, response);
}
/**
* @Title : Login
* @功能描述: TODO 登陆验证
* @开发者:陈强
* @参数: @param request
* @参数: @param response
* @参数: @param user
* @参数: @return
* @返回类型:String
* @throws :
*/
@RequestMapping(value="/login" ,method=RequestMethod.POST)
public String Login(HttpServletRequest request,HttpServletResponse response,SysUser user)
{
/*if(user.getIdentity().equals(request.getSession().getAttribute("randomString")))
{*/
org.apache.shiro.subject.Subject subject=SecurityUtils.getSubject();
UsernamePasswordToken token=new UsernamePasswordToken(user.getUsername(), user.getPassword());
if(!subject.isAuthenticated())
{
subject.login(token);
}
/*}
else
{
return "login";
}*/
request.getSession().setAttribute("admin",user.getUsername());
//将登陆的用户信息存储在session中
Reader reader=userLoginMapper.selectSysUser(user.getUsername());
request.getSession().setAttribute("SysReader",reader);
//model.addAttribute("admin",user.getUsername());
return "frame/frameSet";
}
/**
* @Title : logOut
* @功能描述: TODO 用户注销登陆
* @开发者:陈强
* @参数: @return
* @返回类型:String
* @throws :
*/
@RequestMapping("/logout")
public String logOut()
{
userRealm.clearCached();
return "login";
}
/**
* @Title : login
* @功能描述: TODO 返回后台登陆界面
* @开发者:陈强
* @参数: @return
* @返回类型:String
* @throws :
*/
@RequestMapping("/index")
public String login()
{
return "login";
}
/**
* @throws Exception
* @Title : passwordEdit
* @功能描述: TODO 用户修改密码
* @开发者:陈强
* @参数: @param user
* @参数: @return
* @返回类型:String
* @throws :
*/
@RequestMapping(value="/pwdEdit",method=RequestMethod.POST)
public String passwordEdit(SysUser user) throws Exception
{
int i=0;
user.setDate(new Date());
i=userLoginMapper.updatepwdByName(user);
userLoginMapper.updatePwd(user);
if(i==0)
{
throw new Exception("密码修改失败");
}
return "frame/mainFrame";
}
//*********************************************************
// * 权限设置
// *
// *
// *
// *
// ********************************************************
/**
* @Title : comePermission
* @功能描述: TODO 进入权限注册界面
* @开发者:陈强
* @参数: @return
* @返回类型:String
* @throws :
*/
@RequestMapping("toReaderPermission")
@RequiresPermissions(value={"permission:toReaderPermission","iterm:all"},logical=Logical.OR)
public String comePermission()
{
return "WEB-INF/readerJsp/readerPermission";
}
/**
* @Title : InsertPermission
* @功能描述: TODO 插入权限
* @开发者:陈强
* @参数: @param sysUR
* @参数: @return
* @返回类型:String
* @throws :
*/
@RequestMapping(value="insertPermission",method={RequestMethod.GET,RequestMethod.POST})
@RequiresPermissions(value={"permission:insertPermission","iterm:all"},logical=Logical.OR)
public String InsertPermission(SysUR sysUR)
{
userLoginMapper.insertPermission(sysUR);
return "index";
}
/**
* @Title : selectPermission
* @功能描述: TODO 遍历信息
* @开发者:陈强
* @参数: @param parameter
* @参数: @param model
* @参数: @return
* @返回类型:String
* @throws :
*/
@RequestMapping(value="selectPermission")
@RequiresPermissions(value={"permission:selectPermission","iterm:all"},logical=Logical.OR)
public String selectPermission(Parameter parameter,Model model)
{
int count=userLoginMapper.getCountsPermission();
int start=parameter.getStart();
if(start<0)start=0;
if(start>count)start-=10;
int end=start+10;
parameter.setEnd(end);
parameter.setStart(start);
List<SysUR> permission=userLoginMapper.selectPermission(parameter);
model.addAttribute("permission", permission);
model.addAttribute("parameter", parameter);
return "WEB-INF/readerJsp/permissionPage";
}
@RequestMapping(value="deletePermission")
@RequiresPermissions(value={"permission:deletePermission","iterm:all"},logical=Logical.OR)
public String DeletePermission(Parameter parameter,RedirectAttributes ra,SysUR sysUR)
{
userLoginMapper.deletePermission(sysUR);
ra.addAttribute("start", parameter.getStart());
return "redirect:/Userlogin/selectPermission";
}
}
读者管理控制层:
@Controller
@RequestMapping("/reader")
@RequiresRoles(value={"BookManager","SysManager","Manager"},logical=Logical.OR)
public class ReaderController {
@Autowired
private ReaderService readerService;
@Autowired
private UserLoginMapper userLoginMapper;
/**
* @Title : comeReader
* @功能描述: TODO 进入读者信息录入界面
* @开发者:陈强
* @参数: @return
* @返回类型:String
* @throws :
*/
@RequestMapping("/toReader")
@RequiresPermissions(value={"reader:toReader","iterm:all"},logical=Logical.OR)
public String comeReader()
{
return "WEB-INF/readerJsp/readerLoad";
}
/**
* @Title : ReaderLoad
* @功能描述: TODO
* @开发者:陈强
* @参数: @param reader
* @参数: @param br
* @参数: @param file
* @参数: @param model
* @参数: @param request
* @参数: @return
* @参数: @throws Exception
* @返回类型:String
* @throws :
*/
@RequestMapping(value="/readerLoad",method={RequestMethod.POST,RequestMethod.POST})
@RequiresPermissions(value={"reader:readerLoad","iterm:all"},logical=Logical.OR)
@SuppressWarnings("unused")
public String ReaderLoad(@Validated Reader reader,BindingResult br,
@RequestParam(value="filePhoto",required=false)MultipartFile file,
Model model,HttpServletRequest request) throws Exception
{
if(br.hasErrors())
{
List<ObjectError> errors=br.getAllErrors();
for(ObjectError error:errors)
{
model.addAttribute("message",error.getDefaultMessage());
}
return "error";
}
int i=0;
String path=request.getSession().getServletContext().getRealPath("upload");
String fileName=file.getOriginalFilename();
String fileType=file.getContentType();
File targetFile = new File(path, fileName);
if(file==null)
{
reader.setRdPhoto("upload/empty.jpg");
}
else
{
if(fileType.equals("image/jpeg") ||fileType.equals("image/pjpeg")||fileType.equals("image/gif"))
{
reader.setRdPhoto("upload/"+fileName);
file.transferTo(targetFile);
}
else
{
reader.setRdPhoto("upload/empty.jpg");
}
}
reader.setRdDateReg(new Date());
i=readerService.insertReader(reader);
if(i==0)
{
throw new Exception("业务办理失败");
}
userLoginMapper.insertSysUser(reader);
model.addAttribute("reader",reader);
return "WEB-INF/readerJsp/readerLoad";
}
/**
* @Title : FindReader
* @功能描述: TODO 查找reader信息实现数据库的分页。
* @开发者:陈强
* @参数: @param start
* @参数: @param model
* @参数: @return
* @返回类型:String
* @throws :
*/
@RequestMapping("/findReader")
@RequiresPermissions(value={"reader:findReader","iterm:all"},logical=Logical.OR)
public String FindReader(Model model,Parameter parameter)
{
int count=readerService.getCounts(parameter);
int start=parameter.getStart();
if(start<0) start=0;
if(start>count)start-=10;
int end=start+10;
parameter.setStart(start);
parameter.setEnd(end);
List<Reader> readerList=readerService.getReaderInfo(parameter);
model.addAttribute("readerList",readerList);
model.addAttribute("start", start);
model.addAttribute("rdID", parameter.getRdID());
return "WEB-INF/readerJsp/readerPage";
}
/**
* @Title : DeleteReader
* @功能描述: TODO 删除用户的信息,在重定向页面
* @开发者:陈强
* @参数: @param rdID
* @参数: @param start
* @参数: @param model
* @参数: @return
* @返回类型:String
* @throws :
*/
@RequestMapping("deleteReader")
@RequiresPermissions(value={"reader:deleteReader","iterm:all"},logical=Logical.OR)
public String DeleteReader(@RequestParam("rdID")String rdID,@RequestParam(value="start")Integer start,Model model,RedirectAttributes rab)
{
readerService.deleteReaderByrdID(rdID);
userLoginMapper.deleteSysUser(rdID);
SysUR sysUR=new SysUR();
sysUR.setUserName(rdID);
userLoginMapper.deletePermission(sysUR);
System.out.println(rdID);
rab.addAttribute("start", start);
return "redirect:/reader/findReader";
}
/**
* @Title : EditReader
* @功能描述: TODO 读者信息编辑 跳转到读者信息注册界面
* @开发者:陈强
* @参数: @param model
* @参数: @param rdID 用户名
* @参数: @return
* @返回类型:String
* @throws :
*/
@RequestMapping("/editReader/{rdID}")
@RequiresPermissions(value={"reader:editReader","iterm:all"},logical=Logical.OR)
public String EditReader(Model model,@PathVariable String rdID,@RequestParam(value="start")Integer start)
{
Reader reader=readerService.findReaderByrdID(rdID);
model.addAttribute("editReader", reader);
model.addAttribute("start", start);
return "WEB-INF/readerJsp/readerPage";
}
/**
* @Title : UpdateReader
* @功能描述: TODO 编辑读者信息
* @开发者:陈强
* @参数: @param reader 读者类
* @参数: @param file 文件上传
* @参数: @param ra 重定向
* @参数: @param start 页码
* @参数: @param request
* @参数: @return
* @参数: @throws IllegalStateException
* @参数: @throws IOException
* @返回类型:String
* @throws :
*/
@SuppressWarnings("unused")
@RequiresPermissions(value={"reader:updateReader","iterm:all"},logical=Logical.OR)
@RequestMapping(value="/updateReader/{start}",method={RequestMethod.POST,RequestMethod.GET})
public String UpdateReader(@Validated Reader reader,BindingResult br,
@RequestParam(value="filePhoto",required=false)MultipartFile file,
RedirectAttributes ra,
@PathVariable Integer start,
HttpServletRequest request,Model model) throws IllegalStateException, IOException
{
if(br.hasErrors())
{
List<ObjectError> errors=br.getAllErrors();
for(ObjectError error:errors)
{
model.addAttribute("message",error.getDefaultMessage());
}
return "error";
}
int i=0;
String path=request.getSession().getServletContext().getRealPath("upload");
String fileName=file.getOriginalFilename();
String fileType=file.getContentType();
File targetFile = new File(path, fileName);
if(file==null)
{
reader.setRdPhoto("upload/empty.jpg");
}
else
{
if(fileType.equals("image/jpeg") ||fileType.equals("image/pjpeg")||fileType.equals("image/gif"))
{
reader.setRdPhoto("upload/"+fileName);
file.transferTo(targetFile);
}
else
{
reader.setRdPhoto("upload/empty.jpg");
}
}
reader.setRdDateReg(new Date());
System.out.println(reader.getRdID());
i=readerService.updateReaderByrdID(reader);
userLoginMapper.updateSysUser(reader);
ra.addAttribute("start", start);
return "redirect:/reader/findReader";
}
/**
* @Title : SearchReader
* @功能描述: TODO 查找指定的用户
* @开发者:陈强
* @参数: @param rdID
* @参数: @param model
* @参数: @return
* @返回类型:String
* @throws :
*/
@RequestMapping(value="/searchReader", method={RequestMethod.POST,RequestMethod.GET})
@RequiresPermissions(value={"reader:searchReader","iterm:all"},logical=Logical.OR)
public String SearchReader(@RequestParam("rdID")String rdID,RedirectAttributes ra)
{
ra.addAttribute("rdID",rdID);
ra.addAttribute("start", 0);
return "redirect:/reader/findReader";
}
/**
* @Title : ExportExcel
* @功能描述: TODO 将数据导出
* @开发者:陈强
* @参数: @param parameter
* @参数: @param request
* @参数: @param response
* @参数: @return
* @返回类型:String
* @throws :
*/
@RequestMapping("/exportExcel")
public String ExportExcel(Parameter parameter,HttpServletRequest request,HttpServletResponse response)
{
int start=parameter.getStart();
int end=start+10;
parameter.setStart(start);
parameter.setEnd(end);
List<Reader> readerList=readerService.getReaderInfo(parameter);
ExportExcelUtil ex = new ExportExcelUtil();
SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");
String title = "Reader信息记录";
String[] headers = { "用户名","姓名","性别","读者类型","单位名称","电话号码","邮箱","证件状态","办证日期","已借书数量","读者角色","照片"};
List<String[]> dataset = new ArrayList<String[]>();
for(int i=0;i<readerList.size();i++)
{
Reader reader=readerList.get(i);
String borrowQty=Integer.toString(reader.getRdBorrowQty());
String date=format.format(reader.getRdDateReg());
dataset.add(new String[]{reader.getRdID(),reader.getRdName(),reader.getRdSex(),reader.getRdType(),
reader.getRdDept(),reader.getRdPhone(),reader.getRdEmail(),reader.getRdStatus(),
date,borrowQty,reader.getRdAdminRoles(),reader.getRdPhoto()});
System.out.println(reader.getRdID());
}
OutputStream out = null;//创建一个输出流对象
try {
out = response.getOutputStream();//
response.setHeader("Content-disposition","attachment; filename="+"Reader.xls");//filename是下载的xls的名,建议最好用英文
response.setContentType("application/msexcel;charset=UTF-8");//设置类型
response.setHeader("Pragma","No-cache");//设置头
response.setHeader("Cache-Control","no-cache");//设置头
response.setDateHeader("Expires", 0);//设置日期头
String rootPath = request.getSession().getServletContext().getRealPath("/");
ex.exportExcel(rootPath,title,headers, dataset, out);
out.flush();
} catch (IOException e) {
e.printStackTrace();
}finally{
try{
if(out!=null){
out.close();
}
}catch(IOException e){
e.printStackTrace();
}
}
return null;
}
/**
* @Title : findStatusByrdID
* @功能描述: TODO 找到证件当前的状态
* @开发者:陈强
* @参数: @param rdID
* @参数: @param model
* @参数: @return
* @返回类型:String
* @throws :
*/
@RequestMapping("/findStatusByrdID")
@RequiresPermissions(value={"reader:findStatusByrdID","iterm:all"},logical=Logical.OR)
public String findStatusByrdID(@RequestParam("rdID")String rdID,Model model)
{
String status= readerService.findStatusByrdID(rdID);
model.addAttribute("status", status);
model.addAttribute("rdID", rdID);
return "WEB-INF/readerJsp/readerStatus";
}
/**
* @Title : updateStatus
* @功能描述: TODO 更改证件的状态
* @开发者:陈强
* @参数: @param reader
* @参数: @return
* @返回类型:String
* @throws :
*/
@RequestMapping(value="/updateStatus",method={RequestMethod.POST,RequestMethod.GET})
@RequiresPermissions(value={"reader:updateStatus","iterm:all"},logical=Logical.OR)
public String updateStatus(Reader reader)
{
readerService.updateStatusByrdID(reader);
return "WEB-INF/readerJsp/readerStatus";
}
@RequestMapping("/toReaderStatus")
public String readerStatus()
{
return "WEB-INF/readerJsp/readerStatus";
}
}
借书管理控制层:
@Controller
@RequestMapping("/borrow")
@RequiresRoles(value={"BookManager","SysManager","Manager"},logical=Logical.OR)
public class BorrowContorller {
@Autowired
private BorrowService borrowService;
/**
* @Title : comeBorrow
* @功能描述: TODO 来到借书页面
* @开发者:陈强 @参数: @return
* @返回类型:String
* @throws :
*/
@RequestMapping("/toBorrow")
@RequiresPermissions(value={"borrow:toBorrow","iterm:all"},logical=Logical.OR)
public String comeBorrow() {
return "WEB-INF/bookJsp/bookBorrow";
}
/**
* @throws Exception
* @Title : InsertBorrow
* @功能描述: TODO 插入借阅信息,读者信息表的借阅图书数加1,图书表的图书状态改变成借出
* @开发者:陈强 @参数: @param borrow @参数: @param br @参数: @param model @参数: @param
* DateOut @参数: @return @参数: @throws ParseException
* @返回类型:String
* @throws :
*/
@RequestMapping(value = "/insertBorrow", method = { RequestMethod.POST, RequestMethod.GET })
@RequiresPermissions(value={"borrow:insertBorrow","iterm:all"},logical=Logical.OR)
public String InsertBorrow(@Validated Borrow borrow, BindingResult br, Model model,
@RequestParam("DateOut") String DateOut) throws Exception {
if (br.hasErrors()) {
String Message = null;
List<ObjectError> errors = br.getAllErrors();
for (ObjectError objectError : errors) {
model.addAttribute("message", Message + objectError.getDefaultMessage());
}
return "error";
}
ReaderType readerType = borrowService.findReaderTypeByrdID(borrow.getRdID());
borrow.setIdContinueTimes(0);
borrow.setIdDateOut(DateExchangeUtil.StringToDate(DateOut));
borrow.setIdDateRetPlan(
DateExchangeUtil.GetDateFromDay(DateExchangeUtil.StringToDate(DateOut), readerType.getCanLendDay()));
borrow.setIdDateRetAct(null);
borrow.setIdOverDay(0);
borrow.setIdOverMoney(0);
borrow.setIdPunishMoney(0);
borrow.setIsHasReturn("未还");
borrow.setOperatorRet("");
System.out.println(borrow.getBkID() + borrow.getRdID() + borrow.getOperatorLend());
// 更新
Parameter parameter = new Parameter();
parameter.setBkID(borrow.getBkID());
parameter.setRdID(borrow.getRdID());
// 比较证件是否有效
Parameter parameter1 = borrowService.getReaderInfoByID(parameter);
if (parameter1.getRdStatus().equals("有效") && (DateExchangeUtil.GetDayFormDate(new Date(),
parameter1.getRdDateReg()) <= readerType.getDateValid() * 366 || readerType.getDateValid() == 0)) {
if (parameter1.getRdBorrowQty() <= readerType.getCanLendQty()) {
if (parameter1.getBkStatus().equals("在馆")) {
parameter.setBkStatus("借出");
parameter.setRdStatus("有效");
parameter.setRdBorrowQty(parameter1.getRdBorrowQty() + 1);
borrowService.insertBorrow(borrow);
borrowService.updateBookByID(parameter);
borrowService.updateReaderByID(parameter);
} else {
throw new Exception("图书已借出");
}
} else {
throw new Exception("已超过规定的借书的数量");
}
} else {
parameter.setRdStatus("注销");
borrowService.updateReaderByID(parameter1);
throw new Exception("你的证件已过期");
}
return "index";
}
/**
* @Title : SelectBorrowInfo
* @功能描述: TODO 列举所有的信息
* @开发者:陈强
* @参数: @param parameter
* @参数: @param model
* @参数: @return
* @返回类型:String
* @throws :
*/
@RequestMapping("/selectBorrowInfo")
@RequiresPermissions(value={"borrow:selectBorrowInfo","iterm:all"},logical=Logical.OR)
public String SelectBorrowInfo(Parameter parameter,Model model)
{
int count=borrowService.getCounts(parameter);
int start=parameter.getStart();
if(start<0) start=0;
if(start>count)start-=10;
int end=start+10;
parameter.setStart(start);
parameter.setEnd(end);
List<Borrow> borrowList=borrowService.selectBorrowInfo(parameter);
model.addAttribute("BorrowList",borrowList);
model.addAttribute("parameter", parameter);
return "WEB-INF/bookJsp/bookBorrowInfo";
}
/**
* @Title : DeleteBorrow
* @功能描述: TODO 删除借阅信息,把一切的信息还原
* @开发者:陈强
* @参数: @param parameter
* @参数: @param ra
* @参数: @return
* @返回类型:String
* @throws :
*/
@RequestMapping("deleteBorrow")
@RequiresPermissions(value={"borrow:deleteBorrow","iterm:all"},logical=Logical.OR)
public String DeleteBorrow(Parameter parameter,RedirectAttributes ra,@RequestParam("id")int id)
{
if(parameter.getIsHasReturn().equals("未还"))
{
Parameter pmt=borrowService.getReaderInfoByID(parameter);
Parameter temp=new Parameter();
temp.setBkID(parameter.getBkID());
temp.setRdID(parameter.getRdID());
temp.setRdBorrowQty(pmt.getRdBorrowQty()-1);
temp.setBkStatus("在馆");
borrowService.updateReader(temp);
borrowService.updateBookByID(temp);
}
borrowService.deleteBorrowByID(id);
ra.addAttribute("start",0);
ra.addAttribute("isHasReturn", parameter.getIsHasReturn());
return "redirect:/borrow/selectBorrowInfo";
}
/**
* @Title : comeBorrowEdit
* @功能描述: TODO 进入归还和续借的操作页面
* @开发者:陈强
* @参数: @return
* @返回类型:String
* @throws :
*/
@RequestMapping("/comeBorrowEdit")
@RequiresPermissions(value={"borrow:comeBorrowEdit","iterm:all"},logical=Logical.OR)
public String comeBorrowEdit()
{
return "WEB-INF/bookJsp/bookBorrowEdit";
}
/**
* @Title : BorrowOperator
* @功能描述: TODO
* @开发者:陈强
* @参数: @param borrow
* @参数: @param br
* @参数: @param model
* @参数: @param radion
* @参数: @param operator
* @参数: @return
* @参数: @throws Exception
* @返回类型:String
* @throws :
*/
@RequestMapping(value = "/borrowOperator", method = { RequestMethod.POST, RequestMethod.GET })
@RequiresPermissions(value={"borrow:borrowOperator","iterm:all"},logical=Logical.OR)
public String BorrowOperator(@Validated Borrow borrow,BindingResult br,Model model,@RequestParam("tool")String radion,@RequestParam("operator")String operator
) throws Exception
{
if (br.hasErrors()) {
String Message = null;
List<ObjectError> errors = br.getAllErrors();
for (ObjectError objectError : errors) {
model.addAttribute("message", Message + objectError.getDefaultMessage());
}
return "error";
}
Borrow row=borrowService.getBorrow(borrow);
ReaderType readerType=borrowService.findReaderTypeByrdID(borrow.getRdID());
if(row.getIsHasReturn().equals("已还"))
{
throw new Exception("该图书已还不需要此操作");
}
if(radion.equals("2"))
{
if(row.getIdContinueTimes()<readerType.getCanContinueTimes())
{
borrow.setIdDateOut(new Date());
borrow.setIdContinueTimes(row.getIdContinueTimes()+1);
borrow.setOperatorLend(operator);
borrow.setIdDateRetPlan(DateExchangeUtil.GetDateFromDay(new Date(), readerType.getCanLendDay()));
borrowService.updateTB(borrow);
}
else
{
throw new Exception("你已没有续借的机会");
}
}
if(radion.equals("1"))
{
borrow.setIdDateRetAct(new Date());
borrow.setIdOverDay((int)DateExchangeUtil.GetDayFormDate(new Date(), row.getIdDateRetPlan()));
borrow.setIdOverMoney(borrow.getIdOverDay()*readerType.getPunishRate());
borrow.setIdPunishMoney(borrow.getIdOverMoney());
borrow.setIsHasReturn("已还");
borrow.setOperatorRet(operator);
borrowService.updateReturn(borrow);
Parameter parameter=new Parameter();
parameter.setBkID(borrow.getBkID());
parameter.setRdID(borrow.getRdID());
Parameter pmt=borrowService.getReaderInfoByID(parameter);
Parameter temp=new Parameter();
temp.setBkID(parameter.getBkID());
temp.setRdID(parameter.getRdID());
temp.setRdBorrowQty(pmt.getRdBorrowQty()-1);
temp.setBkStatus("在馆");
borrowService.updateReader(temp);
borrowService.updateBookByID(temp);
}
return "index";
}
}
源码获取:俺的博客首页 "资源" 里下载!