一、立项背景和目标
随着自助服务场景的普及,传统洗车模式存在效率低、成本高、营业时间受限等痛点,辛迪全球自助洗车系统立项旨在通过 “线上 + 线下” 结合的方式,为用户提供 24 小时自助洗车服务,并为运营方搭建数字化管理平台。项目核心目标包括:
- 对用户:实现 “随时洗、便捷付、低成本” 的洗车体验;
- 对运营方:通过后台系统实现门店、设备、订单、用户的一体化管理,同时通过数据大屏可视化运营数据,辅助决策;
- 技术目标:基于 Laravel 框架开发后端,同时适配微信 / 支付宝小程序前端,实现多端数据同步与稳定交互。
二、软件功能、核心功能模块的介绍
该系统分为后端管理平台和小程序前端两大模块,核心功能如下:
后端管理平台:
- 门店管理:支持门店信息(地址、营业时间、设备数量)的新增、编辑、状态监控;
- 设备管理:关联门店设备,实时查看设备空闲 / 使用中状态;
- 订单管理:查询、筛选订单(时间、用户、支付状态等),展示订单金额、支付方式等详情;
- 充值管理:管理用户充值套餐、查看充值记录;
- 用户管理:维护注册用户信息,统计用户增长数据;
- 数据大屏:可视化展示订单趋势、用户占比、充值金额等核心运营数据;
- 系统日志:记录后台操作行为,便于追溯管理。
小程序前端(微信 / 支付宝双端):
- 自助洗车:查看门店列表、设备状态,选择空闲设备后扫码启动洗车;
- 账户管理:查看洗车卡余额、充值、查看个人订单;
- 服务拓展:支持委托保养、代驾等增值服务;
- 活动专区:展示优惠活动、邀请好友领券。
三、业务流程、功能路径描述
- 用户洗车流程:小程序首页→选择最近门店→查看设备状态→点击 “去使用”→扫码启动设备→洗车完成后自动结算(扣减洗车卡余额)→生成订单记录。
- 运营方管理流程:后端登录→门店管理(新增 / 编辑门店)→设备管理(关联门店设备)→订单管理(查看 / 筛选订单)→数据大屏(监控实时运营数据)→用户管理(维护用户信息)。
- 支付与充值流程:小程序 “充值中心”→选择充值套餐→微信 / 支付宝支付→充值记录同步至后端;洗车结算时,自动从洗车卡余额扣减,支付状态同步至订单管理模块。
一、技术栈选择
后端:Laravel 框架(提供 RESTful API、数据库 ORM、权限控制等能力);
前端:微信小程序原生框架 + 支付宝小程序原生框架(适配双端语法差异);
数据库:MySQL(存储门店、设备、订单、用户等数据);
数据可视化:ECharts(后端数据大屏的图表展示)。
二、核心模块实现逻辑
后端接口层(Laravel):
定义接口路由(如/api/stores获取门店列表、/api/orders操作订单);
利用 Laravel 的 Controller 处理请求,Model 层与 MySQL 交互;
通过中间件实现接口权限校验(如后台管理员 token 验证、小程序用户 openid 验证)。
小程序端适配:
微信小程序:调用wx.request请求 Laravel 接口,wx.login获取用户 openid;
支付宝小程序:调用my.request请求接口,my.getAuthCode获取用户信息;
封装通用工具类(如请求工具、存储工具),减少双端代码冗余。
数据同步机制:
小程序端操作(如扫码洗车、充值)实时请求后端接口,更新数据库;
后端数据大屏通过定时请求接口(或 WebSocket)获取实时数据,实现动态刷新。
三、关键功能实现示例
扫码洗车功能:
小程序端调用wx.scanCode(微信)/my.scan(支付宝)扫描设备二维码,获取设备 ID;
请求后端/api/devices/start接口,验证设备状态(是否空闲);
后端修改设备状态为 “使用中”,并生成待结算订单;
洗车完成后,设备触发 “结束” 信号,后端自动计算费用并更新订单状态为 “已完成”。
数据大屏可视化:
后端 Controller 查询订单、用户、充值等数据,处理为 ECharts 所需格式;
前端页面引入 ECharts,通过 AJAX 定时请求接口,更新图表数据。