1.项目背景:
某高校图书馆每日流量较大,校方为减轻工作人员压力,决定采购一套自动化系统来帮助管理;
2.主要功能:
a.实现对库存图书的多维查询检索;
b.导入excel,实现自动化批量入库登记;
c.提供手机端入口,让教师学生方便借阅和预约归还报损;
d.提供可视化展示,让管理人员直观看到图书馆运行状况;
e.整合原有刷卡与押金系统。
3.业务流程与功能路径:
a. 管理方登记入库
业务说明:
当有新书到馆,或需要批量导入历史藏书信息时,由图书管理员通过系统完成入库登记与上架管理。
流程路径:
登录与权限校验
管理员通过 PC 端登录系统
系统根据账号角色(馆长/管理员)校验权限,进入“馆藏管理”模块
单本入库登记
管理员选择“图书入库-单本入库”
填写或扫描录入图书信息:
ISBN / 条码
书名、作者、出版社、版次、价格
分类号、索书号、存放位置(楼层、书架号)
系统自动校验是否已有同版图书记录:
若存在:只增加册数,生成新条码并绑定
若不存在:新增图书基础信息与馆藏记录
管理员确认无误后提交,系统生成/打印条码标签并用于贴书、上架
Excel 批量入库
管理员选择“图书入库-批量导入”
下载系统提供的 Excel 模板(格式固定:ISBN、书名、作者、数量等)
将采购/盘点数据整理后上传 Excel 文件
系统自动解析:
对格式错误、不完整数据给出错误提示列表
对已存在图书执行“增加册数”,对新图书自动创建基础信息
管理员核对解析结果后,一键确认入库
系统批量生成条码号,可导出用于打印
库存与上架管理
入库后,系统更新库存数量、可借状态
管理员根据系统推荐的分类及馆藏位置,将图书实际上架
可在“馆藏分布/可视化界面”中查看各类别、各书架的库存情况
日志与追踪
系统记录本次入库操作人、时间、数量及数据来源(单本/Excel)
管理员可在“操作日志”中查询历史入库记录,便于审计与追责
b. 借书流程
业务说明:
读者(教师/学生)通过手机端或现场终端完成图书查询、借阅和借阅信息查看,系统与原有刷卡与押金系统打通。
流程路径:
读者身份认证
读者打开手机端或自助借书终端
通过校园一卡通登录、学工号+密码或统一身份认证登录
系统自动读取读者类型(教师/学生)、借阅权限(最大借书册数、借期、押金规则)
图书查询与选书
读者在手机端执行多维查询:
关键词(书名、作者、ISBN)
分类、馆藏位置、在馆/借出状态
系统返回搜索结果,支持:
显示存量、当前可借数量
显示所在书库、书架位置(可附带简易馆内导航/楼层信息)
现场借阅(刷卡/扫码)
读者找到实体书后,到自助借书机或前台
借书方式:
刷校园卡 / 出示读者二维码,由设备扫描
扫描图书条码或 RFID 标签
系统校验:
读者是否有欠费、超期未还
是否超出可借册数或权限限制
... ...(字数限制)
1.技术架构:
后端采用javaWeb技术栈,数据库就使用学校原有的mysql数据库,redis作为缓存库;
前端采用VUE3+pinia状态管理+elementPlus控件样式库+echarts图表库;
2.负责模块:
负责后端开发部分,包括库存模糊查询检索,身份认证,押金与借还报损管理事务逻辑,可视化图表的接口开发,excel通过poi格式转换入库,等等... ...
3.技术难点:
(1)多维度库存模糊检索的性能与准确性
多条件组合查询复杂
支持按书名、作者、ISBN、分类号、索书号、馆藏地、在馆状态等多维度组合检索。
模糊搜索(LIKE、全文索引)与精确匹配(ISBN、条码)需要合理组合,否则 SQL 语句复杂且难以维护。
高并发下查询性能压力
每日访问量较大,大量读者同时进行搜索。
若直接对 MySQL 进行多字段模糊查询,容易出现慢查询、锁竞争。
解决思路难点
在设计层面需要对「常用查询条件」进行索引优化与联合索引设计。
使用 Redis 缓存热门书目和热门搜索结果,设计合理的缓存 key(如:条件摘要哈希);
对搜索接口进行分页与限流控制,避免恶意或误操作导致数据库压力过大。
兼顾搜索结果实时性和缓存命中率(例如入库/借还后如何更新或失效相关缓存)。
(2)身份认证与角色权限控制
统一身份认证对接难点
需要与学校现有的一卡通/统一身份认证系统对接(若使用 CAS、OAuth2 等),协议、接口规范复杂。
要处理登录态同步、Token 校验、Session 失效等问题。
多角色权限模型设计
读者(学生/教师)、管理员、馆长等角色权限差异大:
普通读者仅能查询、借阅、预约、查看个人借阅记录;
管理员可进行入库、删除、报损处理;
馆长可查看运营报表、导出统计数据。
需要设计细粒度权限控制(接口级、菜单级),防止越权访问。
安全性与防护
登录接口防爆破、防刷接口;
Token/JWT 的签名与过期时间管理;
用户敏感信息(押金、欠费)在传输和接口返回中的脱敏与加密。
(3)押金与借还报损事务逻辑的复杂性
多表、多业务的事务一致性
借书操作涉及:借阅记录表、图书库存表、押金/费用表、日志表等。
报损/遗失涉及金额计算、押金扣除、库存减少、状态变更。
需要保证在高并发下事务的原子性和一致性,避免出现「钱扣了但记录没生成」「状态错乱」的情况。
业务规则多变且细节繁琐
不同读者类型(教师/学生)借期不同、最大可借册数不同。
超期费用、损坏赔偿、遗失赔偿的计算规则可能随学校政策调整。
要设计可配置、可扩展的规则引擎或策略模式,避免写死逻辑导致后期维护困难。
并发与锁控制
同一册图书在同一时刻可能被多个人尝试借阅或预约,需要防止「超借」情况。
需要利用数据库乐观锁/悲观锁或分布式锁(基于 Redis)控制同一资源的并发修改。
合理设置事务隔离级别,避免出现脏读、不