SunnyFarm/README.md
2025-09-25 05:52:22 +08:00

351 lines
8.4 KiB
Markdown
Raw 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.

# 🌱 农产品直销平台 (SunnyFarm)
一个基于 Spring Boot + Vue.js + MySQL 的现代化农产品电商平台,支持多角色管理(用户、商家、管理员),提供完整的电商功能包括商品管理、订单处理、支付集成、库存管理等。
## 📋 目录
- [功能特性](#功能特性)
- [技术栈](#技术栈)
- [环境要求](#环境要求)
- [快速开始](#快速开始)
- [配置说明](#配置说明)
- [部署指南](#部署指南)
- [API文档](#api文档)
- [贡献指南](#贡献指南)
## ✨ 功能特性
### 🛒 核心电商功能
- **商品管理**: 分类管理、商品发布、图片上传、库存管理
- **购物车**: 添加商品、数量调整、批量操作
- **订单系统**: 创建订单、支付集成、状态跟踪、物流管理
- **用户系统**: 注册登录、个人中心、收货地址管理
- **评价系统**: 商品评价、商家回复、评分统计
### 👥 多角色支持
- **普通用户**: 浏览商品、下单购买、管理订单
- **商家**: 商品管理、订单处理、销售统计、客服聊天
- **平台管理员**: 用户管理、商家审核、系统配置、数据统计
### 🔧 技术亮点
- **支付集成**: 支付宝沙箱支付,支持异步回调
- **文件存储**: 腾讯云COS + CDN加速
- **缓存优化**: Redis缓存用户会话和购物车数据
- **邮件服务**: 注册验证码、订单通知
- **实时聊天**: 用户与商家在线客服
- **响应式设计**: 支持PC端和移动端访问
## 🛠 技术栈
### 后端技术
- **框架**: Spring Boot 2.7.14
- **安全**: Spring Security + JWT认证
- **数据库**: MySQL 8.0 + MyBatis Plus
- **缓存**: Redis
- **文件存储**: 腾讯云COS
- **支付**: 支付宝开放平台
- **邮件**: Spring Boot Mail
### 前端技术
- **框架**: Vue 3 + Vite
- **UI组件**: Element Plus
- **状态管理**: Pinia
- **路由**: Vue Router 4
- **图表**: ECharts
- **HTTP客户端**: Axios
### 运维部署
- **容器化**: Docker + Docker Compose
- **云服务**: 支持各类云平台部署
- **反向代理**: Nginx
- **进程管理**: PM2可选
## 📋 环境要求
### 开发环境
- **Java**: JDK 8 或以上
- **Node.js**: 16.0 或以上
- **Maven**: 3.6 或以上
- **MySQL**: 8.0 或以上
- **Redis**: 6.0 或以上
### 生产环境
- **服务器**: Linux (推荐 Ubuntu 20.04+)
- **内存**: 建议 2GB 以上
- **存储**: 建议 20GB 以上
- **网络**: 需要公网IP或域名用于支付回调
## 🚀 快速开始
### 1. 克隆项目
```bash
git clone https://git.sq0715.com/qin/SunnyFarm.git
cd SunnyFarm
```
### 2. 配置文件设置
#### 后端配置
复制配置模板并填入你的配置信息:
```bash
# 开发环境配置
cp backend/src/main/resources/application-dev.yml.example backend/src/main/resources/application-dev.yml
# 生产环境配置
cp backend/src/main/resources/application-prod.yml.example backend/src/main/resources/application-prod.yml
```
### 3. 数据库初始化
```bash
# 创建数据库
mysql -u root -p -e "CREATE DATABASE sunnyfarm CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
# 导入数据库结构和初始数据
mysql -u your_username -p sunnyfarm < sql/sunnyfarm.sql
mysql -u your_username -p sunnyfarm < sql/init_inventory.sql
```
### 4. 启动后端服务
```bash
cd backend
mvn clean install
mvn spring-boot:run
```
服务启动后访问: http://localhost:8080/api/init/status
### 5. 启动前端服务
```bash
cd frontend
npm install
npm run dev
```
前端启动后访问: http://localhost:3000
## ⚙️ 配置说明
### 数据库配置
```yaml
spring:
datasource:
url: jdbc:mysql://your-mysql-host:3306/sunnyfarm
username: your-db-username
password: your-db-password
```
### Redis配置
```yaml
spring:
redis:
host: your-redis-host
port: 6379
password: your-redis-password
```
### 邮件服务配置 (QQ邮箱示例)
```yaml
spring:
mail:
host: smtp.qq.com
port: 465
username: your-email@qq.com
password: your-email-auth-code # QQ邮箱授权码
```
### 腾讯云COS配置
```yaml
tencent:
cos:
secret-id: your-tencent-cos-secret-id
secret-key: your-tencent-cos-secret-key
region: ap-guangzhou
bucket: your-bucket-name
```
### 支付宝配置
```yaml
alipay:
app-id: your-alipay-app-id
app-private-key: your-alipay-app-private-key
alipay-public-key: your-alipay-public-key
notify-url: http://your-domain:8080/api/payment/alipay/notify
return-url: http://your-domain:3000/orders?payment=success
```
**重要**: 支付宝回调地址必须是公网可访问的地址不能使用localhost
### JWT配置
```yaml
jwt:
secret: your-jwt-secret-key
expiration: 86400000 # 24小时单位毫秒
```
## 🐳 Docker部署
### 使用Docker Compose部署
```bash
# 构建并启动服务
docker-compose up -d
# 查看服务状态
docker-compose ps
# 查看日志
docker-compose logs -f
```
### 手动Docker部署
```bash
# 构建后端镜像
cd backend
docker build -t sunnyfarm-backend .
# 构建前端镜像
cd ../frontend
docker build -t sunnyfarm-frontend .
# 启动服务
docker run -d -p 8080:8080 --name sunnyfarm-backend sunnyfarm-backend
docker run -d -p 3000:3000 --name sunnyfarm-frontend sunnyfarm-frontend
```
## 🌍 生产环境部署
### 1. 服务器准备
```bash
# 安装基础软件
sudo apt update && sudo apt install -y git docker.io docker-compose nginx
# 启动Docker服务
sudo systemctl start docker
sudo systemctl enable docker
```
### 2. 克隆项目并配置
```bash
git clone https://git.sq0715.com/qin/SunnyFarm.git
cd SunnyFarm
# 配置生产环境文件
cp backend/src/main/resources/application-prod.yml.example backend/src/main/resources/application-prod.yml
# 编辑配置文件,填入生产环境配置信息
vim backend/src/main/resources/application-prod.yml
```
### 3. 部署启动
```bash
# 构建并启动
docker-compose up -d
# 检查服务状态
docker-compose ps
curl http://your-server-ip:8080/api/init/status
```
## 📚 API文档
### 认证接口
| 方法 | 路径 | 说明 |
|------|------|------|
| POST | `/api/user/login` | 用户登录 |
| POST | `/api/user/register` | 用户注册 |
| POST | `/api/merchant/login` | 商家登录 |
| POST | `/api/admin/login` | 管理员登录 |
### 商品接口
| 方法 | 路径 | 说明 |
|------|------|------|
| GET | `/api/product/list` | 商品列表 |
| GET | `/api/product/{id}` | 商品详情 |
| POST | `/api/product/create` | 创建商品(商家) |
| PUT | `/api/product/{id}` | 更新商品(商家) |
### 订单接口
| 方法 | 路径 | 说明 |
|------|------|------|
| POST | `/api/order/create` | 创建订单 |
| GET | `/api/order/list` | 订单列表 |
| GET | `/api/order/{id}` | 订单详情 |
| POST | `/api/order/{id}/pay` | 订单支付 |
## 🎯 默认账号
### 管理员账号
- 用户名: `admin`
- 密码: `admin123`
### 测试商家账号
- 用户名: `merchant`
- 密码: `merchant123`
### 测试用户账号
- 用户名: `user`
- 密码: `user123`
## 📝 开发说明
### 项目结构
```
SunnyFarm/
├── backend/ # 后端Spring Boot项目
│ ├── src/main/java/ # Java源码
│ ├── src/main/resources/ # 配置文件
│ └── pom.xml # Maven配置
├── frontend/ # 前端Vue项目
│ ├── src/ # Vue源码
│ ├── public/ # 静态资源
│ └── package.json # NPM配置
├── sql/ # 数据库脚本
├── docker-compose.yml # Docker编排
└── README.md # 项目文档
```
### 开发规范
- 代码格式化: 使用项目配置的格式化规则
- 提交规范: 使用语义化提交信息
- 分支管理: 使用Git Flow工作流
- 代码审查: 重要功能需要代码审查
## 🤝 贡献指南
1. Fork本项目
2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
4. 推送分支 (`git push origin feature/AmazingFeature`)
5. 创建Pull Request
## 📄 许可证
本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情
## 📞 联系方式
- 项目地址: https://git.sq0715.com/qin/SunnyFarm
- 问题反馈: 请在GitHub Issues中提交
- 邮箱联系: 852326703@qq.com
## 🙏 致谢
感谢所有为本项目做出贡献的开发者们!
---
**注意**: 本项目仅供学习和研究使用,请勿用于商业用途。使用前请确保遵守相关法律法规。