From e45bae2395280caa40434f6cdf41f779a6eaa654 Mon Sep 17 00:00:00 2001
From: Shu Guang <61069967+shuguangnet@users.noreply.github.com>
Date: Thu, 15 May 2025 23:50:21 +0800
Subject: [PATCH] fix: delete file
---
README.md | 842 ------------------------------------------------
README_en.md | 881 ---------------------------------------------------
2 files changed, 1723 deletions(-)
delete mode 100644 README.md
delete mode 100644 README_en.md
diff --git a/README.md b/README.md
deleted file mode 100644
index 2f5ddf7..0000000
--- a/README.md
+++ /dev/null
@@ -1,842 +0,0 @@
-# 智能图书馆开源文档
-
->作者:[程序员小白条](https://luoye6.github.io/)
->
->[Gitee 主页](https://gitee.com/falle22222n-leaves)
->
->[GitHub 主页](https://github.com/luoye6)
-
-Language:**[English](README_en.md)**| **[中文](README.md).**
-
-## ☀️新手必读
-
-+ 本项目拥有完整的API后台接口文档(文尾)(重点⭐)
-+ 未经本人允许擅自将本项目作于商用、竞赛、贩卖源码、毕设擅自改动作者等违法行为,将依法追究法律责任,后果自负,项目已申请软件著作权。
-+ 拥有典型的大学生思维、狂妄、自大的人请不要加我,谢谢合作!
-+ 如果项目对您有所帮助,可以Star⭐一下,受到鼓励的我会继续加油。
-+ [项目在线演示地址](https://www.xiaobaitiao.top)
-+ [项目前端地址](https://gitee.com/falle22222n-leaves/vue_-book-manage-system)
-+ [项目后端地址](https://gitee.com/falle22222n-leaves/vue_-book-manage-system_backend)
-+ [项目部署视频](https://www.bilibili.com/video/BV1Zh4y1z7QE/?spm_id_from=333.999.0.0)
-
-[](https://gitee.com/falle22222n-leaves/vue_-book-manage-system) [](https://gitee.com/falle22222n-leaves) [](https://github.com/luoye6)
-
-## 黑马程序员推荐作品(doge)
-
-
-## ☀️个人介绍
-
-
-
-
-
-## 🐼新项目上线(开新坑)
-智能 AI 旅游推荐平台上线!欢迎收藏和 Fork,技术栈 Vue3+SpringBoot2+TypeScript,UI 设计更加美观,且可以自定义主题颜色,支持讯飞星火 AI 大模型和可添加协同过滤算法。
-+ [项目在线演示地址](https://www.xiaobaitiao.icu)
-+ [项目前端地址](https://gitee.com/falle22222n-leaves/vue3_tourism_frontend)
-+ [项目后端地址](https://gitee.com/falle22222n-leaves/vue3_tourism_backend)
-
-## ☀️项目介绍
-
-**AI 智能图书馆**(AI Intelligent Library)是一个利用 AI 模型和数据分析对用户所喜欢的图书进行精准推荐的系统,并且提供了 AIGC 的在线生成借阅量分析的 BI 图表功能,能够起到一个数据分析师的作用。其主要有三大使用者:用户(借阅人)、图书管理员、系统管理员。
-
-> Ps:如果你想要简易和新颖,那么这个项目将会是不错的选择~
-
-
-
-
-
-## ☀️功能和特性
-
-### 用户功能
-
-1)图书查询功能:分页构造器缓解数据过大压力,后端可设置请求数防止爬虫请求数过大,服务器负载过大。模糊查询进行字段搜索。表格均**可导出 PDF 和 EXCEL**。
-
-2)读者规则功能:查询现有的借阅规则,借阅规则包括:借阅编号,可借阅图书数量,可借阅天数,可借阅图书馆,过期扣费/天。
-
-3)查看公告: 可以查询图书管理员发布的公告列表,**文字滑动效果**。
-
-4)个人信息: 可以查看个人的借阅证编号,借阅证姓名,规则编号,状态,可以修改个人账户的密码。
-
-5)借阅信息: 可以查看自身借阅过的图书记录和归还情况。
-
-6)违章信息: 可以查询自身归还的图书是否有违章信息。
-
-7)读者留言: 实现留言功能并以**弹幕形式**显示。
-
-8)**智能推荐**用户输入自己的偏好,AI 根据数据库书籍列表和用户偏好,给用户推荐书籍。
-
-### 图书管理员功能
-
-1)借阅图书: 图书管理员输入借阅证号(用户)和要借的图书编号和当前的时间,点击借阅。
-
-2)归还图书: 输入图书编号查看图书是否逾期,并且可以设置违规信息,然后选择是否归还图书。
-
-3)借书报表: 用于查询已经借阅并归还的书籍列表,同样使用分页构造器和模糊查询字段,显示借阅证编号,图书编号,借阅日期,截止日期,归还日期,违章信息,处理人。
-
-4)还书报表: 用于查询已经借阅但是还未归还的书籍列表,显示借阅证编号,图书编号,借阅日期,截止日期。
-
-5)发布公告: 可以查询当前发布的公告列表,并进行删除,修改,增加功能,分页构造器用于缓解数据量大的情况。
-
-### 系统管理员功能
-
-1)书籍管理: 可以查询当前的所有图书,显示图书编号,图书昵称,作者,图书馆,分类,位置,状态,描述。可以进行添加,修改,删除图书。利用分页构造器实现批量查询。利用模糊查询实现图书搜索功能。**利用插件实现 PDF 和 EXCEL 导出**。
-
-2)书籍类型: 显示查询当前的所有图书类型,可以进行添加,修改,删除图书类型,利用分页构造器实现批量查询,缓解数据压力。
-
-3)借阅证管理: 可以查询当前的所有借阅证列表,也就是用户数量,可以进行添加,修改,删除操作。同样实现分页。
-
-4)借阅信息查询: 可以查询当前已经完成借阅和归还的记录,显示借阅证号,书籍编号,借阅日期,截止日期,归还日期,违章信息,处理人。分页功能,PDF 和 EXCEL 导出。
-
-5)借阅规则管理: 可以查询当前所有的借阅规则,显示限制借阅天数,限制本数,限制图书馆,逾期费用,可以进行添加、删除、修改操作。
-
-6)图书管理员管理: 显示当前的图书管理员列表,显示账号,姓名,邮箱,可以进行添加、删除、修改操作。
-
-7)系统管理: 可以查询一个月内的借阅量,以一周为时间间隔,计算借阅量,**用 Echarts 实现各种图表的展示**。
-
-8)系统分析:可以上传某个时间段的借阅量和日期,并且输入分析目标和想要生成的图表类型,等待一段时间后,**AI 将会给出分析结论和可视化图表**。
-
-### 特性(亮点)
-
-1)本项目采用前后端分离的模式,前端构建页面,后端作数据接口,前端调用后端数据接口得到数据,重新渲染页面。
-
-2)前端在 Authorization 字段提供 Token 令牌,API 认证使用 Token 认证,使用 HTTP Status Code 表示状态,数据返回格式使用 JSON。
-
-3)后端已开启 CORS 跨域支持,采用权限拦截器进行权限校验,并检查登录情况。
-
-4)添加全局异常处理机制,捕获异常,增强系统健壮性。
-
-5)前端用 Echarts 可视化库实现了图书借阅的分析图标(折线图、饼图),并通过 Loading 配置提高加载体验。
-
-6)留言组件采用弹幕形式,贴合用户的喜好。
-
-7)引入 knife4j 依赖,使用 Swagger + Knife4j 自动生成 OpenAPI 规范的接口文档,前端可以在此基础上使用插件自动生成接口请求代码,降低前后端协作成本
-
-8)使用 ElementUI 组件库进行前端界面搭建,快速实现页面生成,并实现了前后端统一权限管理,多环境切换等能力。
-
-9)基于 MyBatis Plus 框架的 QueryWrapper 实现对 MySQL 数据库的灵活查询,并配合 MyBatisX 插件自动生成后端 CRUD 基础代码,减少重复工作。
-
-10)前端路由懒加载、CDN 静态资源缓存优化、图片懒加载效果。
-
-## ☀️运行方式
-
-### 2 分钟快速上手使用项目
-
-1)找到 SpringBoot 启动类,点击运行
-
-
-
-2)打开 Knife4J 注册用户,或者可以直接找我拿数据库模拟数据(简易)。
-
-
-
-
-
-3)前端输入表单内容后点击登录即可成功,开始愉快使用功能~
-
-
-
-
-
-## ☀️部署方式
-
-### 前置条件
-
-**前端**
-
-软件:Vscode 或者 Webstorm(推荐)
-
-环境:Node 版本 16 或者 18(推荐) **注:千万别选 18 以上的版本!**
-
-**后端**
-
-软件:Eclipse 或者 IDEA(推荐)
-
-环境:MySQL 5.7 或者 8.0(推荐)Redis(可选)
-
-### 前端部署
-
-1)点击克隆/下载项目,会使用 Git 进行版本控制的,推荐 Git Clone,不会的小伙伴可以选择下载一个 Zip 压缩包,然后解压到自己电脑的 D 盘,推荐直接 Star,后续直接向我拿数据库模拟文件和 API 接口文档。
-
-
-
-2)利用 Vscode 或者 Webstorm 打开前端页面,配置 Configuration。配置 Node 环境和包管理工具即可,我这边选择的包管理工具是 Npm,其他包管理工具如:Yarn、Cnpm、Pnpm 皆可。 **注:注意更改 Npm 的镜像地址为淘宝的新镜像地址,否则会出现 Npm Install 一直卡进度条的情况。**
-
-3)直接点击 dev 的运行,或者打开控制台,输入 npm run serve 即可成功启动前端项目。
-
-```shell
-npm config set registry https://registry.npmmirror.com/
-```
-
-
-
-
-
-
-
-4)将图片链接进行自定义切换,可以切换为你自己的图床的图片链接,比如七牛云、GitHub 等,也可以寻找在线图片,复制百度文库图片链接(多试几次,有些图片有防盗链)。**更换背景后,可以看到右下角的权限切换小图标。**
-
-
-
-
-
-
-
-### 后端部署
-
-1)点击克隆/下载项目,会使用 Git 进行版本控制的,推荐 Git Clone,不会的小伙伴可以选择下载一个 Zip 压缩包,然后解压到自己电脑的 D 盘,推荐直接 Star,后续直接向我拿数据库模拟文件和 API 接口文档。
-
-
-
-2)领取数据库模拟文件后,利用 Navicat 或者 SQLYog 等软件导入数据库文件,记得先建立一个名为 bms_boot 的数据库,然后右键点击运行 SQL 文件即可,运行成功,无报错后,重新打开数据库,检查是否有数据,如果有数据,表明导入成功。
-
-
-
-
-
-3)用 IDEA 打开后端项目,找到 application-dev.yml 文件,修改其中的 MySQL 配置,保证用户名和密码正确,注:密码不能以数字 0 开头。
-
-
-
-4)导入 Maven 依赖,注意看自己的 Maven 版本是否正确,建议选择跟我一样的,3.8以上的版本,发现依赖导入很慢,是因为没有配置国内镜像,默认连接的是国外服务器,因此阿里云镜像配置可以看这篇博客。[CSDN Maven 配置教程](https://blog.csdn.net/lianghecai52171314/article/details/102625184?ops_request_misc=&request_id=&biz_id=102&utm_term=Maven)
-
-
-
-5)找到 SpringBoot 启动类,我建议用 Debug 模式启动项目,更好排查错误。
-
-
-
-6)如果遇到错误,大概率可能是 JDK 版本问题,我项目用的是 JDK 8,建议选择与我相同版本。
-
-
-
-
-
-7)成功启动项目效果展示如下
-
-
-
-### 前后端联调
-
-1)如果需要修改端口和前缀(比如/api),需要同时修改前端和后端。
-
-
-
-
-
-## ☀️技术选型
-
-### 前端
-
-| **技术** | **作用** | **版本** |
-| ---------------------------- | ------------------------------------------------------------ | ---------------------------------------------------- |
-| Vue | 提供前端交互 | 2.6.14 |
-| Vue-Router | 路由式编程导航 | 3.5.1 |
-| Element-UI | 模块组件库,绘制界面 | 2.4.5 |
-| Axios | 发送ajax请求给后端请求数据 | 1.2.1 |
-| core-js | 兼容性更强,浏览器适配 | 3.8.3 |
-| swiper | 轮播图插件(快速实现) | 3.4.2 |
-| vue-baberrage | vue弹幕插件(实现留言功能) | 3.2.4 |
-| vue-json-excel | 表格导出Excel | 0.3.0 |
-| html2canvas+jspdf | 表格导出PDF | 1.4.1 2.5.1 |
-| node-polyfill-webpack-plugin | webpack5中移除了nodejs核心模块的polyfill自动引入 | 2.0.1 |
-| default-passive-events | **Chrome** 增加了新的事件捕获机制 **Passive Event Listeners**(被动事件侦听器) | 让页面滑动更加流畅,主要用于提升移动端滑动行为的性能 |
-| nprogress | 发送请求显示进度条(人机交互友好) | 0.2.0 |
-| echarts | 数据转图标的好工具(功能强大) | 5.4.1 |
-| less lessloader | 方便样式开发 | 4.1.3 11.1.0 |
-
-### 后端
-
-| **技术及版本** | **作用** | **版本** |
-| ------------------------------------ | ------------------------------------------------------------ | --------------------------------- |
-| SpringBoot | 应用开发框架 | 2.7.8 |
-| JDK | Java 开发包 | 1.8 |
-| MySQL | 提供后端数据库 | 8.0.23 |
-| MyBatisPlus | 提供连接数据库和快捷的增删改查 | 3.5.1 |
-| SpringBoot-Configuration-processor | 配置处理器 定义的类和配置文件绑定一般没有提示,因此可以添加配置处理器,产生相对应的提示. | |
-| SpringBoot-Starter-Web | 后端集成Tomcat MVC | 用于和前端连接 |
-| SpringBoot-starter-test | Junit4单元测试前端在调用接口前,后端先调用单元测试进行增删改查,注意Junit4和5的问题,注解@RunWith是否添加 | |
-| Lombok | 实体类方法的快速生成 简化代码 | |
-| mybatis-plus-generator | 代码生成器 | 3.5.1 |
-| MyBatisX | MyBatisPlus插件直接生成mapper,实体类,service | |
-| jjwt | token工具包 | 0.9.0 |
-| fastjson | 阿里巴巴的 JSON 工具类 | 1.2.83 |
-| hutool | hutool工具包(简化开发工具类) | [文档](https://hutool.cn/docs/#/) |
-| knife4j-openapi2-spring-boot-starter | Knife4j 在线接口文档测试工具 | 4.0.0 |
-| gson | 谷歌的 JSON 工具类 | 2.8.5 |
-| Java-WebSocket | 讯飞星火 AI 配置 | 1.3.8 |
-| okhttp | 讯飞星火 AI 配置 | 4.10.0 |
-| okio | 讯飞星火 AI 配置 | 2.10.0 |
-| jsoup | 简易爬虫工具 | 1.15.3 |
-| guava | 谷歌工具类 | 30.1-jre |
-| spring-boot-starter-data-redis | Redis 的 Starter | |
-| broadscope-bailian-sdk-java | 阿里云 AI 模型 | 1.1.7 |
-| spring-boot-starter-websocket | WebSocket 的 Starter | |
-
-## ☀️架构
-
-
-
-## ☀️核心设计
-
-### 智能推荐功能
-
-1)用户输入自己的图书偏爱信息。
-
-2)前端发送 Axios 请求。
-
-3)后端先判断文本是否违法(为空或者文本字数过长)。
-
-4)查看接口是否存在。
-
-5)查看 AI 接口调用次数是否充足。
-
-6)GuavaRateLimiter 进行单体限流,判断请求次数是否超出正常业务频次。
-
-7)给 AI 模型人工预设,并且查询数据库中的书籍列表进行拼接。
-
-8)查询 AI 模型与该用户最近的五条历史记录,用于上下文关联。
-
-9)FutureTask 同步调用获取 AI 结果,并设置超时时间(超时抛出异常)
-
-10)获取 AI 模型推荐信息后进行持久化,并且减少接口调用次数(判断是否成功)
-
-11)返回处理好的 AI 推荐信息给前端,并设置响应状态码为 200 即可。
-
-### 智能分析功能
-
-1)用户输入分析目标、图标名称、选择图标类型、上传 Excel 文件,点击提交,发送 Axios 请求至后端。
-
-2)校验文件是否为空、名称是否过长、文件大小检验、文件后缀校验
-
-3)获取管理员 ID,从接口信息表查询管理员 ID 拥有的接口,接口判空。
-
-4)判断 AI 接口调用次数是否足够
-
-5)GuavaRateLimiter 进行单体限流,判断请求次数是否超出正常业务频次。
-
-6)构造 AI 模型的提示词和角色
-
-7)构造用户输入,拼接用户输入信息,并用工具类将 Excel 转为 CSV 字符串数据。
-
-8)利用讯飞星火 AI 模型,传入调用者 ID 和输入参数,利用 FutureTask 同步获取,并设置超时时间(超时抛出异常)
-
-9)对 AI 生成结果进行判断,格式错误就返回前端错误信息,并提示重新调用(后续考虑 RabbitMQ 进行重试和补偿机制)
-
-10)将 AI 生成结果持久化到数据库,并更新接口调用次数(判断是否成功),动态给前端返回图标和数据结论。
-
-## ☀️学完这个项目你能得到什么
-
-1)简单地调用 AI 模型(讯飞星火 | 阿里百炼)获取自定义文本内容。
-
-2)简单的 JWT 权限校验 ,利用后端拦截器进行登录校验。
-
-3)上传 Excel 文件,Excel 文件转换为 CSV 数据,AIGC 在线生成可视化图表。
-
-4)Jousp 批量爬取图书列表,可结合 SpringSchedule 定时任务执行。
-
-5)简单的增删改查系统,前后端是如何联调协作的。
-
-6)前端路由懒加载、CDN 静态资源缓存优化、图片懒加载是如何实现的
-
-7)利用 Lodash 进行节流控制,尽量降低无效的恶意刷留言情况。
-
-8)利用自定义线程池和 FutureTask 进行超时请求处理。
-
-9)利用Google 的 GuavaRateLimiter 进行单体限流控制。
-
-10)定时任务结合 Redis 做一个缓存预热,加快查询效率,提高用户体验。
-
-## ☀️项目简介
-
-+ 主要使用Vue2和SpringBoot2实现
-+ 项目权限控制分别为:用户借阅,图书管理员,系统管理员
-+ 开发工具:IDEA2022.1.3(真不推荐用eclipse开发,IDEA项目可以导出为eclipse项目,二者不影响,但需要自己学教程)
-+ [IDEA->Eclipse](https://blog.csdn.net/HD202202/article/details/128076400)
-+ [Eclipse->IDEA](https://blog.csdn.net/q20010619/article/details/125096051)
-
-+ 学校老师硬性要求软件的话,还是按要求来。可以先问一下是否可以选择其他软件开发。
-+ 用户账号密码: 相思断红肠 123456
-+ 图书管理员账号密码: admin 123456
-+ 系统管理员账号密码: root 123456
-+ [前端样式参考](https://gitee.com/mingyuefusu/tushuguanlixitong) 感谢原作者**明月复苏**
-
-+ 遇到交互功能错误,或者页面无法打开,请用开发者工具F12查看请求和响应状态码情况,当然可能小白不懂,那也没关系,可以加我**QQ:909088445**。白天上课,晚上有空才能回答,感谢体谅!⭐⭐⭐
-
-## ☀️项目详细介绍(亮点)
-
-+ 本项目采用前后端分离的模式,前端构建页面,后端作数据接口,前端调用后端数据接口得到数据,重新渲染页面。
-+ 后端已开启 CORS 跨域支持
-+ API 认证使用 Token 认证
-+ 前端在 Authorization 字段提供 Token 令牌
-+ 使用 HTTP Status Code 表示状态
-+ 数据返回格式使用 JSON
-+ 后端采用权限拦截器进行权限校验,并检查登录情况
-+ 添加全局异常处理机制,捕获异常,增强系统健壮性
-+ 前端用 Echarts 可视化库实现了图书借阅的分析图标(折线图、饼图),并通过 Loading 配置提高加载体验。
-+ 留言组件采用弹幕形式,贴合用户的喜好。
-+ 引入 knife4j 依赖,使用 Swagger + Knife4j 自动生成 OpenAPI 规范的接口文档,前端可以在此基础上使用插件自动生成接口请求代码,降低前后端协作成本
-+ 使用 ElementUI 组件库进行前端界面搭建,快速实现页面生成,并实现了前后端统一权限管理,多环境切换等能力。
-+ 基于 MyBatis Plus 框架的 QueryWrapper 实现对 MySQL 数据库的灵活查询,并配合 MyBatisX 插件自动生成后端 CRUD 基础代码,减少重复工作。
-+ 前端路由懒加载、CDN 静态资源缓存优化、图片懒加载效果。
-
-### ⭐用户模块功能介绍
-
-
-
-+ 图书查询功能:分页构造器缓解数据过大压力,后端可设置请求数防止爬虫请求数过大,服务器负载过大。模糊查询进行字段搜索。表格均可导出PDF和EXCEL。
-+ 读者规则功能:查询现有的借阅规则,借阅规则包括:借阅编号,可借阅图书数量,可借阅天数,可借阅图书馆,过期扣费/天。
-+ 查看公告: 可以查询图书管理员发布的公告列表,文字滑动效果。
-
-+ 个人信息: 可以查看个人的借阅证编号,借阅证姓名,规则编号,状态,可以修改个人账户的密码。
-
-+ 借阅信息: 可以查看自身借阅过的图书记录和归还情况。
-+ 违章信息: 可以查询自身归还的图书是否有违章信息。
-+ 读者留言: 实现留言功能并以弹幕形式显示。
-
-### ⭐图书管理员模块功能介绍
-
-
-
-+ 借阅图书: 图书管理员输入借阅证号(用户)和要借的图书编号和当前的时间,点击借阅。
-+ 归还图书: 输入图书编号查看图书是否逾期,并且可以设置违规信息,然后选择是否归还图书
-+ 借书报表: 用于查询已经借阅并归还的书籍列表,同样使用分页构造器和模糊查询字段,显示借阅证编号,图书编号,借阅日期,截止日期,归还日期,违章信息,处理人。
-+ 还书报表: 用于查询已经借阅但是还未归还的书籍列表,显示借阅证编号,图书编号,借阅日期,截止日期。
-
-+ 发布公告: 可以查询当前发布的公告列表,并进行删除,修改,增加功能,分页构造器用于缓解数据量大的情况。
-
-### ⭐系统管理员模块功能介绍
-
-
-
-+ 书籍管理: 可以查询当前的所有图书,显示图书编号,图书昵称,作者,图书馆,分类,位置,状态,描述。可以进行添加,修改,删除图书。利用分页构造器实现批量查询。利用模糊查询实现图书搜索功能。利用插件实现PDF和EXCEL导出。
-+ 书籍类型: 显示查询当前的所有图书类型,可以进行添加,修改,删除图书类型,利用分页构造器实现批量查询,缓解数据压力。
-+ 借阅证管理: 可以查询当前的所有借阅证列表,也就是用户数量,可以进行添加,修改,删除操作。同样实现分页。
-+ 借阅信息查询: 可以查询当前已经完成借阅和归还的记录,显示借阅证号,书籍编号,借阅日期,截止日期,归还日期,违章信息,处理人。分页功能,PDF和EXCEL导出。
-+ 借阅规则管理: 可以查询当前所有的借阅规则,显示限制借阅天数,限制本数,限制图书馆,逾期费用,可以进行添加、删除、修改操作。
-+ 图书管理员管理: 显示当前的图书管理员列表,显示账号,姓名,邮箱,可以进行添加、删除、修改操作。
-+ 系统管理: 可以查询一个月内的借阅量,以一周为时间间隔,计算借阅量,用Echarts实现折线图的展示。
-
-## ☀️数据库表设计
-
-### t_users表
-
-| 列名 | 数据类型以及长度 | 备注 |
-| ----------- | ---------------- | ------------------------------------------------- |
-| user_id | int(11) | 主键 非空 自增 用户表的唯一标识 |
-| username | varchar(32) | 用户名 非空 |
-| password | varchar(32) | 密码(MD5加密) 非空 |
-| card_name | varchar(10) | 真实姓名 非空 |
-| card_number | Bigint(11) | 借阅证编号 固定 11位随机生成 非空(后文都改BigInt) |
-| rule_number | int(11) | 规则编号 可以自定义 也就是权限功能 |
-| status | int(1) | 1表示可用 0表示禁用 |
-| create_time | datetime | 创建时间 Java注解 JsonFormatter |
-| update_time | datetime | 更新时间 Java注解 JsonFormatter |
-
-### t_admins表
-
-| 列名 | 数据类型以及长度 | 备注 |
-| ----------- | ---------------- | --------------------------------- |
-| admin_id | int(11) | 主键 非空 自增 管理员表的唯一标识 |
-| username | varchar(32) | 用户名 非空 |
-| password | varchar(32) | 密码(MD5加密) 非空 |
-| admin_name | varchar(10) | 管理员真实姓名 非空 |
-| status | int(1) | 1表示可用 0表示禁用 |
-| create_time | datetime | 创建时间 Java注解 JsonFormatter |
-| update_time | datetime | 更新时间 Java注解 JsonFormatter |
-
-### t_book_admins表
-
-| 列名 | 数据类型以及长度 | 备注 |
-| --------------- | ---------------- | ------------------------------- |
-| book_admin_id | int(11) | 主键 非空 自增 管理表的唯一标识 |
-| username | varchar(32) | 用户名 非空 |
-| password | varchar(32) | 密码(MD5加密)非空 |
-| book_admin_name | varchar(10) | 图书管理员真实姓名 非空 |
-| status | int(1) | 1表示可用 0表示禁用 |
-| email | varchar(255) | 电子邮箱 |
-| create_time | datetime | 创建时间 Java注解 JsonFormatter |
-| update_time | datetime | 更新时间 Java注解 JsonFormatter |
-
-### t_books表
-
-| 列名 | 数据类型以及长度 | 备注 |
-| ---------------- | ---------------- | ------------------------------- |
-| book_id | int(11) | 主键 自增 非空 图书表的唯一标识 |
-| book_number | int(11) | 图书编号 非空 图书的唯一标识 |
-| book_name | varchar(32) | 图书名称 非空 |
-| book_author | varchar(32) | 图书作者 非空 |
-| book_library | varchar(32) | 图书所在图书馆的名称 非空 |
-| book_type | varchar(32) | 图书类别 非空 |
-| book_location | varchar(32) | 图书位置 非空 |
-| book_status | varchar(32) | 图书状态(未借出/已借出) |
-| book_description | varchar(100) | 图书描述 |
-| create_time | datetime | 创建时间 Java注解 JsonFormatter |
-| update_time | datetime | 更新时间 Java注解 JsonFormatter |
-
-### t_books_borrow表
-
-| 列名 | 数据类型以及长度 | 备注 |
-| ----------- | ---------------- | ------------------------------------------------------------ |
-| borrow_id | int(11) | 主键 自增 非空 借阅表的唯一标识 |
-| card_number | int(11) | 借阅证编号 固定 11位随机生成 非空 用户与图书关联的的唯一标识 |
-| book_number | int(11) | 图书编号 非空 图书的唯一标识 |
-| borrow_date | datetime | 借阅日期 Java注解 JsonFormatter |
-| close_date | datetime | 截止日期 Java注解 JsonFormatter |
-| return_date | datetime | 归还日期 Java注解 JsonFormatter |
-| create_time | datetime | 创建时间 Java注解 JsonFormatter |
-| update_time | datetime | 更新时间 Java注解 JsonFormatter |
-
-### t_notice表
-
-| 列名 | 数据类型以及长度 | 备注 |
-| --------------- | ---------------- | ----------------------------------- |
-| notice_id | int(11) | 主键 非空 自增 公告表记录的唯一标识 |
-| notice_title | varchar(32) | 公告的题目 非空 |
-| notice_content | varchar(255) | 公告的内容 非空 |
-| notice_admin_id | int(11) | 发布公告的管理员的id |
-| create_time | datetime | 创建时间 Java注解 JsonFormatter |
-| update_time | datetime | 更新时间 Java注解 JsonFormatter |
-
-### t_violation表
-
-| 列名 | 数据类型以及长度 | 备注 |
-| ------------------ | ---------------- | ----------------------------------- |
-| violation_id | int(11) | 主键 非空 自增 违章表记录的唯一标识 |
-| card_number | int(11) | 借阅证编号 固定 11位随机生成 非空 |
-| book_number | int(11) | 图书编号 非空 图书的唯一标识 |
-| borrow_date | datetime | 借阅日期 Java注解 JsonFormatter |
-| close_date | datetime | 截止日期 Java注解 JsonFormatter |
-| return_date | datetime | 归还日期 Java注解 JsonFormatter |
-| violation_message | varchar(100) | 违章信息 非空 |
-| violation_admin_id | int(11) | 违章信息管理员的id |
-| create_time | datetime | 创建时间 Java注解 JsonFormatter |
-| update_time | datetime | 更新时间 Java注解 JsonFormatter |
-
-### t_comment表
-
-| 列名 | 数据类型以及长度 | 备注 |
-| --------------------- | ---------------- | ----------------------------------- |
-| comment_id | int(11) | 主键 非空 自增 留言表记录的唯一标识 |
-| comment_avatar | varchar(255) | 留言的头像 |
-| comment_barrage_style | varchar(32) | 弹幕的高度 |
-| comment_message | varchar(255) | 留言的内容 |
-| comment_time | int(11) | 留言的时间(控制速度) |
-| create_time | datetime | 创建时间 Java注解 JsonFormatter |
-| update_time | datetime | 更新时间 Java注解 JsonFormatter |
-
-### t_book_rule表
-
-| 列名 | 数据类型以及长度 | 备注 |
-| ------------------ | ---------------- | ------------------------------------- |
-| rule_id | int(11) | 主键 非空 自增 借阅规则记录的唯一标识 |
-| book_rule_id | int(11) | 借阅规则编号 非空 |
-| book_days | int(11) | 借阅天数 非空 |
-| book_limit_number | int(11) | 限制借阅的本数 非空 |
-| book_limit_library | varchar(255) | 限制的图书馆 非空 |
-| book_overdue_fee | double | 图书借阅逾期后每天费用 非空 |
-| create_time | datetime | 创建时间 Java注解 JsonFormatter |
-| update_time | datetime | 更新时间 Java注解 JsonFormatter |
-
-### t_book_type表
-
-| 列名 | 数据类型以及长度 | 备注 |
-| ------------ | ---------------- | ------------------------------------- |
-| type_id | int(11) | 主键 非空 自增 图书类别记录的唯一标识 |
-| type_name | varchar(32) | 借阅类别的昵称 非空 |
-| type_content | varchar(255) | 借阅类别的描述 非空 |
-| create_time | datetime | 创建时间 Java注解 JsonFormatter |
-| update_time | datetime | 更新时间 Java注解 JsonFormatter |
-
-## 🐼功能演示图
-
-### 用户模块功能图
-
-**首页轮播图演示**
-
-
-
-**图书查询演示**
-
-
-
-**读者规则演示**
-
-
-
-**查看公告演示**
-
-
-
-**个人信息演示**
-
-
-
-**借阅信息演示**
-
-
-
-**违章信息演示**
-
-
-
-**读者留言演示**
-
-
-
-**智能推荐演示**
-
-
-
-### 图书管理员功能图
-
-**借阅图书演示**
-
-
-
-**归还图书演示**
-
-
-
-**借书报表演示**
-
-
-
-**还书报表演示**
-
-
-
-**发布公告演示**
-
-
-
-### 系统管理员功能图
-
-+ 由于篇幅受限,系统功能展示主要功能。
-
-**系统管理演示**
-
-
-
-
-
-**智能分析演示**
-
-
-
-## 🐼部署项目
-
-
-
-+ 可以下载ZIP压缩包或者使用克隆(Git clone)
-+ 复制http或者ssh的链接(github建议ssh,gittee都可以)
-+ 在D盘新建一个文件夹,点击进入该文件夹,右键Git Bash Here
-
-
-
-+ 还没有下载Git或者不会Git的建议先看基础教程(30分钟左右)
-
-+ 输入git init 初始化git项目 然后出现一个.git文件夹
-+ 输入git remote add origin xxxxxx(xxx为刚刚复制的http或者ssh链接)
-
-+ 输入git pull origin master 从远程代码托管仓库拉取代码
-+ 成功拉取项目(前端后端都是如此)
-+ 前端项目注意依赖下载使用npm install 或者 yarn install (Vscode或者Webstorm)
-+ 后端项目注意maven依赖下载(IDEA(推荐)或者Ecplise)
-+ 前端npm 镜像源建议淘宝镜像源,后端maven镜像源推荐阿里云镜像源(非必选,但更换后下载快速)
-
-## 🐼部署项目问题
-
-⭐
-
-+ 乱码问题 项目采用的UFT-8
-+ 一般出现乱码就是UTF-8和GBK二者相反
-+ 请百度IDEA乱码和Eclipse乱码问题(描述清楚即可)
-
-⭐
-
-+ 点击交互按钮,没有发生反应。
-+ 很明显,请求失败,浏览器打开开发者工具,Edge浏览器直接ctrl+shift+i,其他浏览器按F12
-+ 查看红色的请求和响应状态码问题
-
-⭐
-
-+ 先阅读文档再进行问题的查询或者提问
-+ 提问有技巧,模糊的发言,让高级架构师找BUG也无从下手
-
-⭐
-
-+ **QQ:909088445**
-+ 一般晚上在线,建议先自己寻找问题!!!
-+ 开源免费, 定制化和调试项目付费。
-
-## 🐼需求分析和设计
-
-需求分析和设计文档,有(**付费**)需求的可以加 QQ:909088445,适合走毕设和课设的小伙伴,图省事的可以找我。
-
-
-
-## 🐼项目API接口文档
-
-+ 接口文档篇幅过大
-+ 本来想完全采用RESTFUL风格,做到一半忘记了
-+ 看清楚文档的基准地址
-+ 要API后端接口文档详细内容和数据库结构(**由于服务器、域名、 AI 模型的成本问题,现数据库文件已收费**)+内容一起的,将前后端**star**⭐的截图加我QQ:**909088445**发我即可领取~感谢支持
-
-#### **数据库领取截图示例(Gitee&GitHub):**
-
-
-
-
-
-
-
-
-
-## 🐼(重点)远程部署和项目讲解服务
-
-远程部署服务需自己先下载向日葵远程控制软件,然后加 WX 或者 QQ 即可(**付费服务**),远程部署用于给完全不懂的小白,项目讲解服务用于**课设、实训、毕设语音答辩服务**,想减省时间,提高通过率,直接加我即可,可以**定制背景图片和整体的样式功能**,**降重服务**也可私我!新增定制协同过滤算法和数据可视化功能!有需求的小伙伴,请先编写一份具体的需求文档!
-
-
-## 🐷其他
-
-+ 个人博客地址: https://luoye6.github.io/
-+ 个人博客采用Hexo+Github托管
-+ 采用butterfly主题可以实现定制化
-+ 推荐有空闲时间的,可以花1-2天搭建个人博客用于记录笔记。
-
-## ☕请我喝咖啡
-
-如果本项目对您有所帮助,不妨请作者我喝杯咖啡 :)
-
-

-
-## **版本迭代**
-
-### 2023-3-19
-
-1.引入knife4j依赖,使用 Swagger + Knife4j 自动生成 OpenAPI 规范的接口文档,前端可以在此基础上使用插件自动生成接口请求代码,降低前后端协作成本。
-
-2.引入jsoup依赖可以自定义添加爬虫功能,可以批量添加图书并且是比较真实的数据。
-
-3.添加事务管理器,可以进行用@Transactional指定异常类型回滚和事务传播行为。
-
-### 2023-4-13
-
-1.手动在增加和删除逻辑较为复杂的数据库操作上,添加了@Transactional注解,遇到运行时异常直接回滚数据库,防止借书和还书出现逻辑错误。
-
-2.修复11位图书编号无法借书的Bug,其原因是因为11位超出了Integer的2147483647(10位)。解决方法:数据库改为BigInt,Java改为Long。
-
-3.**注意**:不要随便删除用户和公告!!!会导致其他人体验的时候出现逻辑错误!!!请明白了项目逻辑再去做删除操作!!!感谢配合!!!
-
-4.下一期准备优化图表的展示,逾期图书后告警通知之类的功能,感谢大家的支持,我会继续维护和优化功能,有Bug可以加我QQ或者提出issue,勿要恶意利用bug,再次鸣谢。
-
-5.劳动节准备录一期部署项目的视频会发到b站,到时候会将部署讲清楚,方便大家课设或者毕设的完成,此项目有数据库表设计、API接口文档、内容功能介绍、亮点介绍,唯一缺少的可能是数据流图、ER图之类的,star的人多了,我会添加上去。
-
-### 2023-5-1
-
-1.添加“系统管理员”权限的系统管理功能,**添加借书类型分析统计图(饼图)**采用Echarts。
-
-2.优化请求在没有收到数据时的显示卡顿的情况,添加“加载中”状态,**使用v-loading**(ElementUI组件库),**优化用户人机交互体验**,在服务器调用接口缓慢的情况下,给予**良好的交互**。
-
-3.轮播图优化:**压缩图片体积**,另外使用Swiper的**懒加载**,实现图片加载中状态,然后图片完全加载完成后才显示图片,**优化用户体验过程**。
-
-4.后端**新增自定义错误码枚举类**,可以自定义状态码进行返回,保留原有枚举类。
-
-5.前端优化部分表格内容展示,当纵向内容过长,**设置了表格最大高度**,超出就会显示滑动窗口。优化表格列宽度,**提高表格美观度**。
-
-6.**添加**书籍管理组件的**批量删除图书**功能,优化管理员体验,不用单个删除图书,**提高效率**。
-
-7.Jmeter进行压力测试,服务器接口在**100个用户并发**发送请求的情况下,**QPS达到50**以上。
-
-### 2023-5-20
-
-**后端更新情况**
-
-1.~~防止前端抓包被获取明文密码,前端输入密码,进行md5加密(混合盐值,防止碰撞),后端直接与数据库加密后的密码比较,相等代表登录成功。提高系统**安全性**!~~。
-
-2.整改Controller层,**将业务代码全部放入Service层**,由Controller调用Service服务,并修改了@Transactional注解位置到业务层,减少耦合度,让Controller减少臃肿。做到对扩展开放,对修改关闭。后续考虑运用**设计模式**进行优化代码和**多线程**知识提高在**高并发**下接口响应的速度。
-
-3.对照阿里巴巴手册进行代码修改,将警告进行减少,代码更加**优雅、规范**。
-
-4.**修复BUG**: 借阅时间为空,造成服务器被击穿。归还日期为空,仍然显示借书成功。(解决方法:时间参数进行校验,判断是否为空)
-
-5.**工具类增加情况**:SQLUtils(防止SQL注入),NetUtils(网络工具类)
-
-**前端更新情况**
-
-1.将路由加载方式,改为懒加载,利用懒加载可以有效分担首页加载压力,**减少首页加载用时**。
-
-2.添加404页面,当用户访问请求地址不存在的页面,直接跳转到404页面,**提高用户体验度**。
-
-3.添加按钮的加载中状态,**优化人机交互**,提升用户体验度。修改按钮:登录按钮,其他按钮如果有需要可以自定义去修改,增加:loading="loading"即可。
-
-**Bug修复情况**
-
-1.11位图书编号可以借,但却**无法进行逾期检查**,发现方法参数还是Integer,上次把借书和还书的改成Long了,逾期查看还没改成Long,因此出现问题,现在已经修复。
-
-### 2023-6-10
-
-**前端更新情况**
-
-1.在某些页面添加全屏功能按钮,**方便用户放大查看表格数据**。
-
-2.增加了GitHub和Gitee的地址图标,**方便进行项目拉取和克隆**。
-
-3.读者留言组件,留言功能进行强化,防止无意义的数字、字母、空格出现在数据,后续考虑
-
-4.读者留言组件,**利用lodash进行节流**,5秒内只可发送一次网络请求,防止恶意刷无效留言。
-
-**后端更新情况**
-
-1.后端添加利用EasyExcel进行图书的**批量导入功能**,实现与实际生活中利用Excel存储一些图书数据的交互功能,**提高导入效率**,和爬虫功能效果相同,都可以实现大数据量情况下的导入,推荐利用EasyExcel进行批量导入,时间会比爬虫会更快。
-
-**Bug修复情况**
-
-1.修改用户页面的修改密码功能,因为上次更新已经加了盐值,但是后端代码逻辑没有进行更改,本次修复"在修改密码后无法登录的情况",原因是因为后端没有加盐值,已修复。
-
-2.修复系统管理员修改借阅证的密码然后就登录不上了,原因跟第一条Bug是一样的,因为后端的盐值没有进行添加,已修复。
-
-3.修复系统管理员在书籍管理功能时候,直接点击修改书籍,发现书籍的分类是错误的,因为前端只在添加书籍的对话框发了获取分类的请求,修改对话框的时候忘记添加了获取分类的请求,已修复。
-
-### 2023-9
-
-**前端更新情况**
-
-1.增加**智能推荐页面**,能够与AI进行交流,**用户输入自己喜欢xxx类的书籍,AI能够在现有数据库中进行分析**,然后给用户作出推荐,调用的是国内AI模型,底层是OpenAI。
-
-2.增加**智能分析页面**,输入分析目标和图标类型和Excel文件,AI生成分析结论和可视化图标,大大提高效率,**减少人力分析成本**。
-
-3.增加系统管理员可以利用在前端**利用Excel文件批量上传图书**的功能(测试中),仅供参考。
-
-**后端更新情况**
-
-1.增加智能分析的接口和获取最近5条聊天记录的接口,利用**线程池**和**Future**进行**超时请求处理**,如果接口调用超过40秒直接返回错误信息。
-
-2.利用Google的Guava中的RateLimiter进行限流控制,**每秒钟只允许一个请求通过**,防止刷量行为。
-
-### 2023-11
-
-**后端更新情况**
-
-1.将用户聊天的AI模型切换为阿里的通义千问Plus模型,并且**支持多轮会话的历史记录**,**不再使用讯飞星火的AI模型**,但仍保留工具类。主要是为了可以更快的得到响应,而且阿里的**文档更加详细**,可以**定制话术**,在用户输入无关图书推荐的内容时候,直接**拒绝回答**。
-
-2.添加一个 IncSyncDeleteAIMessage **定时任务**,每天将会**删除由于系统错误等原因AI回复失败**,导致内容为空的记录,并且会为这些用户**恢复接口的次数**,**后续可能会选择 RabbitMQ**,将失败的消息放入消息队列,然后**确保失败的消息被消费**。
-
-3.登录加密由前端改到后端,由于前端可以被撞库,因此加密依然放到后端。**方案:**前端传输,用 HTTPS 进行密文加密,后端采用盐值+算法进行加密,数据库存密文。
-
-4.将留言页面存放在 Redis 中,**减少数据库的 IO 查询**,QPS 是原来的数百倍!
-
-**前端更新情况**
-
-1.将三个登录页面的背景图和头像改为存储在 assets 文件夹的 images 中,**主要是为使用项目的人考虑**,很多人不懂图床技术,我这边暂时将登录页面改成静态图。
-
-2.权限切换的提示优化,**在图标上面现在有登录权限切换的文字样式**,提示用户有多个登录页面可以切换。
-
-3.登录加密由前端改到后端,由于前端可以被撞库,因此加密依然放到后端。**方案**:前端传输,用 HTTPS 进行密文加密,后端采用盐值+算法进行加密,数据库存密文。
-
-### 2024-3
-
-**后端更新情况**
-
-1)为 Knife4J 添加 @ ApiOperation 注解,标注每个接口的作用,**方便开发者阅读和测试接口**。
\ No newline at end of file
diff --git a/README_en.md b/README_en.md
deleted file mode 100644
index 528b30a..0000000
--- a/README_en.md
+++ /dev/null
@@ -1,881 +0,0 @@
-# OpenSource DocumentationForSmart Libraries
-
->作者:[Programmer's Little White Bar](https://luoye6.github.io/)
->
->[Gitee Homepage](https://gitee.com/falle22222n-leaves)
->
->[Github Homepage](https://github.com/luoye6)
-
-Language:**[English](README_en.md)**| **[中文](README.md).**
-
-## ☀️Must Read For Beginners
-
-+ This project has a complete API backend interface document (at the end of the text) (key points⭐)
-+ The project deployment video has been recorded
-+ If the project is helpful to you, Star ⭐ Once encouraged, I will continue to work hard.
-+ [Project online demonstration address](https://www.xiaobaitiao.top)
-+ [Project front-end address](https://gitee.com/falle22222n-leaves/vue_-book-manage-system)
-+ [Project backend address](https://gitee.com/falle22222n-leaves/vue_-book-manage-system_backend)
-+ [Project deployment video](https://www.bilibili.com/video/BV1Zh4y1z7QE/?spm_id_from=333.999.0.0)
-
-[](https://gitee.com/falle22222n-leaves/vue_-book-manage-system) [](https://gitee.com/falle22222n-leaves) [](https://github.com/luoye6)
-
-## ☀️Personal Introduction
-
-
-
-
-
-## ☀️Introduction
-
-**AI Intelligent Library** is a system that uses AI models and data analysis to accurately recommend books that users like, and provides AIGC's online generation of BI charts for borrowing volume analysis, which can serve as a data analyst. It mainly has three major users: users (borrowers), librarians, and system administrators.
-
-> Ps: If you want simplicity and novelty, then this project will be a good choice~
-
-
-
-
-
-## ☀️Function And Features
-
-### User functions
-
-1)Book query function: The pagination constructor alleviates the pressure of excessive data, and the backend can set the number of requests to prevent excessive crawler requests and server load. Fuzzy query for field search. The tables can be exported to both PDF and Excel.
-
-2)Reader rule function: Query existing borrowing rules, borrowing rules include: borrowing number, number of books that can be borrowed, number of days that can be borrowed, library that can be borrowed, overdue fee deduction/day.
-
-3)View announcements: You can check the list of announcements published by the librarian, with a text scrolling effect.
-
-4)Personal information: You can view an individual's borrowing card number, borrowing card name, rule number, status, and modify the password of your personal account.
-
-5)Borrowing information: You can view the records and return status of books you have borrowed.
-
-6)Violation information: You can check whether the returned books contain any violation information.
-
-7)Reader's message: Implement the message function and display it in the form of a bullet screen.
-
-8)**Intelligent recommendation** Users input their preferences, and AI recommends books to users based on the database book list and user preferences.
-
-### Library Administrator Function
-
-1)Borrowing Books: The librarian enters the borrowing card number (user), the book number to be borrowed, and the current time, and clicks to borrow.
-
-2)Returning books: Enter the book number to check if the book is overdue, and set violation information, then choose whether to return the book.
-
-3)Book Borrowing Report: Used to query the list of books that have been borrowed and returned. It also uses a pagination constructor and fuzzy query fields to display the borrowing card number, book number, borrowing date, deadline, return date, violation information, and handler.
-
-4)Book Return Report: Used to query the list of books that have been borrowed but not yet returned, displaying the borrowing card number, book number, borrowing date, and deadline.
-
-5)Announcement: You can query the current list of announcements and delete, modify, and add features. The pagination constructor is used to alleviate the situation of large data volume.
-
-### System Administrator Function
-
-1)Book management: It can query all current books, display book numbers, book nicknames, authors, libraries, classifications, locations, status, and descriptions. You can add, modify, and delete books. Implement batch queries using a paging constructor. Utilize fuzzy queries to achieve book search functionality **Utilize plugins to export PDF and Excel**.
-
-2)Book Types: Display and query all current book types, which can be added, modified, or deleted. Use a pagination constructor to achieve batch queries and alleviate data pressure.
-
-3)Borrowing Card Management: It is possible to query the current list of all borrowing cards, that is, the number of users, and perform operations such as adding, modifying, and deleting. Implement pagination as well.
-
-4)Borrowing information query: can query the current completed borrowing and returning records, display the borrowing card number, book number, borrowing date, deadline, return date, violation information, and handler. Paging function, PDF and Excel export.
-
-5)Borrowing Rule Management: You can query all current borrowing rules, display restricted borrowing days, restricted book count, restricted library, overdue fees, and perform add, delete, and modify operations.
-
-6)Librarian Management: Display the current list of librarians, including accounts, names, and email addresses, allowing for adding, deleting, and modifying operations.
-
-7)System management: It is possible to query the borrowing volume within a month, calculate the borrowing volume at a weekly interval, and use Echarts to display various charts.
-
-8)System analysis: You can upload the borrowing volume and date for a certain time period, and input the analysis target and the type of chart you want to generate. After waiting for a period of time, **AI will provide analysis conclusions and visual charts**.
-
-### Features (highlights)
-
-1)This project adopts a front-end and back-end separation mode, with the front-end building the page and the back-end serving as the data interface. The front-end calls the back-end data interface to obtain data and re render the page.
-
-2)The front-end provides a Token token in the Authorization field, API authentication uses Token authentication, HTTP Status Code represents status, and data return format uses JSON.
-
-3)The backend has enabled CORS cross domain support, using permission interceptors for permission verification and checking login status.
-
-4)Add a global exception handling mechanism to capture exceptions and enhance system robustness.
-
-5)The front-end uses the Echarts visualization library to implement analysis icons (line charts, pie charts) for book borrowing, and improves the loading experience through loading configuration.
-
-6)The message component adopts bullet screen format, which is in line with user preferences.
-
-7)Introduce the knife4j dependency and use Swagger+Knife4j to automatically generate interface documents for the OpenAPI specification. The front-end can use plugins to automatically generate interface request codes based on this, reducing the cost of front-end and back-end collaboration
-
-8)By using the ElementUI component library for front-end interface construction, we can quickly generate pages and achieve unified permission management and multi environment switching capabilities for both front-end and back-end.
-
-9)The QueryWrapper based on the MyBatis Plus framework enables flexible querying of MySQL databases and, in conjunction with the MyBatisX plugin, automatically generates backend CRUD basic code to reduce repetitive work.
-
-10)Front end routing lazy loading, CDN static resource cache optimization, and image lazy loading effect.
-
-## ☀️Operation Mode
-
-### 2 Minutes To Quickly Get Started Using The Project
-
-1)Find the SpringBoot startup class, click on Run
-
-
-
-2)Open Knife4J to register as a user, or you can directly contact me to obtain database simulation data (simple).
-
-
-
-
-
-3)After entering the form content in the front-end, click on login to successfully start using the function happily~
-
-
-
-
-
-## ☀️Deployment Method
-
-### Preconditions
-
-**Front end**
-
-Software: Vscore or Webstorm (recommended)
-
-Environment: Node version 16 or 18 (recommended) **Note: Do not choose versions above 18**
-
-**Backend**
-
-Software: Eclipse or IDEA (recommended)
-
-Environment: MySQL 5.7 or 8.0 (recommended) Redis (optional)
-
-### Front End Deployment
-
-1)Clicking on Clone/Download Project will use Git for version control. It is recommended to use Git Clone. If you do not know how to do so, you can choose to download a Zip compressed file and extract it to your computer's D drive. It is recommended to use Star directly, and then directly obtain the database simulation file and API interface documentation from me.
-
-
-
-2)Open the front-end page using Vscode or Webstorm and configure the Configuration. Configure the Node environment and package management tools. The package management tool I have chosen is Npm, while other package management tools such as Yarn, Cnpm, and Pnpm are all available**Note: Please change the image address of Npm to the new image address on Taobao, otherwise Npm Install will keep getting stuck in the progress bar**.
-
-3)Simply click on the run of dev or open the console and enter npm run serve to successfully launch the front-end project.
-
-```shell
-npm config set registry https://registry.npmmirror.com/
-```
-
-
-
-
-
-
-
-4)Customize and switch image links to your own image bed, such as Qiniuyun, GitHub, etc. You can also search for online images and copy Baidu Wenku image links (try multiple times, some images have anti-theft links) **After changing the background, you can see the permission switch icon in the bottom right corner**.
-
-
-
-
-
-
-
-### Backend Deployment
-
-1)Clicking on Clone/Download Project will use Git for version control. It is recommended to use Git Clone. If you do not know how to do so, you can choose to download a Zip compressed file and extract it to your computer's D drive. It is recommended to use Star directly, and then directly obtain the database simulation file and API interface documentation from me.
-
-
-
-2)After receiving the database simulation file, use software such as Navicat or SQLYog to import the database file. Remember to first create a database named bms_boot, and then right-click to run the SQL file. After running successfully without any errors, reopen the database and check for data. If there is data, it indicates successful import.
-
-
-
-3) Open the backend project using IDEA, locate the application dev.yml file, modify the MySQL configuration, and ensure that the username and password are correct. Note: Passwords cannot start with the number 0.
-
-
-
-4)mporting Maven dependencies, pay attention to checking if your Maven version is correct. It is recommended to choose the same version as mine, version 3.8 or above. I found that importing dependencies is slow because there is no configuration for domestic images, and the default connection is to foreign servers. Therefore, Alibaba Cloud image configuration can be found in this blog post.[CSDN Maven 配置教程](https://blog.csdn.net/lianghecai52171314/article/details/102625184?ops_request_misc=&request_id=&biz_id=102&utm_term=Maven)
-
-
-
-5)Find the SpringBoot startup class, and I suggest using Debug mode to start the project for better troubleshooting.
-
-
-
-6)If you encounter an error, it is most likely a JDK version issue. My project is using JDK 8, so it is recommended to choose the same version as me.
-
-
-
-
-
-7)The successful launch of the project results are shown below
-
-
-
-### Front And Rear End Joint Debugging
-
-1)If you need to modify the port and prefix (such as/API), you need to modify both the front-end and back-end.
-
-
-
-
-
-## ☀️Technical Selection
-
-### Front End
-
-| **技术** | **作用** | **版本** |
-| ---------------------------- | ------------------------------------------------------------ | ---------------------------------------------------- |
-| Vue | 提供前端交互 | 2.6.14 |
-| Vue-Router | 路由式编程导航 | 3.5.1 |
-| Element-UI | 模块组件库,绘制界面 | 2.4.5 |
-| Axios | 发送ajax请求给后端请求数据 | 1.2.1 |
-| core-js | 兼容性更强,浏览器适配 | 3.8.3 |
-| swiper | 轮播图插件(快速实现) | 3.4.2 |
-| vue-baberrage | vue弹幕插件(实现留言功能) | 3.2.4 |
-| vue-json-excel | 表格导出Excel | 0.3.0 |
-| html2canvas+jspdf | 表格导出PDF | 1.4.1 2.5.1 |
-| node-polyfill-webpack-plugin | webpack5中移除了nodejs核心模块的polyfill自动引入 | 2.0.1 |
-| default-passive-events | **Chrome** 增加了新的事件捕获机制 **Passive Event Listeners**(被动事件侦听器) | 让页面滑动更加流畅,主要用于提升移动端滑动行为的性能 |
-| nprogress | 发送请求显示进度条(人机交互友好) | 0.2.0 |
-| echarts | 数据转图标的好工具(功能强大) | 5.4.1 |
-| less lessloader | 方便样式开发 | 4.1.3 11.1.0 |
-
-### 后端
-
-| **技术及版本** | **作用** | **版本** |
-| ------------------------------------ | ------------------------------------------------------------ | --------------------------------- |
-| SpringBoot | 应用开发框架 | 2.7.8 |
-| JDK | Java 开发包 | 1.8 |
-| MySQL | 提供后端数据库 | 8.0.23 |
-| MyBatisPlus | 提供连接数据库和快捷的增删改查 | 3.5.1 |
-| SpringBoot-Configuration-processor | 配置处理器 定义的类和配置文件绑定一般没有提示,因此可以添加配置处理器,产生相对应的提示. | |
-| SpringBoot-Starter-Web | 后端集成Tomcat MVC | 用于和前端连接 |
-| SpringBoot-starter-test | Junit4单元测试前端在调用接口前,后端先调用单元测试进行增删改查,注意Junit4和5的问题,注解@RunWith是否添加 | |
-| Lombok | 实体类方法的快速生成 简化代码 | |
-| mybatis-plus-generator | 代码生成器 | 3.5.1 |
-| MyBatisX | MyBatisPlus插件直接生成mapper,实体类,service | |
-| jjwt | token工具包 | 0.9.0 |
-| fastjson | 阿里巴巴的 JSON 工具类 | 1.2.83 |
-| hutool | hutool工具包(简化开发工具类) | [文档](https://hutool.cn/docs/#/) |
-| knife4j-openapi2-spring-boot-starter | Knife4j 在线接口文档测试工具 | 4.0.0 |
-| gson | 谷歌的 JSON 工具类 | 2.8.5 |
-| Java-WebSocket | 讯飞星火 AI 配置 | 1.3.8 |
-| okhttp | 讯飞星火 AI 配置 | 4.10.0 |
-| okio | 讯飞星火 AI 配置 | 2.10.0 |
-| jsoup | 简易爬虫工具 | 1.15.3 |
-| guava | 谷歌工具类 | 30.1-jre |
-| spring-boot-starter-data-redis | Redis 的 Starter | |
-| broadscope-bailian-sdk-java | 阿里云 AI 模型 | 1.1.7 |
-| spring-boot-starter-websocket | WebSocket 的 Starter | |
-
-## ☀️Architecture
-
-
-
-## ☀️Core Design
-
-### Intelligent Recommendation Function
-
-1)Users input their book preference information.
-
-2)The front-end sends Axios requests.
-
-3)The backend first checks whether the text is illegal (empty or too long).
-
-4)Check if the interface exists.
-
-5)Check if the number of AI interface calls is sufficient.
-
-6)GuavaRateLimiter performs individual flow limiting to determine if the number of requests exceeds the normal business frequency.
-
-7)Manually preset the AI model and query the list of books in the database for concatenation.
-
-8)Query the AI model and the user's latest five historical records for context association.
-
-9)FutureTask synchronously calls to obtain AI results and sets a timeout (timeout throws an exception)
-
-10)Persist after obtaining AI model recommendation information and reduce the number of interface calls (to determine if successful)
-
-12)Return the processed AI recommendation information to the front-end and set the response status code to 200.
-
-### Intelligent Analysis Function
-
-1)Users input analysis targets, icon names, select icon types, upload Excel files, click submit, and send Axios requests to the backend.
-
-2)Verify whether the file is empty, the name is too long, the file size is checked, and the file suffix is checked
-
-3)Obtain the administrator ID and query the interface owned by the administrator ID from the interface information table. The interface is found to be empty.
-
-4)Determine if the number of AI interface calls is sufficient
-
-5)GuavaRateLimiter performs individual flow limiting to determine if the number of requests exceeds the normal business frequency.
-
-6)Hint words and roles for constructing AI models
-
-7)Construct user input, concatenate user input information, and use tool classes to convert Excel into CSV string data.
-
-8)Using the iFlytek Starfire AI model, input the caller ID and input parameters, use FutureTask to synchronously obtain them, and set a timeout time (timeout throws an exception)
-
-10)Judging the AI generated results, if there is a formatting error, return the front-end error message and prompt for re calling (consider RabbitMQ for retry and compensation mechanisms in the future)
-
-11)Persist the AI generated results to the database, update the number of interface calls (to determine if successful), and dynamically return icons and data conclusions to the front-end.
-
-## ☀️What Will You Get After Completing This Project
-
-1)Simply call the AI model (iFlytek Starfire | Alibaba Bailian) to obtain custom text content.
-
-2)Simple JWT permission verification, using backend interceptors for login verification.
-
-3)Upload an Excel file, convert the Excel file to CSV data, and generate visual charts online by AIGC.
-
-4)Jousp can batch crawl book lists and execute them in conjunction with SpringSchedule scheduled tasks.
-
-5)How does the front-end and back-end of a simple system for adding, deleting, modifying, and querying work together.
-
-6)How are front-end routing lazy loading, CDN static resource caching optimization, and image lazy loading implemented
-
-7)Use Lodash for throttling control to minimize ineffective malicious message brushing.
-
-8)Use custom thread pools and FutureTasks for timeout request processing.
-
-9)Utilize Google's GuavaRateLimited for individual flow limiting control.
-
-10)Combining scheduled tasks with Redis for cache preheating to accelerate query efficiency and improve user experience.
-
-## ☀️Project Introduction
-
-+ Mainly implemented using Vue2 and SpringBoot2
-
-+ The project permission controls are: user borrowing, librarian, and system administrator
-
-+ Development tool: IDEA2022.1.3 (I really don't recommend using Eclipse for development. IDEA projects can be exported as Eclipse projects, and they don't affect each other, but you need to learn the tutorial yourself)
-
-+ [IDEA ->Eclipse]( https://blog.csdn.net/HD202202/article/details/128076400 )
-
-+ [Eclipse ->IDEA]( https://blog.csdn.net/q20010619/article/details/125096051 )
-
-+ If the school teachers insist on software, they should still follow the requirements. Can you first ask if it is possible to choose other software development options.
-
-+ User account password: Xiangsi Duan Hongchang 123456
-
-+ Librarian account password: admin 123456
-
-+ System administrator account password: root 123456
-
-+ [Front end style reference]( https://gitee.com/mingyuefusu/tushuguanlixitong )Thank you to the original author **Mingyue Resurrection**
-
-+ Encountered an interaction function error or the page cannot be opened. Please use the developer tool F12 to check the status code of the request and response. Of course, the novice may not understand, so it's okay. You can add me **QQ: 909088445**. Class during the day, I can only answer when I have time at night. Thank you for your understanding! ⭐⭐⭐
-
-## ☀️Project Detailed Introduction (HighLights)
-
-+ This project adopts a front-end and back-end separation mode, with the front-end building the page and the back-end serving as the data interface. The front-end calls the back-end data interface to obtain data and re render the page.
-
-+ The backend has enabled CORS cross domain support
-
-+ API authentication using Token authentication
-
-+ The front-end provides a Token token in the Authorization field
-
-+ Using HTTP Status Code to represent status
-
-+ Use JSON for data return format
-
-+ The backend uses permission interceptors for permission verification and checks login status
-
-+ Add a global exception handling mechanism to capture exceptions and enhance system robustness
-
-+ The front-end uses the Echarts visualization library to implement analysis icons (line charts, pie charts) for book borrowing, and improves the loading experience through loading configuration.
-
-+ The message component adopts bullet screen format, which is in line with user preferences.
-
-+ Introduce the knife4j dependency and use Swagger+Knife4j to automatically generate interface documents for the OpenAPI specification. The front-end can use plugins to automatically generate interface request codes based on this, reducing the cost of front-end and back-end collaboration
-
-+ By using the ElementUI component library for front-end interface construction, we can quickly generate pages and achieve unified permission management and multi environment switching capabilities for both front-end and back-end.
-
-+ The QueryWrapper based on the MyBatis Plus framework enables flexible querying of MySQL databases and, in conjunction with the MyBatisX plugin, automatically generates backend CRUD basic code to reduce repetitive work.
-
-+ Front end routing lazy loading, CDN static resource cache optimization, and image lazy loading effect.
-
-### ⭐Introduction To User Module Functions
-
-
-
-+ Book query function: The pagination constructor alleviates the pressure of excessive data, and the backend can set the number of requests to prevent excessive crawler requests and server load. Fuzzy query for field search. Tables can be exported to both PDF and Excel.
-
-+ Reader rule function: Query existing borrowing rules, borrowing rules include: borrowing number, number of books that can be borrowed, number of days that can be borrowed, library that can be borrowed, overdue fee deduction/day.
-
-+ View announcements: You can check the list of announcements published by the librarian, with text scrolling effect.
-
-+ Personal information: You can view an individual's borrowing card number, borrowing card name, rule number, status, and modify the password of your personal account.
-
-+ Borrowing information: You can view the records and return status of books you have borrowed.
-
-+ Violation information: You can check whether the returned books contain any violation information.
-
-+ Reader's message: Implement the message function and display it in bullet screen format.
-
-### ⭐Introduction To The Functions Of The Librarian Module
-
-
-
-+ Borrowing Books: The librarian enters the borrowing card number (user), the book number to be borrowed, and the current time, and clicks to borrow.
-
-+ Returning books: Enter the book number to check if the book is overdue, and set violation information, then choose whether to return the book
-
-+ Book Borrowing Report: Used to query the list of books that have been borrowed and returned. It also uses a pagination constructor and fuzzy query fields to display the borrowing card number, book number, borrowing date, deadline, return date, violation information, and handler.
-
-+ Book Return Report: Used to query the list of books that have been borrowed but not yet returned, displaying the borrowing card number, book number, borrowing date, and deadline.
-
-+ Announcement: You can query the current list of announcements and delete, modify, and add features. The pagination constructor is used to alleviate the situation of large data volume.
-
-### ⭐Introduction To The Functions Of The System Administrator Module
-
-
-
-+ Book management: It can query all current books, display book numbers, book nicknames, authors, libraries, classifications, locations, status, and descriptions. You can add, modify, and delete books. Implement batch queries using a paging constructor. Utilize fuzzy queries to achieve book search functionality. Use plugins to export PDF and Excel.
-
-+ Book Types: Display and query all current book types, which can be added, modified, or deleted. Use a pagination constructor to achieve batch queries and alleviate data pressure.
-
-+ Borrowing Card Management: It is possible to query the current list of all borrowing cards, that is, the number of users, and perform operations such as adding, modifying, and deleting. Implement pagination as well.
-
-+ Borrowing information query: can query the current completed borrowing and returning records, display the borrowing card number, book number, borrowing date, deadline, return date, violation information, and handler. Paging function, PDF and Excel export.
-
-+ Borrowing Rule Management: You can query all current borrowing rules, display restricted borrowing days, restricted book count, restricted library, overdue fees, and perform add, delete, and modify operations.
-
-+ Librarian Management: Display the current list of librarians, including accounts, names, and email addresses, allowing for adding, deleting, and modifying operations.
-
-+ System management: It is possible to query the borrowing volume within a month, calculate the borrowing volume at a weekly interval, and use Echarts to display a line chart.
-
-## ☀️Database Table Design
-
-### t_users表
-
-| 列名 | 数据类型以及长度 | 备注 |
-| ----------- | ---------------- | ------------------------------------------------- |
-| user_id | int(11) | 主键 非空 自增 用户表的唯一标识 |
-| username | varchar(32) | 用户名 非空 |
-| password | varchar(32) | 密码(MD5加密) 非空 |
-| card_name | varchar(10) | 真实姓名 非空 |
-| card_number | Bigint(11) | 借阅证编号 固定 11位随机生成 非空(后文都改BigInt) |
-| rule_number | int(11) | 规则编号 可以自定义 也就是权限功能 |
-| status | int(1) | 1表示可用 0表示禁用 |
-| create_time | datetime | 创建时间 Java注解 JsonFormatter |
-| update_time | datetime | 更新时间 Java注解 JsonFormatter |
-
-### t_admins表
-
-| 列名 | 数据类型以及长度 | 备注 |
-| ----------- | ---------------- | --------------------------------- |
-| admin_id | int(11) | 主键 非空 自增 管理员表的唯一标识 |
-| username | varchar(32) | 用户名 非空 |
-| password | varchar(32) | 密码(MD5加密) 非空 |
-| admin_name | varchar(10) | 管理员真实姓名 非空 |
-| status | int(1) | 1表示可用 0表示禁用 |
-| create_time | datetime | 创建时间 Java注解 JsonFormatter |
-| update_time | datetime | 更新时间 Java注解 JsonFormatter |
-
-### t_book_admins表
-
-| 列名 | 数据类型以及长度 | 备注 |
-| --------------- | ---------------- | ------------------------------- |
-| book_admin_id | int(11) | 主键 非空 自增 管理表的唯一标识 |
-| username | varchar(32) | 用户名 非空 |
-| password | varchar(32) | 密码(MD5加密)非空 |
-| book_admin_name | varchar(10) | 图书管理员真实姓名 非空 |
-| status | int(1) | 1表示可用 0表示禁用 |
-| email | varchar(255) | 电子邮箱 |
-| create_time | datetime | 创建时间 Java注解 JsonFormatter |
-| update_time | datetime | 更新时间 Java注解 JsonFormatter |
-
-### t_books表
-
-| 列名 | 数据类型以及长度 | 备注 |
-| ---------------- | ---------------- | ------------------------------- |
-| book_id | int(11) | 主键 自增 非空 图书表的唯一标识 |
-| book_number | int(11) | 图书编号 非空 图书的唯一标识 |
-| book_name | varchar(32) | 图书名称 非空 |
-| book_author | varchar(32) | 图书作者 非空 |
-| book_library | varchar(32) | 图书所在图书馆的名称 非空 |
-| book_type | varchar(32) | 图书类别 非空 |
-| book_location | varchar(32) | 图书位置 非空 |
-| book_status | varchar(32) | 图书状态(未借出/已借出) |
-| book_description | varchar(100) | 图书描述 |
-| create_time | datetime | 创建时间 Java注解 JsonFormatter |
-| update_time | datetime | 更新时间 Java注解 JsonFormatter |
-
-### t_books_borrow表
-
-| 列名 | 数据类型以及长度 | 备注 |
-| ----------- | ---------------- | ------------------------------------------------------------ |
-| borrow_id | int(11) | 主键 自增 非空 借阅表的唯一标识 |
-| card_number | int(11) | 借阅证编号 固定 11位随机生成 非空 用户与图书关联的的唯一标识 |
-| book_number | int(11) | 图书编号 非空 图书的唯一标识 |
-| borrow_date | datetime | 借阅日期 Java注解 JsonFormatter |
-| close_date | datetime | 截止日期 Java注解 JsonFormatter |
-| return_date | datetime | 归还日期 Java注解 JsonFormatter |
-| create_time | datetime | 创建时间 Java注解 JsonFormatter |
-| update_time | datetime | 更新时间 Java注解 JsonFormatter |
-
-### t_notice表
-
-| 列名 | 数据类型以及长度 | 备注 |
-| --------------- | ---------------- | ----------------------------------- |
-| notice_id | int(11) | 主键 非空 自增 公告表记录的唯一标识 |
-| notice_title | varchar(32) | 公告的题目 非空 |
-| notice_content | varchar(255) | 公告的内容 非空 |
-| notice_admin_id | int(11) | 发布公告的管理员的id |
-| create_time | datetime | 创建时间 Java注解 JsonFormatter |
-| update_time | datetime | 更新时间 Java注解 JsonFormatter |
-
-### t_violation表
-
-| 列名 | 数据类型以及长度 | 备注 |
-| ------------------ | ---------------- | ----------------------------------- |
-| violation_id | int(11) | 主键 非空 自增 违章表记录的唯一标识 |
-| card_number | int(11) | 借阅证编号 固定 11位随机生成 非空 |
-| book_number | int(11) | 图书编号 非空 图书的唯一标识 |
-| borrow_date | datetime | 借阅日期 Java注解 JsonFormatter |
-| close_date | datetime | 截止日期 Java注解 JsonFormatter |
-| return_date | datetime | 归还日期 Java注解 JsonFormatter |
-| violation_message | varchar(100) | 违章信息 非空 |
-| violation_admin_id | int(11) | 违章信息管理员的id |
-| create_time | datetime | 创建时间 Java注解 JsonFormatter |
-| update_time | datetime | 更新时间 Java注解 JsonFormatter |
-
-### t_comment表
-
-| 列名 | 数据类型以及长度 | 备注 |
-| --------------------- | ---------------- | ----------------------------------- |
-| comment_id | int(11) | 主键 非空 自增 留言表记录的唯一标识 |
-| comment_avatar | varchar(255) | 留言的头像 |
-| comment_barrage_style | varchar(32) | 弹幕的高度 |
-| comment_message | varchar(255) | 留言的内容 |
-| comment_time | int(11) | 留言的时间(控制速度) |
-| create_time | datetime | 创建时间 Java注解 JsonFormatter |
-| update_time | datetime | 更新时间 Java注解 JsonFormatter |
-
-### t_book_rule表
-
-| 列名 | 数据类型以及长度 | 备注 |
-| ------------------ | ---------------- | ------------------------------------- |
-| rule_id | int(11) | 主键 非空 自增 借阅规则记录的唯一标识 |
-| book_rule_id | int(11) | 借阅规则编号 非空 |
-| book_days | int(11) | 借阅天数 非空 |
-| book_limit_number | int(11) | 限制借阅的本数 非空 |
-| book_limit_library | varchar(255) | 限制的图书馆 非空 |
-| book_overdue_fee | double | 图书借阅逾期后每天费用 非空 |
-| create_time | datetime | 创建时间 Java注解 JsonFormatter |
-| update_time | datetime | 更新时间 Java注解 JsonFormatter |
-
-### t_book_type表
-
-| 列名 | 数据类型以及长度 | 备注 |
-| ------------ | ---------------- | ------------------------------------- |
-| type_id | int(11) | 主键 非空 自增 图书类别记录的唯一标识 |
-| type_name | varchar(32) | 借阅类别的昵称 非空 |
-| type_content | varchar(255) | 借阅类别的描述 非空 |
-| create_time | datetime | 创建时间 Java注解 JsonFormatter |
-| update_time | datetime | 更新时间 Java注解 JsonFormatter |
-
-## 🐼Functional Demonstration Diagram
-
-### User Module Function Diagram
-
-**Homepage carousel demonstration**
-
-
-
-**Book search demonstration**
-
-
-
-**Reader Rule Demonstration**
-
-
-
-**View announcement demonstration**
-
-
-
-**Personal information demonstration**
-
-
-
-**Presentation of Borrowing Information**
-
-
-
-**Violation information demonstration**
-
-
-
-**Reader's message demonstration**
-
-
-
-**Intelligent recommendation demonstration**
-
-
-
-### Library Administrator Function Diagram
-
-**Borrowing book demonstration**
-
-
-
-**Demo on returning books**
-
-
-
-**Presentation of borrowing report**
-
-
-
-**Presentation of return report**
-
-
-
-**Announcement demonstration**
-
-
-
-### System Administrator Function Diagram
-
-+ Due to space limitations, the main functions of the system are displayed.
-
-**System Management Demonstration**
-
-
-
-
-
-**Intelligent analysis demonstration**
-
-
-
-## 🐼Deployment Projects
-
-
-
-+ You can download ZIP compressed packages or use clones (Git clone)
-
-+ Copy HTTP or SSH links (Github suggests SSH, Gittee can do both)
-
-+ Create a new folder on drive D, click to enter the folder, right-click on Git Bash Here
-
-
-
-+ If you haven't downloaded Git yet or don't know Git, it is recommended to read the basic tutorial first (about 30 minutes)
-
-+ Enter git init to initialize the git project and a. git folder will appear
-
-+ Enter git remote add origin xxxxxx (xxx is the HTTP or SSH link just copied)
-
-+ Enter git pull origin master to pull code from a remote code hosting repository
-
-+ Successfully pulled the project (both front-end and back-end are like this)
-
-+ Front end projects should pay attention to relying on downloading and using npm install or yarn install (Vscode or Webstorm)
-
-+ Backend projects should pay attention to Maven dependency downloads (IDEA (recommended) or Ecplise)
-
-+ Suggest Taobao image source for front-end NPM image source, and Alibaba Cloud image source for back-end Maven image source (optional, but quick download after replacement)
-
-## 🐼Deployment Project Issues
-
-⭐
-
-+ The UFT-8 used in the garbled code problem project
-
-+ Generally, garbled characters are the opposite of UTF-8 and GBK
-
-+ Please provide a clear description of Baidu IDEA garbled code and Eclipse garbled code issues
-
-⭐
-
-+ Clicking the interaction button did not result in any response.
-
-+ It is obvious that the request has failed. The browser opens the developer tool, and Edge browser directly uses Ctrl+shift+i, while other browsers press F12
-
-+ View red request and response status code issues
-
-⭐
-
-+ Read the document first before querying or asking questions
-
-+ Skilled questioning and vague statements make it difficult for senior architects to identify bugs
-
-⭐
-
-+ **QQ: 909088445**
-
-+ Usually online at night, it is recommended to find the problem yourself first!!!
-
-+ Open source is free, customized and debugging projects are paid for.
-
-## 🐼Requirement Analysis And Design
-
-Requirement analysis and design documents. For those with (**paid**) requirements, you can add QQ: 909088445. It is suitable for those who have completed the design and course design. For those who want to save time, please feel free to contact me.
-
-
-
-## 🐼Project API Interface Document
-
-+ The interface document is too lengthy
-
-+ I originally intended to completely adopt the RESTFUL style, but forgot halfway through it
-
-+ Read the reference address of the document clearly
-
-+ To combine the detailed content of the API backend interface document with the database structure and content, the front-end and back-end **star will be added** ⭐ Take a screenshot of it and add it to my QQ: **909088445** Send it to me to collect it~Thank you for your support
-
-#### **Sample Screenshot Of Database Retrieval (Gitee&GitHub):**
-
-
-
-
-
-
-
-
-
-## 🐷 Other
-
-+ Personal blog address: https://luoye6.github.io/
-
-+ Personal blog is hosted on Hexo+Github
-
-+ Using the butterfly theme can achieve customization
-
-+ It is recommended that those who have free time can spend 1-2 days building a personal blog to take notes.
-
-## ☕Please Treat Me To coffee
-
-If this project is helpful to you, may I have a cup of coffee with the author :)
-
-

-
-## **Version Iteration**
-
-### March 19, 2023
-
-
-
-1)Introduce the knife4j dependency and use Swagger+Knife4j to automatically generate interface documentation for the OpenAPI specification. The front-end can use plugins to automatically generate interface request code on this basis, reducing the cost of front-end and back-end collaboration.
-
-2)Introducing JSOUP dependencies allows for custom addition of crawler functionality, allowing for batch addition of books with relatively real data.
-
-3)Add a transaction manager to enable @ Transactional to specify exception types for rollback and transaction propagation behavior.
-
-### April 13, 2023
-
-1)In manually adding and deleting database operations with complex logic, @ Transactional annotations have been added. When encountering runtime exceptions, the database can be rolled back directly to prevent logical errors in borrowing and returning books.
-
-2)Fix the bug where the 11 digit book number cannot be borrowed, as it exceeds the integer's 2147483647 (10 digits). Solution: Change the database to BigInt and Java to Long.
-
-3)**Note**: Do not delete users and announcements casually!!! It can cause logical errors when others experience it!!! Please understand the project logic before proceeding with the deletion operation!!! Thank you for your cooperation!!!
-
-4)In the next issue, we are preparing to optimize the display of charts and functions such as alarm notifications after overdue books. Thank you for your support. I will continue to maintain and optimize the functions. If there are any bugs, you can add me on QQ or raise an issue. Do not maliciously exploit the bugs. Thank you again.
-
-5)A video of a deployment project for Labor Day will be posted on Bilibili, and the deployment will be explained clearly to facilitate the completion of course or final projects. This project includes database table design, API interface documentation, content and function introduction, and highlight introduction. The only missing ones may be data flow diagrams, ER diagrams, and so on. As there are many people on Star, I will add them.
-
-### May 1st, 2023
-
-1)Add the system management function with "System Administrator" permissions, and **add a borrowing type analysis and statistical chart (pie chart)** using Echarts.
-
-2)Optimize the display lag when no data is received, add a "loading" status, **use v-loading** (ElementUI component library), **optimize user human-machine interaction experience**, and provide **good interaction** when the server calls the interface slowly.
-
-3)Rotation image optimization: **Compress image volume**, and also use Swiper's **Lazy loading** to achieve image loading status, and then display the image only after it is fully loaded, **optimizing the user experience process**.
-
-4)Add a custom error code enumeration class to the backend, which allows for custom status codes to be returned while retaining the original enumeration class.
-
-5)The front-end optimization section displays table content. When the vertical content is too long and the maximum height of the table is set, a sliding window will be displayed if it exceeds the limit. Optimize table column width and improve table aesthetics.
-
-6)Add the **Batch Delete Books** function of the Book Management component to optimize the administrator experience, eliminating the need for individual book deletions and improving efficiency.
-
-7)Jmeter conducted stress testing, and the server interface achieved a QPS of 50 or above when **100 users simultaneously sent requests**.
-
-### May 20th, 2023
-
-**Backend updates**
-
-1)To prevent the front-end from capturing packets and obtaining plaintext passwords, the front-end inputs the password and performs MD5 encryption (mixed salt values to prevent collisions). The back-end directly compares the encrypted password with the database, and equality represents successful login. Improve system security.
-
-2)Rectify the Controller layer by placing all business code into the Service layer, where the Controller calls the Service service and modifies the @ Transactional annotation position to the Business layer, reducing coupling and reducing bloating for the Controller. Be open to extensions and closed to modifications. In the future, we will consider using **design patterns** to optimize code and **multi threading** knowledge to improve interface response speed under **high concurrency**.
-
-3)Modify the code according to the Alibaba manual, reduce warnings, and make the code more elegant and standardized.
-
-4)**Fix bug**: Borrowing time is empty, causing server breakdown. If the return date is empty, it still shows that the borrowing was successful. (Solution: Verify the time parameter to determine if it is empty)
-
-5)**Tool class increase**: SQLUtils (preventing SQL injection), NetUtils (network tool class)
-
-**Front end update status**
-
-1)Change the route loading method to lazy loading, which can effectively alleviate the pressure of homepage loading and reduce the time required for homepage loading.
-
-2)Add a 404 page, and when the user visits a page with a request address that does not exist, they will be redirected directly to the 404 page to improve the user experience.
-
-3)Add the loading status of the button, **optimize human-computer interaction**, and improve user experience. Modify button: Login button, other buttons can be customized and modified if needed. Add: loading="loading".
-
-**Bug fixing status**
-
-The 1.11 digit book number can be borrowed, but **cannot be checked for overdue payment**. It was found that the method parameter is still Integer. Last time, the borrowing and returning books were changed to Long, but the overdue payment check has not been changed to Long, resulting in a problem. It has now been fixed.
-
-### June 10, 2023
-
-**Front end update status**
-
-1)Add full screen function buttons on certain pages to facilitate users to zoom in and view table data.
-
-2)Added address icons for GitHub and Gitee to facilitate project pulling and cloning.
-
-3)The reader's comment component and comment function will be strengthened to prevent meaningless numbers, letters, and spaces from appearing in the data. Further considerations will be made in the future
-
-4)Reader message component, **using lodash for throttling **, can only send network requests once within 5 seconds to prevent malicious brushing of invalid messages.
-
-**Backend updates**
-
-1)Add a batch import function for books using EasyExcel on the backend to achieve interaction with storing some book data using Excel in real life, improve import efficiency, and achieve the same effect as the crawler function. It can also import large amounts of data. It is recommended to use EasyExcel for batch import, which will take faster time than the crawler function.
-
-**Bug fixing status**
-
-1)Modify the password modification function on the user page, as the last update already added salt values, but the backend code logic has not been changed. This fix "inability to log in after password modification" is due to the backend not adding salt values, which has been fixed.
-
-2)Fixed the issue where the system administrator changed the password for the borrowing certificate and was unable to log in. The reason is the same as the first bug, as the backend's salt value was not added and has been fixed.
-
-3)Fixed the issue where the system administrator directly clicked on "modify book" in the book management function and found that the classification of the book was incorrect. This was because the front-end only sent a request to obtain the classification in the "add book" dialog box, and forgot to add a request to obtain the classification when modifying the dialog box. This issue has been fixed.
-
-### September 2023
-
-**Front end update status**
-
-1)Add an intelligent recommendation page that can communicate with AI. Users can input their favorite xxx books, and AI can analyze them in existing databases to make recommendations. The domestic AI model is called, and the underlying layer is OpenAI.
-
-2)Add an intelligent analysis page, input analysis objectives, icon types, and Excel files, generate analysis conclusions and visual icons through AI, greatly improving efficiency and reducing labor analysis costs.
-
-3)Add the function of system administrators to upload books in bulk using Excel files on the front-end (under testing), for reference only.
-
-**Backend updates**
-
-1)Add interfaces for intelligent analysis and obtaining the last 5 chat records, and use **Thread Pool** and **Future** for timeout request processing. If the interface call exceeds 40 seconds, an error message will be returned directly.
-
-2)Utilize RateLimiter in Google's Guava for flow limiting control, allowing only one request per second to pass through, to prevent brushing behavior.
-
-### November 2023
-
-**Backend updates**
-
-1)Switch the AI model for user chat to Alibaba's Tongyi Qianwen Plus model, and **support multi round session history**, no longer use iFlytek Starfire's AI model, but still retain the tool class. The main purpose is to receive a faster response, and Alibaba's documents are more detailed, allowing for customized scripts . When users input irrelevant book recommendations, they can directly **refuse to answer **.
-
-2)Add an IncSyncDeleteAIMessage **scheduled task**, which will delete records with empty content due to system errors and other reasons every day. The number of times the interface will be restored for these users will also be. In the future, RabbitMQ may be selected to put the failed messages into the message queue, and then ensure that the failed messages are consumed .
-
-3)Login encryption has been changed from the front-end to the back-end. As the front-end can be compromised, encryption will still be placed in the back-end Solution: Frontend transmission, encrypted with HTTPS for ciphertext, backend encrypted with salt value+algorithm, and database storing ciphertext.
-
-4)Store the message page in Redis, **reduce database IO queries**, and increase QPS by hundreds of times!
-
-**Front end update status**
-
-1)Change the background images and avatars of the three login pages to be stored in the images folder of the assets folder, mainly for the sake of users of the project. Many people do not understand graphic bed technology, so I will temporarily change the login pages to static images.
-
-2)Optimization of permission switching prompt, There is now a text style for login permission switching on the icon , indicating that users have multiple login pages to switch between.
-
-3)Login encryption has been changed from the front-end to the back-end. As the front-end can be compromised, encryption will still be placed in the back-end **Solution**: Frontend transmission, encrypted with HTTPS for ciphertext, backend encrypted with salt value+algorithm, and database storing ciphertext.
-
-### March 2024
-
-**Backend updates**
-
-1)Add @ ApiOperation annotations to Knife4J to indicate the purpose of each interface, making it easier for developers to read and test the interfaces.
\ No newline at end of file