Files
wb-java-nc-shop/README.md
2026-01-11 18:14:42 +08:00

172 lines
4.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 奶茶店管理系统
基于Spring Boot + MyBatis + MySQL + Thymeleaf的奶茶店管理系统包含用户端和商家端两个主要模块集成协同过滤推荐算法。
## 技术栈
- **后端框架**: Spring Boot 2.7.18
- **数据库**: MySQL 8.0+
- **ORM**: MyBatis
- **认证**: JWT Token
- **前端**: HTML + Thymeleaf + Bootstrap 5
- **算法**: 协同过滤推荐算法(基于用户的协同过滤)
## 功能模块
### 用户端功能
1. 用户注册登录
2. 个人信息管理
3. 商品浏览(支持分类筛选)
4. 商品个性化定制(甜度、冰度、配料)
5. 购物车管理
6. 订单下单支付(模拟微信/支付宝)
7. 订单跟踪
8. 个性化商品推荐(协同过滤算法)
9. 公告查看
10. 留言反馈
### 商家端功能
1. 商家注册登录
2. 商家信息管理
3. 商品管理(新增/编辑/下架)
4. 商品规格和配料管理
5. 订单管理(接单/拒单/状态更新)
6. 库存管理(入库/出库/预警)
7. 公告发布
8. 评价管理(查看/回复)
9. 数据统计(日/周/月销量、营收、热门商品)
## 数据库设计
数据库表结构请参考 `src/main/resources/db/schema.sql`
主要表包括:
- user, user_address - 用户相关
- merchant - 商家
- product, product_spec, product_topping, product_custom - 商品相关
- cart - 购物车
- order, order_item, order_track - 订单相关
- inventory, inventory_log - 库存相关
- announcement - 公告
- message - 留言反馈
- review - 评价
- user_behavior, user_similarity - 协同过滤算法相关
## 安装和运行
### 1. 环境要求
- JDK 1.8+
- Maven 3.6+
- MySQL 8.0+
### 2. 数据库配置
1. 创建数据库:
```sql
CREATE DATABASE nl_shop CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
```
2. 执行建表SQL
```bash
mysql -u root -p nl_shop < src/main/resources/db/schema.sql
```
3. 修改配置文件 `src/main/resources/application.yml`
```yaml
spring:
datasource:
url: jdbc:mysql://localhost:3306/nl_shop?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
username: root
password: your_password
```
### 3. 编译运行
```bash
mvn clean install
mvn spring-boot:run
```
### 4. 访问系统
- 用户端登录: http://localhost:8080/user/login.html
- 商家端登录: http://localhost:8080/merchant/login.html
## 协同过滤算法
系统实现了基于用户的协同过滤推荐算法:
1. **用户行为记录**: 记录用户的浏览、购买、评分行为
2. **相似度计算**: 使用余弦相似度计算用户之间的相似度
3. **推荐生成**: 基于相似用户的偏好生成推荐列表
4. **冷启动处理**: 新用户推荐热门商品
算法实现在 `CollaborativeFilteringService` 中。
## API接口
### 用户端接口
- POST `/user/register` - 用户注册
- POST `/user/login` - 用户登录
- GET `/user/products` - 商品列表
- GET `/user/products/{id}` - 商品详情
- GET `/user/recommend` - 个性化推荐
- POST `/user/cart/add` - 加入购物车
- POST `/user/order/create` - 创建订单
- POST `/user/order/{id}/pay` - 支付订单
### 商家端接口
- POST `/merchant/register` - 商家注册
- POST `/merchant/login` - 商家登录
- GET `/merchant/products` - 商品列表
- POST `/merchant/products` - 新增商品
- GET `/merchant/orders` - 订单列表
- PUT `/merchant/orders/{id}/accept` - 接单
- GET `/merchant/statistics/sales` - 销量统计
详细API文档请参考Controller代码。
## 项目结构
```
nl_shop/
├── src/main/java/com/nlshop/
│ ├── config/ # 配置类
│ ├── controller/ # 控制器层
│ │ ├── user/ # 用户端控制器
│ │ └── merchant/ # 商家端控制器
│ ├── service/ # 业务逻辑层
│ │ ├── user/
│ │ ├── merchant/
│ │ └── algorithm/ # 协同过滤算法
│ ├── mapper/ # MyBatis Mapper
│ ├── entity/ # 实体类
│ ├── dto/ # 数据传输对象
│ ├── util/ # 工具类
│ └── interceptor/ # 拦截器
└── src/main/resources/
├── mapper/ # MyBatis XML映射
├── templates/ # Thymeleaf模板
└── db/ # 数据库脚本
```
## 注意事项
1. JWT Token默认有效期为24小时可在 `application.yml` 中配置
2. 文件上传路径配置在 `application.yml``file.upload-path`
3. 密码使用MD5加密生产环境建议使用BCrypt
4. 支付功能为模拟实现,实际项目需要对接真实支付接口
## 开发计划
- [x] 项目基础架构
- [x] 数据库设计
- [x] 用户端功能
- [x] 商家端功能
- [x] 协同过滤算法
- [x] 前端页面
- [ ] 单元测试
- [ ] 性能优化
- [ ] Redis缓存集成
## 许可证
MIT License