图书租赁系统

网上出版的电子书只有购买服务,如果也有租赁服务就好了。例如,读者可以租个1个小时,1个小时到期,读者就不能阅读该书。
在这里插入图片描述
图中借阅结束时间是2024-04-23 13:36:29,到期后该书就会从列表中消失。
BookOrderMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.system.mapper.BookOrderMapper"><resultMap type="BookOrder" id="BookOrderResult"><result property="orderId"    column="order_id"    /><result property="userId"    column="user_id"    /><result property="bookId"    column="book_id"    /><result property="startTime"    column="start_time"    /><result property="endTime"    column="end_time"    /></resultMap><sql id="selectBookOrderVo">select order_id, user_id, book_id, start_time, end_time from book_order</sql><select id="selectBookOrderList" parameterType="BookOrder" resultMap="BookOrderResult"><include refid="selectBookOrderVo"/><where>  <if test="userId != null "> and user_id = #{userId}</if><if test="bookId != null "> and book_id = #{bookId}</if><if test="startTime != null "> and start_time = #{startTime}</if><if test="endTime != null "> and end_time = #{endTime}</if>and end_time >= now()</where></select><select id="selectBookOrderByOrderId" parameterType="Long" resultMap="BookOrderResult"><include refid="selectBookOrderVo"/>where order_id = #{orderId}</select><insert id="insertBookOrder" parameterType="BookOrder" useGeneratedKeys="true" keyProperty="orderId">insert into book_order<trim prefix="(" suffix=")" suffixOverrides=","><if test="userId != null">user_id,</if><if test="bookId != null">book_id,</if><if test="startTime != null">start_time,</if><if test="endTime != null">end_time,</if></trim><trim prefix="values (" suffix=")" suffixOverrides=","><if test="userId != null">#{userId},</if><if test="bookId != null">#{bookId},</if><if test="startTime != null">#{startTime},</if><if test="endTime != null">#{endTime},</if></trim></insert><update id="updateBookOrder" parameterType="BookOrder">update book_order<trim prefix="SET" suffixOverrides=","><if test="userId != null">user_id = #{userId},</if><if test="bookId != null">book_id = #{bookId},</if><if test="startTime != null">start_time = #{startTime},</if><if test="endTime != null">end_time = #{endTime},</if></trim>where order_id = #{orderId}</update><delete id="deleteBookOrderByOrderId" parameterType="Long">delete from book_order where order_id = #{orderId}</delete><delete id="deleteBookOrderByOrderIds" parameterType="String">delete from book_order where order_id in <foreach item="orderId" collection="array" open="(" separator="," close=")">#{orderId}</foreach></delete></mapper>

BookOrderController.java

package com.ruoyi.web.controller.system;import java.util.List;import com.ruoyi.common.utils.ShiroUtils;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.system.domain.BookOrder;
import com.ruoyi.system.service.IBookOrderService;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;import javax.security.auth.login.LoginContext;/*** bookorderController* * @author ruoyi* @date 2024-04-23*/
@Controller
@RequestMapping("/system/order")
public class BookOrderController extends BaseController
{private String prefix = "system/order";@Autowiredprivate IBookOrderService bookOrderService;@RequiresPermissions("system:order:view")@GetMapping()public String order(){return prefix + "/order";}/*** 查询bookorder列表*/@RequiresPermissions("system:order:list")@PostMapping("/list")@ResponseBodypublic TableDataInfo list(BookOrder bookOrder){bookOrder.setUserId(ShiroUtils.getUserId());startPage();List<BookOrder> list = bookOrderService.selectBookOrderList(bookOrder);return getDataTable(list);}/*** 导出bookorder列表*/@RequiresPermissions("system:order:export")@Log(title = "bookorder", businessType = BusinessType.EXPORT)@PostMapping("/export")@ResponseBodypublic AjaxResult export(BookOrder bookOrder){List<BookOrder> list = bookOrderService.selectBookOrderList(bookOrder);ExcelUtil<BookOrder> util = new ExcelUtil<BookOrder>(BookOrder.class);return util.exportExcel(list, "bookorder数据");}/*** 新增bookorder*/@GetMapping("/add")public String add(){return prefix + "/add";}/*** 新增保存bookorder*/@RequiresPermissions("system:order:add")@Log(title = "bookorder", businessType = BusinessType.INSERT)@PostMapping("/add")@ResponseBodypublic AjaxResult addSave(BookOrder bookOrder){return toAjax(bookOrderService.insertBookOrder(bookOrder));}/*** 修改bookorder*/@RequiresPermissions("system:order:edit")@GetMapping("/edit/{orderId}")public String edit(@PathVariable("orderId") Long orderId, ModelMap mmap){BookOrder bookOrder = bookOrderService.selectBookOrderByOrderId(orderId);mmap.put("bookOrder", bookOrder);return prefix + "/edit";}/*** 修改保存bookorder*/@RequiresPermissions("system:order:edit")@Log(title = "bookorder", businessType = BusinessType.UPDATE)@PostMapping("/edit")@ResponseBodypublic AjaxResult editSave(BookOrder bookOrder){return toAjax(bookOrderService.updateBookOrder(bookOrder));}/*** 删除bookorder*/@RequiresPermissions("system:order:remove")@Log(title = "bookorder", businessType = BusinessType.DELETE)@PostMapping( "/remove")@ResponseBodypublic AjaxResult remove(String ids){return toAjax(bookOrderService.deleteBookOrderByOrderIds(ids));}
}

ShiroUtils.getUserId()可以获取当前登录用户的user_id。
BookOrder.java

package com.ruoyi.system.domain;import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;/*** bookorder对象 book_order* * @author ruoyi* @date 2024-04-23*/
public class BookOrder extends BaseEntity
{private static final long serialVersionUID = 1L;/**  */private Long orderId;/**  */@Excel(name = "")private Long userId;/**  */@Excel(name = "")private Long bookId;/**  */@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")@Excel(name = "", width = 30, dateFormat = "yyyy-MM-dd")private Date startTime;/**  */@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")@Excel(name = "", width = 30, dateFormat = "yyyy-MM-dd")private Date endTime;public void setOrderId(Long orderId) {this.orderId = orderId;}public Long getOrderId() {return orderId;}public void setUserId(Long userId) {this.userId = userId;}public Long getUserId() {return userId;}public void setBookId(Long bookId) {this.bookId = bookId;}public Long getBookId() {return bookId;}public void setStartTime(Date startTime) {this.startTime = startTime;}public Date getStartTime() {return startTime;}public void setEndTime(Date endTime) {this.endTime = endTime;}public Date getEndTime() {return endTime;}@Overridepublic String toString() {return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE).append("orderId", getOrderId()).append("userId", getUserId()).append("bookId", getBookId()).append("startTime", getStartTime()).append("endTime", getEndTime()).toString();}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/2087.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue3+elementui-plus实现无限递归菜单

效果图 实现方式是&#xff1a;通过给定的数据结构层数来动态生成多级菜单 menu.vue<template><el-menu:default-active"activeIndex"class"el-menu-demo"mode"horizontal"select"handleSelect"background-color"#f8f…

直流负载在新能源领域的作用有哪些

直流负载在新能源领域的作用主要体现在以下几个方面&#xff1a; 新能源如太阳能、风能等&#xff0c;其发电过程中产生的电能为直流电。传统的电力系统主要采用交流电&#xff0c;因此在新能源并网时需要进行逆变器转换。然而&#xff0c;逆变器在转换过程中会存在一定的能量损…

【话题】为什么选择成为了一名程序员?

大家好&#xff0c;我是全栈小5&#xff0c;欢迎阅读小5的系列文章&#xff0c;这是《话题》系列文章 目录 背景沉迷游戏回归学习机缘巧合兴趣驱动的选择职业发展的考虑兴趣与职业发展的结合结论文章推荐 背景 选择程序员之路&#xff1a;兴趣驱动还是职业发展&#xff1f; 在…

IntelliJ IDEA2020下使用Maven构建Scala 项目

1.创建maven文件 2.进入pom.xml导入依赖 <!--添加spark的依赖--><dependency><groupId>org.apache.spark</groupId><artifactId>spark-core_2.12</artifactId><version>3.2.1</version></dependency><!--添加scala依…

YOLC: You Only Look Clusters for Tiny Object Detection in Aerial Images

摘要 由于以下因素,从航拍图像中检测物体面临着重大挑战:1)航拍图像通常具有非常大的尺寸,通常有数百万甚至数亿像素,而计算资源有限。2)物体尺寸较小导致有效信息不足,无法进行有效检测。3)物体分布不均匀导致计算资源浪费。为了解决这些问题,我们提出YOLC(You Onl…

让更多的人能使用AI才能提升国内AI竞争力

随着人工智能技术的快速发展,AI正在深入影响我们的生活和工作。然而,目前AI技术的使用和应用主要集中在少数大型科技公司和研究机构,普通大众对AI技术的接触和使用还相对有限。如何让更多的人能够便捷地使用AI,从而带动整个国内AI产业的发展,已成为当前亟需解决的问题。 首先…

(实测可用)(2)Git的使用——如何在CSDN代码托管平台gitcode上托管自己的代码进行管理

一、CSDN 代码托管与Git使用 1、登录GitCode注册账号 (1)登录CSDN首页,选择GitCode; 2、生成SSH秘钥 (1)由于我们的本地git仓库和 GitCode仓库之间的传输是通过SSH加密的,所以我们需要配置SSH密钥。 注:安装了git工具,就可以使用ssh命令 (2)打开cmd命令行,输入…

Apache POI报表统计

Apache POl是一个处理Miscrosoft Office各种文件格式的开源项目。简单来说就是&#xff0c;我们可以使用 POl 在 Java 程N序中对Miscrosoft Office各种文件进行读写操作。一般情况下&#xff0c;POI都是用于操作 Excel 文件。 导入Maven坐标&#xff1a; <dependency>&l…

若依集成mybatisplus报错找不到xml

引用&#xff1a;https://blog.csdn.net/qq_65080131/article/details/136677276 MybatisPlusAutoConfiguration中可以知道&#xff0c;系统会自动配置SqlSessionFactory&#xff0c;&#xff0c;但是&#xff0c;当你有自定义的SqlSessionFactory&#xff0c;&#xff0c;就会…

图搜索算法详解:广度优先搜索与深度优先搜索的探索之旅

图搜索算法详解&#xff1a;广度优先搜索与深度优先搜索的探索之旅 1. 广度优先搜索&#xff08;BFS&#xff09;1.1 伪代码1.2 C语言实现 2. 深度优先搜索&#xff08;DFS&#xff09;2.1 伪代码2.2 C语言实现 3. 总结 图搜索算法是计算机科学中用于在图结构中查找路径的算法。…

zigbee cc2530的室内/矿井等定位系统RSSI原理

1. 定位节点软件设计流程 2. 硬件设计 cc2530 最小系统 3. 上位机 c# 设计上位机&#xff0c;通过串口连接协调器节点&#xff0c;传输数据到pc上位机&#xff0c;显示节点坐标信息 4. 实物效果 需要4个节点&#xff0c;其中一个协调器&#xff0c;两个路由器作为参考节点&a…

面试集中营—mysql架构相关

一、Mysql基本架构 这个问题没太有人问&#xff0c;笔者也是浅尝辄止&#xff0c;但是了解一个中间件一定要从架构开始&#xff0c;上来就背八股文那就没意思了。 从下图可以看到Mysql的包括网络连接、服务、数据存储和系统文件&#xff08;日志&#xff09;四大部分。 数据连接…

Windows 平台上面管理服务器程式的高级 QoS 策略

在 Windows 平台上面&#xff0c;目前有两个办法来调整应用程式的 QoS 策略设置&#xff0c;一种是通过程式设置&#xff0c;一种是通过 “Windows 组策略控制”。 在阅读本文之前&#xff0c;您需要先查阅本人以下的几篇文献&#xff0c;作为前情提示&#xff1a; VC Windows…

什么是区块链?什么是X314协议?

X314协议是一种基于区块链技术的分布式账本协议&#xff0c;具有去中心化、安全性高和可扩展性强的特点。本文将从多个角度对X314协议进行通俗解释&#xff0c;带您了解这一前沿技术。 一、什么是区块链和分布式账本&#xff1f; 首先&#xff0c;我们需要了解什么是区块链和分…

高斯过程回归【详细数学推导】

机器学习笔记 第一章 机器学习简介 第二章 感知机 第三章 支持向量机 第四章 朴素贝叶斯分类器 第五章 Logistic回归 第六章 线性回归和岭回归 第七章 多层感知机与反向传播【Python实例】 第八章 主成分分析【PCA降维】 第九章 隐马尔可夫模型 第十章 奇异值分解 第十一章 熵…

javascript1

[TOC](javascript初始)一.编程语言 编程 计算机语言 编程语言&#xff1a;汇编语言 高级语言&#xff1a;java c python javascript 标记语言&#xff1a;css html 二.计算机基础 计算机组成 数据存储 单位 运行 三. javascript 初识 历史? 布兰登. 艾奇创立 是什么?…

HarmonyOS ArkUI实战开发-手势密码(PatternLock)

ArkUI开发框架提供了图案密码锁 PatternLock 组件&#xff0c;它以宫格图案的方式输入密码&#xff0c;用于密码验证&#xff0c;本节读者简单介绍一下该控件的使用。 PatternLock定义介绍 interface PatternLockInterface {(controller?: PatternLockController): PatternL…

Unity2D 学习笔记 1.如何高效切换场景

Unity2D 学习笔记 1.如何高效切换场景 前言采用Scene的方式切换创建场景设置场景模板保存模板使用方法 前言 关于Unity版本&#xff0c;VS Studio版本以及其它相关设置&#xff0c;请移步上一篇Unity2D 学习笔记 0.Unity需要记住的常用知识 本节的方法源于Unity中文课程网《U…

Ubuntu下使用VisualStudioCode进行Java开发

0-1开始Java语言编程之路 一、Ubuntu下Java语言环境搭建 二、Ubuntu下Docker环境安装 三、使用Docker搭建本地Nexus Maven私有仓库 四、Ubuntu下使用VisualStudioCode进行Java开发 Visual Studio Code 下载 点击这个链接Visual Studio Code&#xff0c;进入VisualStudioCode的…

一文看懂电位器的接线方式

电位器是一种用于精确控制电路中电压、电流或信号幅度的电子元件&#xff0c;通过调整其内部电刷相对于电阻体的位置&#xff0c;可以连续改变其电阻值&#xff0c;进而实现对电路特性的微调或控制。根据电阻体材料、结构特点以及输出电压与输入电压&#xff08;或电刷位移&…