Java项目:图书商城管理系统(java+SpringBoot+VUE+ElementUI+Mysql)

 源码获取:俺的博客首页 "资源" 里下载!

项目介绍

管理员:首页、个人中心、用户管理、卖家管理、图书类型管理、图书信息管理、图书信息、系统管理 、订单管理

卖家: 首页、个人中心、图书信息管理、订单管理

用户: 首页、图书信息、图书资讯、个人中心、购物车


环境需要

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框架、系统需求分析、系统功能、可行性研究、经济可行性、技术可行性、运行可行性、事件可行性、系统业务过程分析、系统业务过程分析、系统用例图、系统设计、数据库设计、系统整体设计、系统设计思想、系统流程图、系统详情设计、系统功能模块、系统功能模块、管理员功能模块):

图书商城首页展示:

图书信息展示页面:

图书信息详情页面: 

购物车展示页面: 

个人中心详情展示:

 后台登陆管理页面:

 图书归还列表详情:

图书借阅列表:

 图书信息详情:

用户登录管理控制层:

@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";
	}
}

源码获取:俺的博客首页 "资源" 里下载!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

OldWinePot

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值