WuTong-ww/BookStore

DB第一次项目

0

stars

14

commits

Python

primary language

Nov 4, 2025

updated

README

BookStore - MongoDB版在线书店系统

华东师范大学 数据科学与工程学院
当代数据管理系统课程 Project1
团队成员:王惜冉、吴彤

📚 项目简介

本项目是一个基于MongoDB文档数据库的在线书店系统,支持买家购书、卖家开店、订单管理等完整的电商业务流程。项目采用Flask后端框架,实现了用户管理、商品管理、订单处理、智能推荐等功能。

✨ 核心特性

  • 完整的电商流程:注册→登录→充值→下单→付款→发货→收货
  • 🔍 智能搜索:支持全站/店铺搜索,多字段匹配,分页显示
  • 🤖 智能推荐系统
    • 基于用户共现的个性化推荐
    • 协同过滤推荐算法
  • 📖 书名提取器:基于ChatLM-mini-Chinese预训练模型的NLP功能
  • 订单超时管理:APScheduler定时任务+deque队列自动取消超时订单
  • 📊 高测试覆盖率:107个测试用例,覆盖率达91%

🏗️ 技术栈

技术版本说明
Python3.11+开发语言
Flask2.0.0Web框架
MongoDB4.0+文档数据库
PyMongo4.3.3MongoDB驱动
PyJWT2.9.0JWT令牌认证
APScheduler3.10.4定时任务调度
Transformers4.31.0NLP模型库
Pytest8.0+测试框架
Coverage7.6.2测试覆盖率

📁 项目结构

bookstore5/                      # 项目根目录
├── bookstore/                   # 主项目目录
│   ├── be/                      # 后端代码
│   │   ├── model/               # 业务逻辑层
│   │   │   ├── buyer.py        # 买家模块(下单、付款、收货、推荐)
│   │   │   ├── seller.py       # 卖家模块(开店、上架、发货)
│   │   │   ├── user.py         # 用户模块(注册、登录、搜索)
│   │   │   ├── store.py        # 数据库连接与索引管理
│   │   │   ├── times.py        # 订单超时管理
│   │   │   ├── error.py        # 错误码定义
│   │   │   └── db_conn.py      # 数据库连接基类
│   │   ├── view/                # 路由接口层
│   │   │   ├── auth.py         # 用户认证路由
│   │   │   ├── buyer.py        # 买家路由
│   │   │   └── seller.py       # 卖家路由
│   │   ├── serve.py            # Flask服务启动
│   │   └── app.py              # Flask应用实例
│   ├── fe/                      # 前端测试代码
│   │   ├── access/              # API访问封装
│   │   ├── test/                # 功能测试用例
│   │   ├── bench/               # 性能测试
│   │   ├── data/                # 测试数据
│   │   │   └── book.db         # SQLite图书数据
│   │   ├── conf.py             # 测试配置
│   │   └── conftest.py         # pytest配置
│   ├── doc/                     # API文档
│   ├── script/                  # 脚本文件
│   │   ├── test.sh             # 基础测试脚本
│   │   └── test_log.sh         # 带日志的测试脚本
│   ├── logs/                    # 测试日志目录
│   ├── htmlcov/                 # 覆盖率HTML报告
│   ├── pic/                     # 项目图片资源
│   ├── requirements.txt         # 依赖包列表
│   └── setup.py                # 项目安装配置
├── importbook_to_mongo.py      # 数据导入脚本(根目录)
└── README.md                   # 项目说明文档

🚀 快速开始

1️⃣ 环境准备

安装MongoDB

启动MongoDB服务:

# Windows
net start MongoDB

# macOS/Linux
sudo systemctl start mongod

验证MongoDB运行:

mongo --version

安装Python依赖

# 克隆项目
git clone https://github.com/WuTong-ww/BookStore.git
cd BookStore/bookstore

# 创建虚拟环境(推荐)
python -m venv .venv
source .venv/bin/activate  # Windows: .venv\Scripts\activate

# 安装依赖
pip install -r requirements.txt

2️⃣ 数据库初始化

# 从SQLite导入到MongoDB
cd bookstore
python import_books_from_sqlite.py

该脚本会自动:

  • 连接到本地MongoDB(mongodb://localhost:27017
  • 创建bookstore数据库
  • fe/data/book.db导入图书数据
  • 创建必要的索引

3️⃣ 运行测试

推荐使用conda环境:

# 进入项目目录
cd bookstore

# 激活conda环境
conda activate bookstore5-py310

# 运行完整测试(带日志)
bash script/test_log.sh

测试输出:

  • 完整日志:logs/pytest_YYYYMMDD_HHMMSS.log
  • 错误摘要:logs/pytest_errors_YYYYMMDD_HHMMSS.log
  • 覆盖率报告:logs/coverage_YYYYMMDD_HHMMSS.log
  • HTML报告:htmlcov/index.html

其他测试方式:

# 基础测试
bash script/test.sh

# Windows用户
run_tests.bat

# 运行特定测试
pytest fe/test/test_new_order.py -v

4️⃣ 启动服务

cd bookstore
python be/serve.py

服务将在 http://127.0.0.1:5000 启动


📊 数据库Schema

项目使用以下MongoDB集合:

集合名说明主要字段
users用户信息user_id, password, balance, token
stores商店信息store_id, user_id, books[]
books图书详情id, title, author, price, tags, picture
new_books推荐用图书book_id, book_info
new_order待付款订单order_id, user_id, store_id, status
new_order_detail订单明细order_id, book_id, count, price
history_order历史订单order_id, status, commit_time
history_order_detail历史订单明细order_id, book_id, count, price

📊 功能模块

基础功能(60%)

1. 用户模块

  • ✅ 用户注册 POST /auth/register
  • ✅ 用户登录 POST /auth/login
  • ✅ 用户登出 POST /auth/logout
  • ✅ 注销账户 POST /auth/unregister
  • ✅ 修改密码 POST /auth/password

2. 买家模块

  • ✅ 账户充值 POST /buyer/add_funds
  • ✅ 创建订单 POST /buyer/new_order
  • ✅ 支付订单 POST /buyer/payment

3. 卖家模块

  • ✅ 创建商店 POST /seller/create_store
  • ✅ 添加图书 POST /seller/add_book
  • ✅ 增加库存 POST /seller/add_stock_level

附加功能(40%)

4. 订单流程

  • ✅ 卖家发货 POST /seller/delivery_order
  • ✅ 买家收货 POST /buyer/receive_order
  • ✅ 订单查询 GET /buyer/query_order
  • ✅ 取消订单 POST /buyer/cancel_order
  • ✅ 超时自动取消(APScheduler定时任务)

5. 搜索功能

  • ✅ 全站搜索 GET /search_books?query=xxx
  • ✅ 店铺搜索 GET /search_books?query=xxx&store_id=xxx
  • ✅ 多字段匹配(title, tags, author, content)
  • ✅ 分页显示 &page=1&page_size=10

6. 推荐系统

  • ✅ 基于用户共现推荐 GET /recommend_books?user_id=xxx
  • ✅ 协同过滤推荐 GET /recommend_books_one?user_id=xxx&count=5

7. 书名提取器

  • ✅ 智能提取书名 POST /extract_titles
  • 使用ChatLM-mini-Chinese预训练模型

🎯 项目亮点

3个创新功能

  1. 书名提取器:基于Transformer模型的NLP功能,支持从自然语言文本中提取书名
  2. 推荐系统1:基于用户共现的个性化推荐,分析购买行为相似度
  3. 推荐系统2:协同过滤算法,基于余弦相似度计算书籍关联性

4个数据库优化

  1. 聚合管道优化:使用$match$group在数据库层面计算订单总价
  2. 哈希索引优化:为books集合的id字段创建哈希索引,加速查询
  3. $lookup联表查询:在推荐功能中实现多集合数据关联
  4. deque队列+定时任务:高效管理未付款订单,实现超时自动取消

🧪 测试说明

  • 总测试用例:107个
  • 测试覆盖率:91%
  • 测试日志:自动保存在logs/目录

🐛 常见问题

1. MongoDB连接失败

  • 确认MongoDB服务已启动:net start MongoDB (Windows) 或 sudo systemctl start mongod (Linux)
  • 检查端口27017是否被占用

2. Flask版本冲突

pip install flask==2.0.0 Werkzeug==2.0.0

3. 测试数据导入失败

  • 确认fe/data/book.db文件存在
  • 检查MongoDB写入权限

4. Conda环境问题

# 创建新环境
conda create -n bookstore5-py310 python=3.10
conda activate bookstore5-py310
pip install -r requirements.txt

🤝 开发团队

姓名学号分工
王惜冉10235501401买家模块、书名提取器、推荐系统2、测试、报告
吴彤10222140442卖家模块、用户模块、搜索功能、推荐系统1、测试、报告

📄 许可证

本项目仅用于学习和研究目的。


🔗 相关链接


Contributors

WuTong-ww

9 commits

irani0811

5 commits

WuTong-ww/BookStore

DB第一次项目

0

stars

14

commits

Python

primary language

Nov 4, 2025

updated

README

BookStore - MongoDB版在线书店系统

华东师范大学 数据科学与工程学院
当代数据管理系统课程 Project1
团队成员:王惜冉、吴彤

📚 项目简介

本项目是一个基于MongoDB文档数据库的在线书店系统,支持买家购书、卖家开店、订单管理等完整的电商业务流程。项目采用Flask后端框架,实现了用户管理、商品管理、订单处理、智能推荐等功能。

✨ 核心特性

  • 完整的电商流程:注册→登录→充值→下单→付款→发货→收货
  • 🔍 智能搜索:支持全站/店铺搜索,多字段匹配,分页显示
  • 🤖 智能推荐系统
    • 基于用户共现的个性化推荐
    • 协同过滤推荐算法
  • 📖 书名提取器:基于ChatLM-mini-Chinese预训练模型的NLP功能
  • 订单超时管理:APScheduler定时任务+deque队列自动取消超时订单
  • 📊 高测试覆盖率:107个测试用例,覆盖率达91%

🏗️ 技术栈

技术版本说明
Python3.11+开发语言
Flask2.0.0Web框架
MongoDB4.0+文档数据库
PyMongo4.3.3MongoDB驱动
PyJWT2.9.0JWT令牌认证
APScheduler3.10.4定时任务调度
Transformers4.31.0NLP模型库
Pytest8.0+测试框架
Coverage7.6.2测试覆盖率

📁 项目结构

bookstore5/                      # 项目根目录
├── bookstore/                   # 主项目目录
│   ├── be/                      # 后端代码
│   │   ├── model/               # 业务逻辑层
│   │   │   ├── buyer.py        # 买家模块(下单、付款、收货、推荐)
│   │   │   ├── seller.py       # 卖家模块(开店、上架、发货)
│   │   │   ├── user.py         # 用户模块(注册、登录、搜索)
│   │   │   ├── store.py        # 数据库连接与索引管理
│   │   │   ├── times.py        # 订单超时管理
│   │   │   ├── error.py        # 错误码定义
│   │   │   └── db_conn.py      # 数据库连接基类
│   │   ├── view/                # 路由接口层
│   │   │   ├── auth.py         # 用户认证路由
│   │   │   ├── buyer.py        # 买家路由
│   │   │   └── seller.py       # 卖家路由
│   │   ├── serve.py            # Flask服务启动
│   │   └── app.py              # Flask应用实例
│   ├── fe/                      # 前端测试代码
│   │   ├── access/              # API访问封装
│   │   ├── test/                # 功能测试用例
│   │   ├── bench/               # 性能测试
│   │   ├── data/                # 测试数据
│   │   │   └── book.db         # SQLite图书数据
│   │   ├── conf.py             # 测试配置
│   │   └── conftest.py         # pytest配置
│   ├── doc/                     # API文档
│   ├── script/                  # 脚本文件
│   │   ├── test.sh             # 基础测试脚本
│   │   └── test_log.sh         # 带日志的测试脚本
│   ├── logs/                    # 测试日志目录
│   ├── htmlcov/                 # 覆盖率HTML报告
│   ├── pic/                     # 项目图片资源
│   ├── requirements.txt         # 依赖包列表
│   └── setup.py                # 项目安装配置
├── importbook_to_mongo.py      # 数据导入脚本(根目录)
└── README.md                   # 项目说明文档

🚀 快速开始

1️⃣ 环境准备

安装MongoDB

启动MongoDB服务:

# Windows
net start MongoDB

# macOS/Linux
sudo systemctl start mongod

验证MongoDB运行:

mongo --version

安装Python依赖

# 克隆项目
git clone https://github.com/WuTong-ww/BookStore.git
cd BookStore/bookstore

# 创建虚拟环境(推荐)
python -m venv .venv
source .venv/bin/activate  # Windows: .venv\Scripts\activate

# 安装依赖
pip install -r requirements.txt

2️⃣ 数据库初始化

# 从SQLite导入到MongoDB
cd bookstore
python import_books_from_sqlite.py

该脚本会自动:

  • 连接到本地MongoDB(mongodb://localhost:27017
  • 创建bookstore数据库
  • fe/data/book.db导入图书数据
  • 创建必要的索引

3️⃣ 运行测试

推荐使用conda环境:

# 进入项目目录
cd bookstore

# 激活conda环境
conda activate bookstore5-py310

# 运行完整测试(带日志)
bash script/test_log.sh

测试输出:

  • 完整日志:logs/pytest_YYYYMMDD_HHMMSS.log
  • 错误摘要:logs/pytest_errors_YYYYMMDD_HHMMSS.log
  • 覆盖率报告:logs/coverage_YYYYMMDD_HHMMSS.log
  • HTML报告:htmlcov/index.html

其他测试方式:

# 基础测试
bash script/test.sh

# Windows用户
run_tests.bat

# 运行特定测试
pytest fe/test/test_new_order.py -v

4️⃣ 启动服务

cd bookstore
python be/serve.py

服务将在 http://127.0.0.1:5000 启动


📊 数据库Schema

项目使用以下MongoDB集合:

集合名说明主要字段
users用户信息user_id, password, balance, token
stores商店信息store_id, user_id, books[]
books图书详情id, title, author, price, tags, picture
new_books推荐用图书book_id, book_info
new_order待付款订单order_id, user_id, store_id, status
new_order_detail订单明细order_id, book_id, count, price
history_order历史订单order_id, status, commit_time
history_order_detail历史订单明细order_id, book_id, count, price

📊 功能模块

基础功能(60%)

1. 用户模块

  • ✅ 用户注册 POST /auth/register
  • ✅ 用户登录 POST /auth/login
  • ✅ 用户登出 POST /auth/logout
  • ✅ 注销账户 POST /auth/unregister
  • ✅ 修改密码 POST /auth/password

2. 买家模块

  • ✅ 账户充值 POST /buyer/add_funds
  • ✅ 创建订单 POST /buyer/new_order
  • ✅ 支付订单 POST /buyer/payment

3. 卖家模块

  • ✅ 创建商店 POST /seller/create_store
  • ✅ 添加图书 POST /seller/add_book
  • ✅ 增加库存 POST /seller/add_stock_level

附加功能(40%)

4. 订单流程

  • ✅ 卖家发货 POST /seller/delivery_order
  • ✅ 买家收货 POST /buyer/receive_order
  • ✅ 订单查询 GET /buyer/query_order
  • ✅ 取消订单 POST /buyer/cancel_order
  • ✅ 超时自动取消(APScheduler定时任务)

5. 搜索功能

  • ✅ 全站搜索 GET /search_books?query=xxx
  • ✅ 店铺搜索 GET /search_books?query=xxx&store_id=xxx
  • ✅ 多字段匹配(title, tags, author, content)
  • ✅ 分页显示 &page=1&page_size=10

6. 推荐系统

  • ✅ 基于用户共现推荐 GET /recommend_books?user_id=xxx
  • ✅ 协同过滤推荐 GET /recommend_books_one?user_id=xxx&count=5

7. 书名提取器

  • ✅ 智能提取书名 POST /extract_titles
  • 使用ChatLM-mini-Chinese预训练模型

🎯 项目亮点

3个创新功能

  1. 书名提取器:基于Transformer模型的NLP功能,支持从自然语言文本中提取书名
  2. 推荐系统1:基于用户共现的个性化推荐,分析购买行为相似度
  3. 推荐系统2:协同过滤算法,基于余弦相似度计算书籍关联性

4个数据库优化

  1. 聚合管道优化:使用$match$group在数据库层面计算订单总价
  2. 哈希索引优化:为books集合的id字段创建哈希索引,加速查询
  3. $lookup联表查询:在推荐功能中实现多集合数据关联
  4. deque队列+定时任务:高效管理未付款订单,实现超时自动取消

🧪 测试说明

  • 总测试用例:107个
  • 测试覆盖率:91%
  • 测试日志:自动保存在logs/目录

🐛 常见问题

1. MongoDB连接失败

  • 确认MongoDB服务已启动:net start MongoDB (Windows) 或 sudo systemctl start mongod (Linux)
  • 检查端口27017是否被占用

2. Flask版本冲突

pip install flask==2.0.0 Werkzeug==2.0.0

3. 测试数据导入失败

  • 确认fe/data/book.db文件存在
  • 检查MongoDB写入权限

4. Conda环境问题

# 创建新环境
conda create -n bookstore5-py310 python=3.10
conda activate bookstore5-py310
pip install -r requirements.txt

🤝 开发团队

姓名学号分工
王惜冉10235501401买家模块、书名提取器、推荐系统2、测试、报告
吴彤10222140442卖家模块、用户模块、搜索功能、推荐系统1、测试、报告

📄 许可证

本项目仅用于学习和研究目的。


🔗 相关链接


Contributors

WuTong-ww

9 commits

irani0811

5 commits

Languages

Python

98.9%

Shell

1.1%