172 lines
4.8 KiB
Markdown
172 lines
4.8 KiB
Markdown
# 奶茶店管理系统
|
||
|
||
基于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
|