Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

HoWhiteDevelop/library-backend

Repository files navigation

图书馆管理系统后端

基于 NestJS 框架开发的图书馆管理系统后端服务,集成了 MySQL、Redis 和 Elasticsearch,提供完整的图书管理、用户认证、借阅管理等功能。

功能特性

  • 用户认证与权限管理

    • JWT 认证
    • 角色权限控制(管理员/读者)
    • 用户注册和登录
  • 图书管理

    • 图书 CRUD 操作
    • ISBN 查询
    • 高级搜索(基于 Elasticsearch)
    • 图书状态管理
  • 借阅管理

    • 图书借阅
    • 图书归还
    • 借阅历史记录
    • 自动上架功能
  • 缓存管理

    • Redis 缓存集成
    • 热点数据缓存
    • 缓存自动过期
  • 全文搜索

    • Elasticsearch 集成
    • 多字段搜索
    • 模糊匹配
    • 相关度排序

技术栈

  • NestJS
  • TypeORM
  • MySQL
  • Redis
  • Elasticsearch
  • JWT
  • Swagger

环境要求

  • Node.js >= 16
  • MySQL >= 8.0
  • Redis >= 6.0
  • Elasticsearch >= 8.0

安装部署

  1. 克隆项目
git clone https://github.com/HoWhiteDevelop/library-backend.git
cd library-backend
  1. 安装依赖
pnpm install
  1. 配置环境变量
# 复制环境变量模板
cp .env.example .env
# 修改环境变量配置
vim .env
  1. 初始化数据库
# 创建数据库
mysql -u root -p
CREATE DATABASE library;
# 运行迁移
pnpm run typeorm migration:run
  1. 启动服务
# 开发环境
pnpm run start:dev
# 生产环境
pnpm run build
pnpm run start:prod

API 文档

启动服务后访问 Swagger 文档:

http://localhost:3000/api

主要接口

  • 认证相关

    • POST /auth/login - 用户登录
    • POST /auth/register - 用户注册
  • 图书管理

    • GET /books - 获取图书列表
    • GET /books/search - 高级搜索
    • GET /books/:isbn - 通过 ISBN 查询
    • POST /books - 添加图书
    • PUT /books/:id - 更新图书
    • DELETE /books/:id - 删除图书
  • 借阅管理

    • POST /books/borrow - 借阅图书
    • POST /books/return - 归还图书
    • GET /books/loans - 借阅记录

缓存管理

  • Redis 缓存接口
    • GET /redis/test - 测试连接
    • GET /redis/keys - 查看所有键
    • GET /redis/value/:key - 获取指定键值
    • DELETE /redis/key/:key - 删除缓存

搜索功能

  • Elasticsearch 接口
    • GET /elasticsearch/test - 测试连接
    • POST /elasticsearch/init-index - 初始化索引
    • POST /elasticsearch/reindex - 重建索引
    • GET /elasticsearch/index-info - 获取索引信息

开发团队

License

MIT licensed

完整文件结构说明

src/
├── main.ts # 应用程序入口文件
│ - 配置全局中间件
│ - 配置 Swagger 文档
│ - 启动应用程序
│ - 配置全局异常过滤器
│
├── modules/
│ ├── books/ # 图书管理模块
│ │ ├── books.service.ts # 图书服务
│ │ │ - 图书 CRUD 操作
│ │ │ - 图书信息查询
│ │ │ - 库存管理
│ │ │ - 图书状态更新
│ │ │
│ │ ├── books.module.ts # 图书模块配置
│ │ │ - 导入依赖模块
│ │ │ - 配置服务提供者
│ │ │ - 导出模块接口
│ │ │
│ │ ├── books.controller.ts # 图书控制器
│ │ │ - 处理图书相关请求
│ │ │ - 路由配置
│ │ │ - 参数验证
│ │ │ - 权限控制
│ │ │
│ │ └── book-loan.service.ts # 借阅服务
│ │ - 借书业务逻辑
│ │ - 还书业务逻辑
│ │ - 借阅历史管理
│ │ - 逾期处理
│ │
│ └── auth/ # 认证模块
│ ├── local.strategy.ts # 本地认证策略
│ │ - 用户名密码验证
│ │ - 用户信息验证
│ │ - 登录逻辑处理
│ │
│ ├── local-auth.guard.ts # 本地认证守卫
│ │ - 登录接口保护
│ │ - 认证信息验证
│ │ - 会话管理
│ │
│ ├── jwt.strategy.ts # JWT认证策略
│ │ - Token 验证
│ │ - Token 解析
│ │ - 用户信息提取
│ │ - 权限验证
│ │
│ └── jwt-auth.guard.ts # JWT认证守卫
│ - API 接口保护
│ - Token 有效性验证
│ - 权限检查
│ - 请求拦截

详细功能说明

入口文件 (main.ts)

  • 应用程序引导和初始化
  • 全局配置设置
  • 中间件注册
  • 异常处理配置
  • 文档系统配置
  • 服务器启动配置

Books 模块详解

books.service.ts

  • 图书信息的增删改查
  • ISBN 编号管理
  • 库存数量追踪
  • 图书分类管理
  • 图书状态监控
  • 搜索功能实现

books.module.ts

  • 模块依赖配置
  • 服务注册
  • 数据库连接配置
  • 缓存配置
  • 搜索引擎集成

books.controller.ts

  • RESTful API 实现
  • 请求参数验证
  • 响应数据格式化
  • 权限检查
  • 异常处理
  • 日志记录

book-loan.service.ts

  • 借阅规则实现
  • 借阅状态管理
  • 借阅历史记录
  • 逾期处理
  • 自动提醒功能
  • 黑名单管理

Auth 模块详解

local.strategy.ts

  • 本地认证逻辑
  • 密码加密处理
  • 用户验证流程
  • 登录尝试限制
  • 安全策略实现

local-auth.guard.ts

  • 登录保护
  • 会话管理
  • 认证信息验证
  • 登录状态维护
  • 安全拦截

jwt.strategy.ts

  • JWT 令牌生成
  • 令牌验证逻辑
  • 用户信息加密
  • 令牌刷新机制
  • 安全策略实现

jwt-auth.guard.ts

  • API 访问控制
  • 令牌有效性检查
  • 权限级别验证
  • 请求过滤
  • 安全拦截器

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

AltStyle によって変換されたページ (->オリジナル) /