# 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-01-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 饿了么外卖平台 - 虚拟钱包与积分系统 ## 项目介绍 elm-v2 项目是一个完整的外卖平台系统,包含前后端代码,实现了: - 完整的虚拟钱包系统(充值、提现、支付、透支) - 积分系统(签到、赚取、消费、过期管理) - AI 智能客服(基于阿里云通义千问) - 订单管理、商家管理、优惠券系统等核心功能 ## 核心功能 ### 🎯 虚拟钱包系统 - ✅ 充值功能(满额赠送) - ✅ 提现功能(手续费机制) - ✅ 支付功能(支持透支) - ✅ 冻结/解冻(订单预扣) - ✅ 透支额度管理 - ✅ 透支利息计算(免息期 + 日利率) - ✅ 防薅羊毛机制 - ✅ 并发安全(悲观锁) ### 🎁 积分系统 - ✅ 积分赚取(订单、评论、注册、签到) - ✅ 积分消费(兑换优惠券、补签) - ✅ 积分过期管理(FIFO 策略) - ✅ 连续签到奖励(递增奖励) - ✅ 补签功能 - ✅ 积分规则配置 ### 🤖 AI 智能客服 - ✅ 智能点餐推荐 - ✅ 订单查询 - ✅ 问题解答 - ✅ 多轮对话 - ✅ 上下文记忆 ## 快速开始 ### 环境要求 - 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 ## 数据库 ### H2 内存数据库(默认) - 无需额外安装,开箱即用 - 控制台地址:http://localhost:8080/h2-console/ - 连接信息: - JDBC URL: `jdbc:h2:mem:testdb` - 用户名: `sa` - 密码: (空) ### MySQL(可选) 如需使用 MySQL,请参考 `MySQL部署指南.md` ```bash # 1. 执行数据库脚本 setup-mysql.bat # Windows ./setup-mysql.sh # Linux/Mac # 2. 修改 application.properties # 取消注释 MySQL 配置,注释 H2 配置 ``` ## 测试 ### 运行测试 ```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 - **数据库**: H2 / 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元" } ```