# 风七六本地生活服务平台








**风七六本地生活服务平台 - 面向本地生活服务的一站式解决方案**
*外卖系统 · 商家入驻 · 骑手配送 · 支付分账 · 地理围栏*
---
## 目录
- [项目简介](#项目简介)
- [技术栈](#技术栈)
- [微服务模块](#微服务模块)
- [快速开始](#快速开始)
- [部署指南](#部署指南)
- [代码规范](#代码规范)
- [功能特性](#功能特性)
- [数据库设计](#数据库设计)
- [API文档](#api文档)
- [故障排查](#故障排查)
- [安全说明](#安全说明)
- [贡献指南](#贡献指南)
- [版权声明](#版权声明)
---
## 项目简介
风七六本地生活服务平台是一个完整的本地生活服务解决方案,提供以下核心功能:
- **外卖系统**:用户下单、商家接单、骑手配送全流程
- **商家管理**:商家入驻、商品管理、订单处理、数据分析
- **骑手配送**:实时派单、路径规划、轨迹追踪
- **支付分账**:微信/支付宝支付、建行分账
- **营销工具**:优惠券、满减活动、会员体系
- **地理围栏**:电子围栏、骑手定位、超时预警
### 公司信息
| 信息项 | 内容 |
|-------|---------------------------|
| 公司名称 | 大连风中行科技服务有限公司 |
| 平台名称 | 风七六本地生活服务平台 |
| 注册商标 | 风七六 |
| 公司法人 | 叶常青 |
| 项目负责人 | 叶常青 |
| 联系电话 | 15609857121 |
| 客服电话 | 0411-89704317 |
| 公司邮箱 | fengqiliu_dl@163.com |
| 技术邮箱 | fengqiliu_js@163.com |
| 办公地址 | 辽宁省大连市庄河市新华街道永兴街工农1号 |
---
## 技术栈
### 后端技术基线
| 类别 | 技术 | 版本号 |
|-------|---------------|---------|
| 基础框架 | JDK | 21 |
| Web框架 | Spring Boot | 3.2.5 |
| 微服务框架 | Spring Cloud | 2023.0 |
| 微服务组件 | Spring Cloud Alibaba | 2023.0.1.2 |
| 构建工具 | Apache Maven | 3.9.6 |
| Java版本 | Java | 21 LTS |
### 中间件与存储
| 类别 | 技术 | 版本号 |
|------|------------|-------|
| 注册中心 | Alibaba Nacos | 2.3.0 |
| 消息队列 | Apache RocketMQ | 5.1.0 |
| 主数据库 | MariaDB | 11.3 |
| 缓存数据库 | Redis | 7.2 |
| 分布式锁 | Redis | 7.2 |
| 对象存储 | MinIO | RELEASE.2024-01 |
### 网关与容器
| 类别 | 技术 | 版本号 |
|------|-------------|-------|
| API网关 | Kong Gateway | 3.5 |
| 容器引擎 | Podman | 4.0+ |
| 编排工具 | Podman Compose | 2.0+ |
| 反向代理 | Nginx | 1.25 |
### 前端技术
| 类别 | 技术 | 版本号 |
|------|----------------|---------|
| 用户端App | Flutter | 3.19+ |
| 骑手端App | Flutter | 3.19+ |
| 商家管理端 | Vue3 + Vite | 3.4+ |
| 平台管理端 | Vue3 + Vite | 3.4+ |
| 移动端UI | Material Design 3 | - |
| Web UI | Element Plus | 2.5+ |
### 质量工具与DevOps
| 类别 | 技术 | 版本号 |
|---------|-----------------|---------|
| 代码质量 | SonarQube | 9.9 LTS |
| 代码检查 | PMD | 6.55.0 |
| 代码风格 | Checkstyle | 10.18.1 |
| 单元测试 | JUnit 5 + Mockito | - |
| 覆盖率工具 | JaCoCo | 0.8.11 |
| 提交校验 | Husky + Commitlint | 9.0+ |
| 敏感信息扫描 | Gitleaks | 8.18+ |
| CI/CD | Jenkins | 2.440+ |
| 容器镜像仓库 | 阿里云ACR | - |
---
## 微服务模块
### 后端微服务清单
| 模块 | 端口 | 注册名称 | 职责说明 |
|----------------|----|-------------------|-------------------------|
| api-gateway | 8089 | fzx-api-gateway | 统一API网关,请求路由、鉴权、限流 |
| auth-service | 8090 | fzx-auth-service | 用户认证、令牌颁发、OAuth2服务 |
| user-service | 8091 | fzx-user-service | 用户注册登录、个人信息、会员体系 |
| merchant-service | 8092 | fzx-merchant-service | 商家入驻、商户信息、商品管理 |
| order-service | 8093 | fzx-order-service | 订单创建、状态流转、支付回调 |
| rider-service | 8094 | fzx-rider-service | 骑手管理、派单调度、配送轨迹 |
| product-service | 8095 | fzx-product-service | 商品管理、分类、库存、评价 |
| map-service | 8096 | fzx-map-service | 地图服务、距离计算、地理围栏 |
| marketing-service | 8097 | fzx-marketing-service | 优惠券、活动、满减、积分营销 |
| upload-service | 8098 | fzx-upload-service | 文件上传、图片处理、OSS对接 |
| platform-service | 8099 | fzx-platform-service | 平台运营、数据统计、配置管理 |
| common-service | 8090+ | fzx-common-service | 公共工具类、异常处理、通用DTO |
### 前端应用清单
| 应用 | 技术栈 | 访问路径 | 说明 |
|-------------|-------------|---------------|----------|
| 用户端App | Flutter | /user | C端用户下单 |
| 骑手端App | Flutter | /rider | 配送员接单 |
| 商家Web管理端 | Vue3 | /merchant | 商家后台管理 |
| 平台Web管理端 | Vue3 | /platform | 平台运营后台 |
| 官方网站 | Vue3 | /official | 官网展示 |
### 基础设施目录
| 目录 | 说明 |
|------------------|-------------------|
| infrastructure/compose | Podman Compose编排配置 |
| infrastructure/config | 服务配置模板 |
| infrastructure/database | 数据库初始化脚本 |
| infrastructure/scripts | 部署脚本 |
| deploy/k8s | Kubernetes部署配置 |
| deploy/helm | Helm Chart包 |
| scripts | DevOps工具脚本 |
---
## 快速开始
### 1. 环境要求
#### 基础环境
| 要求项 | 最低版本 | 推荐版本 | 说明 |
|-------------|---------|---------|-----------|
| 操作系统 | Windows 10+ | Windows 11 | 支持Linux/macOS |
| 内存 | 16GB | 32GB | 开发环境推荐 |
| 磁盘空间 | 100GB | 200GB | 包含Maven缓存 |
| Podman | 4.0+ | 4.9+ | 容器引擎 |
| Podman Compose | 2.0+ | 2.24+ | 容器编排 |
| Maven | 3.9+ | 3.9.6 | Java构建工具 |
| JDK | 21 | 21.0.2 | 必须LTS版本 |
#### 前端开发环境(可选)
| 要求项 | 最低版本 | 推荐版本 | 说明 |
|---------|-------|-------|------|
| Node.js | 18+ | 20 LTS | 前端构建 |
| npm | 9+ | 10+ | 包管理器 |
### 2. 环境配置
```bash
# 1. 克隆代码仓库
git clone https://codeup.aliyun.com/69c68bacfa2a62bc85952a67/FzxBdsh.git
cd FzxBDSH
# 2. 复制环境变量配置
cd env
cp .env.example .env
# 3. 编辑 .env 文件,配置必要的环境变量
# 必须配置项:
# - NACOS_SERVER_ADDR: Nacos服务地址
# - DB_HOST/DB_PORT/DB_NAME/DB_USER/DB_PASSWORD: 数据库连接
# - REDIS_HOST/REDIS_PORT: Redis连接
# - ROCKETMQ_NAMESRV_ADDR: RocketMQ地址
```
### 3. 启动基础设施
```bash
# 进入编排目录
cd infrastructure/compose
# 启动中间件服务(Nacos、MySQL、Redis、RocketMQ)
podman-compose -f podman-compose.infra.yml up -d
# 等待服务就绪(约30秒)
sleep 30
# 验证服务状态
podman-compose -f podman-compose.infra.yml ps
```
### 4. 启动微服务
#### 方式一:Maven批量启动(开发环境)
```bash
# 在项目根目录执行
mvn clean install -DskipTests
# 启动公共服务
cd services/common-service
mvn spring-boot:run &
# 启动其他服务(分别执行)
cd services/api-gateway && mvn spring-boot:run &
cd services/auth-service && mvn spring-boot:run &
# ... 以此类推
```
#### 方式二:Podman Compose一键启动
```bash
# 启动全部服务
cd infrastructure/compose
podman-compose -f podman-compose.local.yml up -d
# 查看服务状态
podman-compose -f podman-compose.local.yml ps
```
#### 方式三:IDE单服务调试
```bash
# 使用IntelliJ IDEA或VSCode
# 1. 导入项目为Maven项目
# 2. 设置运行配置,选择Spring Boot应用
# 3. 配置环境变量和启动参数
# 4. 启动目标服务进行调试
```
### 5. 验证部署
| 服务 | 地址 | 验证方式 |
|--------------|---------------------------|--------------|
| API Gateway | http://localhost:8089 | `curl http://localhost:8089/actuator/health` |
| Nacos控制台 | http://localhost:8848/nacos | 用户名/密码: nacos/nacos |
| Swagger文档 | http://localhost:8089/swagger-ui.html | 浏览器访问 |
| 数据库管理 | http://localhost:8081 | Navicat连接 |
### 6. 默认账号
| 系统 | 账号 | 密码 | 说明 |
|---------|-------------|-------|-------|
| Nacos | nacos | nacos | 注册中心 |
| 平台管理端 | admin | admin123 | 管理员 |
| 商家管理端 | merchant001 | pass123 | 测试商家 |
| 用户端 | 15600000001 | 123456 | 测试用户 |
---
## 部署指南
### 环境说明
本项目采用**单ECS分时部署**策略,通过环境变量区分不同部署环境:
| 环境 | 用途 | 配置特点 |
|------|---------|-------------------|
| 开发环境 | 本地开发调试 | 详细日志、调试模式 |
| 测试环境 | 功能测试 | 模拟数据、部分监控 |
| 预发环境 | 上线前验证 | 真实数据脱敏、全量监控 |
| 生产环境 | 正式运营 | 最小日志、完整监控、安全加固 |
### Jenkins CI/CD流程
```groovy
// Jenkins Pipeline伪代码
pipeline {
stages {
stage('Checkout') {
steps { git branch: 'develop', url: '...' }
}
stage('Build') {
steps { sh 'mvn clean package -DskipTests' }
}
stage('Code Quality') {
steps {
sh 'mvn sonar:sonar'
sh 'mvn checkstyle:check pmd:pmd spotbugs:check'
}
}
stage('Test') {
steps { sh 'mvn test' }
}
stage('Docker Build') {
steps { sh 'podman build -t fzx-app:${TAG} .' }
}
stage('Push Image') {
steps { sh 'podman push registry.aliyun.com/fzx-app:${TAG}' }
}
stage('Deploy') {
steps { ssh host: 'prod-server', script: 'deploy.sh ${TAG}' }
}
}
}
```
### 版本号管理
采用**Git语义化版本**(SemVer):
```
版本格式:v{MAJOR}.{MINOR}.{PATCH}
示例:v1.0.0, v1.1.0, v2.0.0
版本计算规则:
- MAJOR: 重大架构变更、不兼容API变更
- MINOR: 新增功能、向后兼容的功能变更
- PATCH: Bug修复、文档更新、构建脚本调整
```
### 镜像推送
```bash
# 登录阿里云容器镜像服务
podman login --username=your-username registry.aliyun.com
# 构建并推送
podman build -t registry.aliyun.com/fzx-platform/service-name:v1.0.0 .
podman push registry.aliyun.com/fzx-platform/service-name:v1.0.0
```
### 服务器部署
```bash
# 连接到生产服务器
ssh deploy@your-server-ip
# 拉取最新镜像
podman pull registry.aliyun.com/fzx-platform/service-name:v1.0.0
# 执行滚动更新
cd /opt/fzx-deploy
./deploy.sh service-name v1.0.0
# 验证部署
curl http://localhost:{port}/actuator/health
```
---
## 代码规范
### Git分支规范
```
main (保护分支) ←─── 仅接受release分支合并
└── develop ←─── 开发主分支
├── feature/FZX-xxx-功能描述
├── fix/FZX-xxx-问题描述
├── refactor/FZX-xxx-重构内容
└── hotfix/FZX-xxx-紧急修复
```
### 提交信息格式
```
():
```
**Type类型**:
| 类型 | 说明 |
|-------|-------------|
| feat | 新功能 |
| fix | 修复Bug |
| docs | 文档更新 |
| style | 代码格式调整(不影响功能) |
| refactor | 代码重构 |
| perf | 性能优化 |
| test | 测试相关 |
| chore | 构建/工具变动 |
| ci | CI/CD配置 |
| security | 安全修复 |
**示例**:
```
feat(order): 添加订单超时自动取消功能
- 实现订单超时检测定时任务
- 添加订单状态机转换规则
- 集成延迟消息队列处理
- 添加相关单元测试
```
### 代码质量要求
| 检查工具 | 规则集 | 强制级别 |
|---------|------------------|------|
| Checkstyle | 阿里Java开发手册 | 警告 |
| PMD | 基本代码风格+安全规则 | 警告 |
| SpotBugs | Bug检测 | 错误 |
| SonarQube | Quality Gate B+ | 阻塞 |
### 敏感信息管控
- **禁止**:在代码中硬编码密码、密钥、Token
- **必须**:所有敏感信息放入`.env`文件
- **必须**:运行`gitleaks detect`扫描后再提交
- **必须**:`.env`文件不提交到版本库
---
## 功能特性
### 核心业务功能
| 模块 | 功能清单 |
|----------|----------------------------------------|
| 用户模块 | 手机号注册登录、密码找回、个人信息管理、会员等级、积分体系 |
| 商家模块 | 商家入驻申请、资质审核、店铺管理、商品上下架、营业时间设置 |
| 订单模块 | 下单支付、订单取消、订单退款、订单详情、订单历史 |
| 配送模块 | 智能派单、骑手接单、实时轨迹、超时预警、配送评价 |
| 支付模块 | 微信支付、支付宝支付、建行支付、分账结算 |
| 营销模块 | 优惠券领取、满减活动、限时折扣、新用户礼包 |
| 地图模块 | 地址解析、距离计算、骑手定位、电子围栏 |
| 内容审核模块 | 敏感词过滤、图片审核、内容举报 |
### 技术特性
- **高可用**:服务多实例部署、自动故障转移
- **可扩展**:微服务水平扩展、数据库读写分离
- **安全**:JWT认证、RBAC权限、数据加密
- **可观测**:全链路追踪、统一日志、Metrics监控
- **自动化**:CI/CD流水线、一键部署回滚
---
## 数据库设计
### 库拆分策略
```
fzx_user # 用户相关表
fzx_merchant # 商家相关表
fzx_order # 订单相关表
fzx_product # 商品相关表
fzx_marketing # 营销相关表
fzx_system # 系统配置表
```
### 分表策略
| 表类型 | 策略 | 说明 |
|----------|--------|-----------------|
| 订单表 | 按月分表 | fzx_order_YYYYMM |
| 交易记录表 | 按月分表 | fzx_transaction_YYYYMM |
| 日志表 | 按天分表 | 系统自动归档清理 |
### 字符集约束
```sql
-- 所有表必须使用utf8mb4字符集
CREATE TABLE example (
...
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- 表情符号支持
ALTER TABLE example CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
```
---
## API文档
### Swagger访问
部署后访问:`http://{网关地址}/swagger-ui.html`
### 接口规范
| 规范 | 说明 |
|--------|-----------------|
| 协议 | HTTPS优先 |
| 数据格式 | JSON |
| 字符编码 | UTF-8 |
| 认证方式 | Bearer Token (JWT) |
| 分页方式 | Page/Size |
| 时间格式 | ISO 8601 |
### 通用响应格式
```json
{
"code": 200,
"message": "success",
"data": { ... },
"timestamp": "2026-06-15T10:30:00Z"
}
```
---
## 故障排查
### 常见问题与解决方案
#### 1. Nacos注册失败
```bash
# 症状:服务无法注册到Nacos
# 检查1:Nacos服务是否启动
podman ps | grep nacos
# 检查2:网络连通性
curl http://localhost:8848/nacos/v1/console/health
# 检查3:配置是否正确
grep NACOS /opt/fzx/.env
```
#### 2. 数据库连接失败
```bash
# 症状:应用启动报错 Unable to connect to database
# 检查1:数据库服务状态
podman ps | grep mariadb
# 检查2:端口监听
netstat -tlnp | grep 3306
# 检查3:连接测试
mysql -h localhost -u root -p -e "SELECT 1"
```
#### 3. RocketMQ连接异常
```bash
# 症状:消息发送/消费失败
# 检查1:NameServer状态
curl http://localhost:9876/namesrv/health
# 检查2:Broker状态
podman exec mqbroker sh mqadmin clusterList -n localhost:9876
```
#### 4. 容器端口冲突
```bash
# 症状:podman-compose启动失败 Port is already allocated
# 解决:停止占用端口的容器
podman ps -a | grep :8080
podman stop {container_id}
```
#### 5. 仓库认证失败
```bash
# 症状:podman pull/push 401 Unauthorized
# 解决:重新登录
podman logout registry.aliyun.com
podman login --username=your-username registry.aliyun.com
```
---
## 安全说明
### 数据安全
- 用户密码使用BCrypt加密存储
- 敏感数据(身份证、银行卡号)加密存储
- 支付相关数据不得落日志
### 接口安全
- 所有API需认证访问
- 敏感接口需二次验证
- 防止SQL注入、XSS攻击
### 密钥管理
- 生产环境密钥由配置中心统一管理
- 禁止在代码仓库中存储明文密钥
- 定期轮换访问密钥
---
## 贡献指南
### Pull Request流程
1. **Fork仓库**:从主仓库Fork到个人账户
2. **创建分支**:基于`develop`创建功能分支
3. **开发调试**:完成功能开发和单元测试
4. **提交代码**:遵循commit规范提交
5. **创建PR**:描述变更内容和测试结果
6. **代码审查**:等待维护者审查通过
7. **合并上线**:审查通过后合并到`develop`
### 代码审查标准
- [ ] 代码符合Checkstyle规范
- [ ] 有必要的单元测试覆盖
- [ ] 无敏感信息泄露
- [ ] 无安全漏洞
- [ ] 文档已更新(如需要)
---
## 版权声明
### 软件著作权
| 项目名称 | 登记号 | 权利人 |
|-----------------------|--------|---------------------|
| 风七六本地生活服务平台软件 | 待登记 | 大连风中行科技服务有限公司 |
| 风七六商家管理系统 | 待登记 | 大连风中行科技服务有限公司 |
| 风七六配送调度系统 | 待登记 | 大连风中行科技服务有限公司 |
### 许可证
本项目为**专有软件**,受中华人民共和国著作权法保护。
**未经授权,任何单位或个人不得**:
- 复制、分发、传播本软件
- 修改、翻译本软件
- 商业使用本软件或其衍生产品
### 免责声明
本软件按"原样"提供,不提供任何明示或暗示的保证。在任何情况下,作者或版权持有人均不对因软件或软件使用而导致的任何索赔、损害或其他责任负责。
---
## 联系方式
| 类型 | 内容 |
|--------|----------------------|
| 技术支持 | fengqiliu_js@163.com |
| 商务合作 | fengqiliu_dl@163.com |
| 客服热线 | 0411-89704317 |
| 公司地址 | 辽宁省大连市庄河市新华街道永兴街工农1号 |
---
**© 2024-2026 大连风中行科技服务有限公司 版权所有**