在开发停车管理系统时,Web后台(通常用于管理员或运营人员)和小程序前端(用于车主用户)需要紧密配合,通过合理的架构设计实现数据互通、功能互补。以下是两者如何协同工作的详细说明:
一、系统架构概述
+------------------+ +------------------+
| 小程序前端 | ←HTTP→ | Web后台服务 |
| (车主使用) | | (Node.js/Java/ |
| | | Python等) |
+------------------+ +------------------+
↓
+------------------+
| 数据库(MySQL, |
| MongoDB等) |
+------------------+
- Web后台:提供管理界面,支持停车场管理、车位监控、订单统计、用户管理等功能。
- 小程序前端:面向车主,提供车位查询、导航、预约、支付、进出记录查看等功能。
- 后端服务(API):作为中间桥梁,统一处理前后端请求,连接数据库。
二、前后端职责划分
1. 小程序前端(微信小程序)
主要功能:
- 用户登录/注册(微信授权)
- 查看附近停车场、空余车位
- 车位预约与取消
- 扫码入场/离场
- 在线支付停车费
- 查看停车记录、账单
- 实时导航到车位(结合地图API)
技术栈:
- 前端框架:原生小程序 / Taro / Uniapp
- 网络请求:
wx.request()调用后端API - 存储:本地缓存(如用户token、常用地址)
2. Web后台(PC管理端)
主要功能:
- 停车场信息管理(增删改查)
- 车位状态监控(实时显示占用/空闲)
- 订单管理(查看、导出、退款)
- 收益统计报表(日/月/年)
- 用户管理(黑名单、优惠券发放)
- 设备管理(道闸、摄像头、地磁传感器状态)
- 操作日志审计
技术栈:
- 前端:Vue / React / Element UI / Ant Design
- 后端:Spring Boot / Express / Django 等
- 权限控制:RBAC(角色权限管理)
三、前后端如何配合
1. 统一后端API接口
所有数据交互都通过后端提供的RESTful API 或 GraphQL 接口完成。
示例接口:
| 接口 | 方法 | 用途 | 使用方 |
|---|---|---|---|
/api/parking/list |
GET | 获取附近停车场列表 | 小程序 |
/api/parking/detail?id=1 |
GET | 获取停车场详情 | 小程序 |
/api/order/create |
POST | 创建停车订单 | 小程序 |
/api/order/pay |
POST | 支付订单 | 小程序 |
/api/admin/orders |
GET | 获取所有订单(带分页) | Web后台 |
/api/admin/report/daily |
GET | 获取每日收入报表 | Web后台 |
/api/user/blacklist |
POST | 添加黑名单用户 | Web后台 |
✅ 小程序和Web后台共用同一套后端API,避免重复开发。
2. 用户体系统一
- 使用 JWT(JSON Web Token) 实现认证。
- 小程序用户登录后获取 token,后续请求携带 token。
- Web后台管理员也通过 token 验证身份,但角色不同(user vs admin)。
// JWT payload 示例
{
"userId": "u1001",
"role": "user", // 或 "admin"
"exp": 1735689600
}
3. 实时数据同步
- 小程序中“空余车位”需实时更新:
- 方式1:定时轮询(简单,适合低频)
- 方式2:WebSocket 推送(推荐,实时性高)
- Web后台可监听设备上报数据(如地磁传感器),更新数据库并推送给小程序。
4. 支付流程协作
sequenceDiagram
小程序->>后端: 请求生成订单
后端->>数据库: 创建订单(未支付)
后端-->>小程序: 返回订单ID
小程序->>微信支付: 发起支付
微信支付-->>后端: 异步通知支付结果
后端->>数据库: 更新订单状态为“已支付”
后端-->>小程序: 主动查询支付成功
Web后台可查看该订单状态,进行财务对账。
5. 数据共享与权限隔离
- 同一数据库,但通过 角色权限控制 隔离数据访问。
- 普通用户只能查自己的订单。
- 管理员可查全部数据,但敏感操作需二次验证。
四、典型业务流程示例:停车缴费
-
车主进入停车场
- 小程序扫描二维码 → 调用
/api/entry记录入场时间 - 后端写入数据库,状态:
in_parking
- 小程序扫描二维码 → 调用
-
离场时自动计费
- 小程序调用
/api/exit?orderId=xxx→ 后端计算费用 - 返回应付金额,小程序调起微信支付
- 小程序调用
-
支付成功后放行
- 后端收到微信回调 → 更新订单状态 → 通知道闸系统开闸
-
Web后台查看
- 管理员在后台查看该订单:车牌、时间、金额、支付方式等
五、部署建议
| 系统 | 部署方式 | 说明 |
|---|---|---|
| 小程序 | 微信平台审核发布 | 前端代码上传微信 |
| Web后台 | Nginx + Node/Vue | 部署在云服务器,域名绑定 |
| 后端API | Docker + Nginx反向X_X | 支持HTTPS,跨域配置 |
| 数据库 | 云数据库(如RDS) | 定期备份,主从分离 |
六、安全注意事项
- 所有接口启用 HTTPS
- 接口鉴权(JWT + refreshToken)
- 防止刷单:频率限制(如每秒1次)
- 敏感操作日志记录(如删除订单)
- 小程序不暴露私密API密钥(如微信支付key放在后端)
总结
| 项目 | 小程序前端 | Web后台 | 协同方式 |
|---|---|---|---|
| 用户对象 | 车主 | 管理员/运营 | 共享同一系统 |
| 核心功能 | 停车、支付、查询 | 管理、监控、统计 | 通过后端API交互 |
| 数据来源 | 调用API获取 | 调用API获取 | 统一数据库 |
| 实时性要求 | 中高(如车位状态) | 高(监控大屏) | WebSocket / 定时刷新 |
| 开发重点 | 用户体验、交互流畅 | 功能完整、数据准确 | 接口定义清晰,文档同步 |
✅ 最佳实践:前后端分离 + 统一API + 权限控制 + 实时通信
通过合理分工和接口设计,Web后台和小程序前端可以高效协同,构建一个完整的智能停车管理系统。
云小栈