# elm springboot+vue **Repository Path**: LabMem-No004/elm-springboot-vue ## Basic Information - **Project Name**: elm springboot+vue - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-09-19 - **Last Updated**: 2026-03-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 校园外卖平台(Spring Boot + Vue) ## 项目介绍 本项目是一个完整的校园外卖平台,包含前后端代码,覆盖: - C 端用户:店铺浏览、购物车、下单、支付、订单跟踪、评价等 - B 端商家:店铺管理、商品管理、订单处理、经营数据看板等 - 平台侧:虚拟钱包与积分体系、优惠券与活动、AI 智能客服、即时通讯与订单状态实时推送 后端基于 Spring Boot 构建,结合 Spring Security + JWT 做认证鉴权,使用 JPA + MyBatis 进行数据持久化;同时引入 Redis 做缓存与限流、RabbitMQ 做事件驱动消息分发、WebSocket(STOMP) 实现订单和聊天的实时通知,并通过阿里云通义千问提供 AI 智能客服能力。 ## 核心功能 ### 一、外卖业务功能 - 用户端外卖下单:店铺列表、商品列表、购物车、地址管理、下单/稍后支付、订单状态流转 - 商家端店铺管理:多店铺管理、商品配置、营业信息维护 - 订单管理:用户/商家分角色查看订单、接单/处理/送达、订单状态跟踪与超时处理 - 优惠券与活动:支持优惠券使用、订单金额优惠、活动积分加成等 ### 二、虚拟钱包与资金安全 - 充值:支持充值赠送策略 - 提现:支持提现与手续费机制 - 支付:支持使用钱包余额支付订单 - 冻结/解冻:下单后对商家收入进行预冻结,确认收货后解冻入账 - 透支额度与利息(保留能力):支持配置透支额度与利息策略 - 并发安全:在订单创建、修改、支付等关键路径中结合数据库事务与 Redis 分布式锁,保证多终端并发操作下一致性 ### 三、积分体系 - 积分获取:支持多种积分来源(如下单、签到等) - 积分消费:兑换优惠券、补签等 - 积分过期管理:基于 FIFO 的过期策略 - 连续签到奖励与补签 - 积分规则可配置 ## 快速开始 ### 环境要求 - JDK 17+ - Node.js 14+ - Maven 3.6+ ### 后端启动 ```bash # 方式1:直接运行 jar 包(推荐) java -jar target/myapp-1.0.jar # 方式2:从源码构建 mvn clean package java -jar target/myapp-1.0.jar # 方式3:跳过测试快速打包 mvn clean package -DskipTests java -jar target/myapp-1.0.jar ``` 后端访问地址:http://localhost:8080 ### 前端启动 ```bash cd elmclient npm install npm run serve ``` 前端访问地址:http://localhost:8081 ## 数据库 ### MySQL 使用 MySQL,请参考 `MySQL部署指南.md` ```bash # 1. 执行数据库脚本 setup-mysql.bat # Windows ./setup-mysql.sh # Linux/Mac ``` ## 测试 ### 运行测试 ```bash # 运行所有测试 mvn test # 运行单元测试 mvn test -Dtest=WalletServiceTest mvn test -Dtest=PointsServiceTest mvn test -Dtest=SignInServiceTest # 运行集成测试 mvn test -Dtest=*IntegrationTest # 生成测试覆盖率报告 mvn clean test jacoco:report ``` 测试覆盖率报告:`target/site/jacoco/index.html` 详细测试说明:[测试说明.md](测试说明.md) ## API 文档 ### Swagger UI 项目启动后访问:http://localhost:8080/swagger-ui/index.html ### Apifox 公开项目地址:https://tjusep.apifox.cn/ ### 使用 Apifox CLI 测试 ```bash # 1. 安装 Apifox CLI npm install -g apifox-cli # 2. 修改测试文件中的 IP 地址 # 编辑 "测试正常创建订单流程.apifox-cli.json" # 将 localhost 改为你的 IP(ipconfig/ifconfig 查看) # 3. 运行测试 apifox run 测试正常创建订单流程.apifox-cli.json ``` ## AI 智能客服配置 在 `application.properties` 中配置: ```properties # 阿里云通义千问 API dashscope.api.key=your-api-key-here dashscope.api.url=https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation dashscope.model=qwen-plus ``` 获取 API Key:https://dashscope.console.aliyun.com/ ## 技术栈 ### 后端 - **框架**: Spring Boot 3.x - **ORM**: Spring Data JPA - **安全**: Spring Security - **数据库**: MySQL - **文档**: Swagger (OpenAPI 3.0) - **测试**: JUnit 5 + Mockito - **构建**: Maven ### 前端 - **框架**: Vue.js 2.x - **路由**: Vue Router - **HTTP**: Axios - **UI**: Element UI ### AI 服务 - **模型**: 阿里云通义千问 - **HTTP**: OkHttp - **JSON**: Gson ## 项目结构 ``` elm-springboot-vue/ ├── src/ │ ├── main/ │ │ ├── java/cn/edu/tju/ │ │ │ ├── core/ # 核心模块 │ │ │ │ ├── model/ # 基础实体 │ │ │ │ └── security/ # 安全认证 │ │ │ └── elm/ # 业务模块 │ │ │ ├── controller/ # REST API │ │ │ ├── service/ # 业务逻辑 │ │ │ ├── model/ # 实体类 │ │ │ ├── repository/ # 数据访问 │ │ │ └── schedule/ # 定时任务 │ │ └── resources/ │ │ ├── application.properties │ │ └── data.sql # 初始化数据 │ └── test/ │ └── java/cn/edu/tju/elm/ │ ├── model/ # 单元测试 │ ├── service/ # 服务测试 │ └── integration/ # 集成测试 ├── elmclient/ # Vue 前端项目 ├── target/ # 构建输出 │ └── myapp-1.0.jar # 可执行 jar ├── 测试说明.md # 测试文档 ├── 答辩速查手册.md # 答辩指南 ├── 虚拟钱包与积分系统实验报告.md # 系统设计文档 ├── MySQL部署指南.md # MySQL 配置 └── README.md # 本文件 ``` ## 文档 - 📖 [测试说明](测试说明.md) - 完整的测试指南和测试用例 - 📖 [答辩速查手册](答辩速查手册.md) - 答辩准备和常见问题 - 📖 [实验报告](虚拟钱包与积分系统实验报告.md) - 详细的系统设计和实现 - 📖 [MySQL 部署指南](MySQL部署指南.md) - MySQL 数据库配置 ## 常见问题 ### Q: 如何跳过测试直接打包? ```bash mvn clean package -DskipTests ``` ### Q: 端口被占用怎么办? 修改 `application.properties`: ```properties server.port=8080 # 改为其他端口 ``` ### Q: 前端无法连接后端? 检查 `elmclient/src/common.js` 中的 API 地址配置。 ### Q: AI 客服无法使用? 1. 检查 API Key 是否正确配置 2. 确认网络可以访问阿里云服务 3. 查看后端日志中的错误信息 ### Q: 测试失败怎么办? ```bash # 查看详细错误信息 mvn test -X # 只运行特定测试 mvn test -Dtest=WalletServiceTest # 查看测试报告 open target/surefire-reports/index.html ``` ## 主要功能演示 ### 钱包充值 ``` POST /api/wallet/recharge { "amount": 1000.00 } ``` ### 积分签到 ``` POST /api/points/sign-in ``` ### AI 客服对话 ``` POST /api/ai/chat { "sessionId": "xxx", "message": "我想吃川菜,预算50元" } ```