华东师范大学 数据科学与工程学院
当代数据管理系统课程 Project1
团队成员:王惜冉、吴彤
本项目是一个基于MongoDB文档数据库的在线书店系统,支持买家购书、卖家开店、订单管理等完整的电商业务流程。项目采用Flask后端框架,实现了用户管理、商品管理、订单处理、智能推荐等功能。
| 技术 | 版本 | 说明 |
|---|---|---|
| Python | 3.11+ | 开发语言 |
| Flask | 2.0.0 | Web框架 |
| MongoDB | 4.0+ | 文档数据库 |
| PyMongo | 4.3.3 | MongoDB驱动 |
| PyJWT | 2.9.0 | JWT令牌认证 |
| APScheduler | 3.10.4 | 定时任务调度 |
| Transformers | 4.31.0 | NLP模型库 |
| Pytest | 8.0+ | 测试框架 |
| Coverage | 7.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 # 项目说明文档
brew install mongodb-communitysudo apt-get install mongodb启动MongoDB服务:
# Windows
net start MongoDB
# macOS/Linux
sudo systemctl start mongod
验证MongoDB运行:
mongo --version
# 克隆项目
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
# 从SQLite导入到MongoDB
cd bookstore
python import_books_from_sqlite.py
该脚本会自动:
mongodb://localhost:27017)bookstore数据库fe/data/book.db导入图书数据推荐使用conda环境:
# 进入项目目录
cd bookstore
# 激活conda环境
conda activate bookstore5-py310
# 运行完整测试(带日志)
bash script/test_log.sh
测试输出:
logs/pytest_YYYYMMDD_HHMMSS.loglogs/pytest_errors_YYYYMMDD_HHMMSS.loglogs/coverage_YYYYMMDD_HHMMSS.loghtmlcov/index.html其他测试方式:
# 基础测试
bash script/test.sh
# Windows用户
run_tests.bat
# 运行特定测试
pytest fe/test/test_new_order.py -v
cd bookstore
python be/serve.py
服务将在 http://127.0.0.1:5000 启动
项目使用以下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 |
POST /auth/registerPOST /auth/loginPOST /auth/logoutPOST /auth/unregisterPOST /auth/passwordPOST /buyer/add_fundsPOST /buyer/new_orderPOST /buyer/paymentPOST /seller/create_storePOST /seller/add_bookPOST /seller/add_stock_levelPOST /seller/delivery_orderPOST /buyer/receive_orderGET /buyer/query_orderPOST /buyer/cancel_orderGET /search_books?query=xxxGET /search_books?query=xxx&store_id=xxx&page=1&page_size=10GET /recommend_books?user_id=xxxGET /recommend_books_one?user_id=xxx&count=5POST /extract_titles$match和$group在数据库层面计算订单总价logs/目录1. MongoDB连接失败
net start MongoDB (Windows) 或 sudo systemctl start mongod (Linux)2. Flask版本冲突
pip install flask==2.0.0 Werkzeug==2.0.0
3. 测试数据导入失败
fe/data/book.db文件存在4. Conda环境问题
# 创建新环境
conda create -n bookstore5-py310 python=3.10
conda activate bookstore5-py310
pip install -r requirements.txt
| 姓名 | 学号 | 分工 |
|---|---|---|
| 王惜冉 | 10235501401 | 买家模块、书名提取器、推荐系统2、测试、报告 |
| 吴彤 | 10222140442 | 卖家模块、用户模块、搜索功能、推荐系统1、测试、报告 |
本项目仅用于学习和研究目的。
Python
98.9%
Shell
1.1%
华东师范大学 数据科学与工程学院
当代数据管理系统课程 Project1
团队成员:王惜冉、吴彤
本项目是一个基于MongoDB文档数据库的在线书店系统,支持买家购书、卖家开店、订单管理等完整的电商业务流程。项目采用Flask后端框架,实现了用户管理、商品管理、订单处理、智能推荐等功能。
| 技术 | 版本 | 说明 |
|---|---|---|
| Python | 3.11+ | 开发语言 |
| Flask | 2.0.0 | Web框架 |
| MongoDB | 4.0+ | 文档数据库 |
| PyMongo | 4.3.3 | MongoDB驱动 |
| PyJWT | 2.9.0 | JWT令牌认证 |
| APScheduler | 3.10.4 | 定时任务调度 |
| Transformers | 4.31.0 | NLP模型库 |
| Pytest | 8.0+ | 测试框架 |
| Coverage | 7.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 # 项目说明文档
brew install mongodb-communitysudo apt-get install mongodb启动MongoDB服务:
# Windows
net start MongoDB
# macOS/Linux
sudo systemctl start mongod
验证MongoDB运行:
mongo --version
# 克隆项目
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
# 从SQLite导入到MongoDB
cd bookstore
python import_books_from_sqlite.py
该脚本会自动:
mongodb://localhost:27017)bookstore数据库fe/data/book.db导入图书数据推荐使用conda环境:
# 进入项目目录
cd bookstore
# 激活conda环境
conda activate bookstore5-py310
# 运行完整测试(带日志)
bash script/test_log.sh
测试输出:
logs/pytest_YYYYMMDD_HHMMSS.loglogs/pytest_errors_YYYYMMDD_HHMMSS.loglogs/coverage_YYYYMMDD_HHMMSS.loghtmlcov/index.html其他测试方式:
# 基础测试
bash script/test.sh
# Windows用户
run_tests.bat
# 运行特定测试
pytest fe/test/test_new_order.py -v
cd bookstore
python be/serve.py
服务将在 http://127.0.0.1:5000 启动
项目使用以下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 |
POST /auth/registerPOST /auth/loginPOST /auth/logoutPOST /auth/unregisterPOST /auth/passwordPOST /buyer/add_fundsPOST /buyer/new_orderPOST /buyer/paymentPOST /seller/create_storePOST /seller/add_bookPOST /seller/add_stock_levelPOST /seller/delivery_orderPOST /buyer/receive_orderGET /buyer/query_orderPOST /buyer/cancel_orderGET /search_books?query=xxxGET /search_books?query=xxx&store_id=xxx&page=1&page_size=10GET /recommend_books?user_id=xxxGET /recommend_books_one?user_id=xxx&count=5POST /extract_titles$match和$group在数据库层面计算订单总价logs/目录1. MongoDB连接失败
net start MongoDB (Windows) 或 sudo systemctl start mongod (Linux)2. Flask版本冲突
pip install flask==2.0.0 Werkzeug==2.0.0
3. 测试数据导入失败
fe/data/book.db文件存在4. Conda环境问题
# 创建新环境
conda create -n bookstore5-py310 python=3.10
conda activate bookstore5-py310
pip install -r requirements.txt
| 姓名 | 学号 | 分工 |
|---|---|---|
| 王惜冉 | 10235501401 | 买家模块、书名提取器、推荐系统2、测试、报告 |
| 吴彤 | 10222140442 | 卖家模块、用户模块、搜索功能、推荐系统1、测试、报告 |
本项目仅用于学习和研究目的。
Python
98.9%
Shell
1.1%