# 奶茶店管理系统 基于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