HXDS Cloud 是一个完整的代驾平台项目,当前仓库包含:
- 乘客端微信小程序:
hxds-customer-wx - 司机端微信小程序:
hxds-driver-wx - MIS 管理后台前端:
hxds-mis-vue - Java 微服务后端:
hxds/ - 云函数、数据库脚本、Docker 中间件编排
当前仓库内容已经基于你现在这版代码完成升级整理,README 以下内容以当前项目源码为准。
- Java:
21 - Maven 编译插件:
3.15.0 - Spring Boot:
3.3.13 - Spring Cloud:
2023.0.3 - Spring Cloud Alibaba:
2023.0.3.3 - Lombok:
1.18.30 - Hutool:
5.6.3
根据 hxds-mis-vue/package.json:
- Vue:
3.0.3 - Vite:
2.1.5 - Vue Router:
4.0.5 - Element Plus:
1.0.2-beta.42 - ECharts:
5.1.1 - Less:
4.1.1 - Sass:
1.32.8
根据 hxds-customer-wx/package.json 与 hxds-driver-wx/package.json:
- UniApp 项目结构
- uView:
1.0.0 - dayjs:
^1.10.7 - vue-i18n:
^8.20.0
当前项目按代码配置使用 Seata。
从当前代码配置可见,以下服务已存在 Seata 配置:
bff-customerbff-driverhxds-csthxds-drhxds-odrhxds-rulehxds-mis-api
根据 hxds/pom.xml 当前模块定义,后端实际模块如下:
commongatewaybff-customerbff-driverhxds-csthxds-drhxds-odrhxds-snmhxds-mpshxds-rulehxds-nebulahxds-mis-api
hxds-cloud-master
|-- hxds-customer-wx # 乘客端微信小程序(UniApp)
|-- hxds-driver-wx # 司机端微信小程序(UniApp)
|-- hxds-mis-vue # MIS 管理后台前端(Vue 3 + Vite)
|-- hxds/ # Java 微服务后端
| |-- common # 公共模块与通用配置
| |-- gateway # API 网关
| |-- bff-customer # 乘客端 BFF
| |-- bff-driver # 司机端 BFF
| |-- hxds-cst # 乘客服务
| |-- hxds-dr # 司机服务
| |-- hxds-odr # 订单服务
| |-- hxds-snm # 消息通知服务
| |-- hxds-mps # 地图与位置服务
| |-- hxds-rule # 规则引擎服务
| |-- hxds-nebula # GPS / 监控 / 分析服务
| `-- hxds-mis-api # MIS 后台接口服务
|-- db/ # 当前数据库初始化脚本与规则脚本
|-- docker/ # 本地/测试环境中间件与容器编排
|-- cloudfunctions/ # 云函数(当前含 OCR 服务)
`-- images/ # README 截图
- 乘客端下单、叫代驾、支付、评价
- 司机端听单、接单、到达、开始代驾、结束订单
- BFF 聚合接口、统一鉴权、上下游编排
- 地图路线计算、附近司机匹配、位置缓存
- 微信支付、短信、OCR、对象存储
- 规则引擎驱动计费、取消费、奖励、分账
- MIS 管理后台支持司机、订单、评论、券、权限等运营管理
微信小程序 / MIS 前端
->
Gateway
->
bff-customer / bff-driver / hxds-mis-api
->
cst / dr / odr / snm / mps / rule / nebula
->
MySQL / Redis / MongoDB / RabbitMQ / Nacos / MinIO / Seata
| 服务 | 说明 |
|---|---|
gateway |
统一 API 网关入口 |
bff-customer |
乘客端小程序聚合接口 |
bff-driver |
司机端小程序聚合接口 |
hxds-cst |
乘客账号、资料、券等能力 |
hxds-dr |
司机资料、实名、钱包、OCR 等能力 |
hxds-odr |
订单状态机、账单、支付状态流转 |
hxds-snm |
消息通知、消息中心、MQ 消费 |
hxds-mps |
路线计算、司机匹配、位置缓存 |
hxds-rule |
规则引擎与业务规则数据 |
hxds-nebula |
GPS 轨迹、监控数据、分析能力 |
hxds-mis-api |
管理后台接口层 |
当前项目默认依赖以下基础设施:
- MySQL
- Redis
- MongoDB
- RabbitMQ
- Nacos
- MinIO
- Seata
- HBase / Phoenix(仅
hxds-nebula相关场景需要)
参考:
cd hxds
mvn clean package -DskipTests单服务运行示例:
cd hxds/hxds-odr
mvn clean package -DskipTests
java -jar target/hxds-odr-0.0.1-SNAPSHOT.jarcd hxds-mis-vue
npm install
npm run devcd hxds-customer-wx
npm install
cd ../hxds-driver-wx
npm install然后使用 HBuilderX 或微信开发者工具编译 unpackage/dist/dev/mp-weixin/。
当前仓库使用拆分后的业务库 SQL:
db/hxds_cst.sqldb/hxds_dr.sqldb/hxds_odr.sqldb/hxds_rule.sqldb/hxds_mis.sqldb/hxds_vhr.sql
规则脚本:
db/代驾费规则.sqldb/分账规则.sqldb/取消规则.sqldb/奖励规则.sqldb/工作流.sql
GitHub 仓库版本应仅保留云服务、支付、短信、对象存储等配置项的环境变量占位符,不提交真实密钥。
当前代码中的配置文件已经大量采用 ${ENV_NAME:默认值} 这种写法,因此你可以直接通过操作系统环境变量覆盖默认占位符。
例如,在 Windows PowerShell 中可以先设置环境变量,再启动后端:
$env:TENCENT_APP_ID="你的腾讯云AppId"
$env:TENCENT_SECRET_ID="你的腾讯云SecretId"
$env:TENCENT_SECRET_KEY="你的腾讯云SecretKey"
$env:TENCENT_MAP_KEY="你的腾讯地图Key"
$env:WX_APP_ID="你的小程序AppID"
$env:WX_APP_SECRET="你的小程序AppSecret"
$env:WX_MCH_ID="你的微信支付商户号"
$env:WX_PAY_KEY="你的微信支付APIv2或v3相关密钥"
$env:WECHAT_PAY_NOTIFY_URL="https://你的正式域名/hxds-odr/order/receivePayNotify"
$env:SMS_ACCESS_KEY_ID="你的阿里云短信AccessKeyId"
$env:SMS_ACCESS_KEY_SECRET="你的阿里云短信AccessKeySecret"
$env:SMS_SIGN_NAME="你的短信签名"
$env:SMS_TEMPLATE_CODE="你的短信模板编号"
$env:MINIO_ACCESS_KEY="你的MinIO账号"
$env:MINIO_SECRET_KEY="你的MinIO密码"然后再进入对应服务目录启动,例如:
cd hxds
mvn clean package -DskipTests如果你希望长期保留本机环境变量,可以:
- 写入系统环境变量
- 写入用户环境变量
- 在你自己的本地启动脚本中先设置
$env:*再执行mvn或java -jar
常见需要覆盖的变量包括:
TENCENT_APP_IDTENCENT_SECRET_IDTENCENT_SECRET_KEYTENCENT_MAP_KEYWX_APP_IDWX_APP_SECRETWX_MCH_IDWX_PAY_KEYWECHAT_PAY_NOTIFY_URLSMS_ACCESS_KEY_IDSMS_ACCESS_KEY_SECRETSMS_SIGN_NAMESMS_TEMPLATE_CODEMINIO_ACCESS_KEYMINIO_SECRET_KEY