ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

无人值守停车充电系统:三端源码设计与业务闭环拆解

2026/8/31 17:26:41 拓冰建站 浏览量
无人值守停车充电系统:三端源码设计与业务闭环拆解 简介这是一套面向智慧交通领域开发者与高校计算机专业学生的无人值守停车与充电一体化系统完整源码包聚焦停车场数字化升级痛点提供小程序端、Java后端及岗亭终端三端协同解决方案。资源共2000个文件含1753个Java业务逻辑与SDK调用类如HCNetSDK、DeviceMessage等、158个MyBatis映射XML、51个Markdown说明文档及配套配置文件压缩包大小58.66MB技术栈覆盖SpringBootMySQL 5.7Tomcat9UniappjQueryEasyUIBootstrap适配中高级全栈开发学习与二次开发需求。已有64人下载学习可直接部署运行快速掌握车辆进出管理、充电订单调度、月卡与余额体系、收费规则动态配置等核心模块实现逻辑并通过说明文档与结构化代码目录高效理解系统分层设计与物联网设备对接细节。 停车和充电在很多人的认知里是两个独立的系统停车归停车充电归充电最多做个接口对接。但真正把一个无人值守的场站运营起来之后你会发现这套思路根本走不通。用户开车进场、找车位、插枪充电、充满离场整个过程如果还要在两套毫无关联的系统里来回切换体验感会很差运营方也会在账单和异常处理上疲于奔命。我做的这套“无人值守停车、充电系统”是一套完整的三端方案包含小程序端源码、后端源码、岗亭端源码。简单说就是车主用微信小程序完成查车位、充电、缴费、开发票后端负责计费、订单、支付、设备状态这些核心中枢逻辑岗亭端做异常兜底和远程值守处理那些机器搞不定的边界情况。这个项目适合正在做智慧停车平台、充电运营平台或者想从0到1搭建一套无人值守场站方案的技术团队参考也适合想进入这个行业、先搞懂业务闭环的开发者阅读。下面我会从业务模型、技术选型、出入场链路、充电计费、资金对账、岗亭端设计、部署排坑这几个维度把这个系统从头到尾拆开讲清楚。1. 做好无人值守系统前先想明白的业务闭环很多人拿到这类源码第一件事就打开代码目录去找车辆识别、道闸控制的接口。这个顺序其实反了。一个无人值守停车充电系统能不能落地核心不在于代码写得有多花哨而在于你有没有把业务闭环想清楚。代码只是把业务逻辑固化下来而已业务模型错了代码写得再好也是空中楼阁。1.1 车主视角的一小时从找位到离场发生了什么我们用一个最典型的场景来推演整个流程。假设一个车主开车进了一个商业综合体地下一层是停车场其中靠墙一侧装了20个交流充电桩。车主进场之前在小程序里可以看到这个场站还剩多少车位、哪些充电桩空闲、当前电价是多少。到了场站入口车牌识别相机抓拍车牌道闸自动抬起入场记录生成。车主停好车插上充电枪在小程序里扫码桩上的二维码看到当前电价后确认启动充电。这个时候计费引擎要做两件事记录充电订单的开始时间同时联动停车计费逻辑给这辆车打上“充电中”标记。车主上楼逛商场期间通过小程序实时看到充电功率、已充电量、预估金额。充完电后小程序推送通知。车主下来拔枪开走到出口时相机再次识别车牌系统把停车费、充电订单合并计算充电时长内的停车费按免费处理超出的部分正常计费。用户在小程序里一键支付道闸抬起离场完成。整个过程里用户只主动做了“插枪、扫码、确认启动充电、支付”这四件事其他全部由系统自动完成。这就是无人值守系统的核心体验目标把用户的主动操作压缩到最少把系统的自动化覆盖到每个环节。1.2 运营方真正需要的不是“自动化”而是“少纠纷”很多做技术的人搞无人值守系统容易陷入一个执念我要让所有流程都自动化所有操作都机器完成。但实际上运营方最关心的根本不是自动化率有多高而是“每天能不能少接几个投诉电话、少处理几笔纠纷退款”。举一个实际会遇到的情况有辆车入场时车牌识别相机把“A”识别成“4”出场时又识别对了系统就认为这是两辆不同的车。如果这时候车位级管理逻辑不够严谨可能出现这辆车入场记录还在但没有出场记录停车费越积越多的状态。还有一些更隐蔽的问题比如同一个车牌短时间内多次进出是否存在跟车逃费充电桩启动瞬间推送的电量数据是不是准确用户充完电忘了拔枪就开到出口费用到底怎么算。这些场景每一个都是潜在的客诉。所以我在设计这个系统时把“纠纷可追溯”作为第一原则。所有计费过程必须有明细记录所有减免策略必须有日志留痕所有异常事件必须在岗亭端生成可处理的工单。自动化是为了减少人工操作但可追溯、可介入、可解释才是无人值守系统能长期稳定运营的真正基础。1.3 停车与充电为什么要做同一套账如果停车和充电是两套独立系统就会出现一个很常见的问题停车系统只记录车辆进出时间充电系统只记录充电订单两套账各自独立月底运营方根本对不上。比如“充电减免停车费”这个业务场景充电订单显示这辆车充了20度电、减免了2小时停车费但停车系统里这辆车入场出场记录都正常就是费用没减成因为两边没有联动。或者反过来停车费已经减免了但充电订单在退款时又把这部分费用原路退给了用户等于运营方双倍损失。这套系统的账务设计核心是“一辆车一个账单”。不管用户在这个场站里做了几次充电、停了多久车出场时生成唯一结算单停车费和充电费在同一个账单体系内汇总、优惠、支付、退款。代码层面后端用一个账单主表关联停车订单、充电订单、减免记录、支付流水这几个子表任何一步操作都有据可查。这套设计思路也是整个三端源码里最值得仔细研究的地方。2. 三端源码怎么分工技术栈为什么这样选项目标题里明确写了包含小程序源码、后端源码、岗亭端源码这三个部分不是各自孤立的三个项目而是一个完整的闭环。每一端要解决的问题不同所以技术选型和代码组织方式也完全不同。2.1 小程序端定位车主所有操作的入口小程序端是用户和整个系统交互的唯一入口所以它的功能边界要以“用户场景”来划分而不是以“后台功能”来划分。我建议小程序端包含以下核心模块查找场站、查看剩余车位和空闲充电桩、实时电价展示、一键导航、账号登录和手机号绑定、车辆绑定和管理、充电订单启动和停止、充电状态实时展示、停车缴费、发票申请、月卡购买、消息通知。这些模块按产品功能划分和后台的数据模型一一对应。技术选型上我推荐使用原生微信小程序开发或者uni-app。如果项目只做微信生态原生小程序就行包体积小、启动快、兼容性好如果团队考虑后续做App或者支付宝小程序uni-app会更合适。不过我强调一点无论选什么框架小程序端尽量不要放核心业务逻辑它只负责展示和提交操作。计费、优惠计算、订单状态判断这类逻辑必须放在后端理由很简单——小程序的代码跑在用户手机里一旦核心逻辑暴露到客户端不仅容易被逆向分析版本更新也不可控制。前端所有数据都必须以服务端下发的状态为准这一点在源码设计时是作为硬性约束存在的。2.2 后端定位计费、订单、支付、设备状态的中枢后端是整个系统的核心它既要处理业务请求又要对接硬件设备还要做运营管理。我按职责把后端拆成几大模块。用户模块负责账号体系、微信登录、手机号绑定、车辆信息管理。停车模块负责入场、出场、车位管理、道闸控制。充电模块负责充电桩对接、远程启停、状态采集、充电订单管理。计费模块是整个系统的核心负责停车费、电费、服务费、减免规则的统一计算。支付模块负责微信支付/支付宝支付的统一下单、回调、退款、对账。设备模块负责车牌识别相机、道闸、充电桩、地锁、地感线圈等硬件设备的接入和状态监控。消息模块负责小程序订阅消息推送、短信通知。运营模块负责管理后台接口、报表统计、发票管理。这里的技术选型我最终选了Spring Boot作为后端主框架搭配MySQL存业务数据、Redis做缓存和分布式锁、RabbitMQ做事件消息队列。为什么不选Python或者Node.js不是因为它们做不了而是在这个业务场景里Java生态对支付对接、多线程并发、分布式事务、定时任务这些能力的支持是最成熟的。停车充电业务有大量的并发场景比如高峰时段多辆车同时进出场、多个用户同时启动充电Spring Boot的线程模型和事务管理能力能帮我们省掉很多底层的坑。2.3 岗亭端定位不是人肉客服是异常兜底岗亭端这个名字听起来有点传统很多人会问都无人值守了还要岗亭做什么这是对岗亭端最大的误解。岗亭端在无人值守系统里的角色不是收费员坐班而是异常事件处理中心和远程值守工作台。岗亭端的核心功能包括实时监控场站内所有设备状态包括相机、道闸、充电桩、地锁的在线率和运行状态处理识别失败、支付失败、设备离线等异常事件支持远程手动抬杆、手动录入车牌、人工创建订单查看所有订单明细和计费日志处理用户投诉时的退款和补单多场站集中管理一个运营人员可以同时盯多个场站的大屏。技术形态上我用的是B/S架构运营人员打开浏览器就能用不需要装任何客户端。但在设计上有两个点必须留意一是岗亭端要能处理公网断网的情况所以本地会部署一个轻量级的本地服务程序负责相机回调、道闸控制的本地缓存和离线兜底二是岗亭端的事件工单要有独立的持久化存储不能因为系统重启就丢失。3. 车辆出入场与车位识别最容易出问题的链路车辆出入场是每个场站最高频的操作也是无人值守系统里最容易出问题的链路。识别失败、重复入场、跟车逃费、无牌车处理这些问题只要出现一个现场体验就崩了。3.1 车牌识别与道闸联动的基本流程一次完整的入场流程是这样的车辆驶入车道车牌识别相机抓拍并识别车牌把识别结果以HTTP回调的方式推送给后端后端收到回调后先校验这个车牌是否在系统内有有效记录然后判断车辆类型月卡车直接放行临时车落杆前自动生成入场记录白名单车辆比如内部车辆、警车消防车直接放行如果系统判断有异常比如这个车牌还没有出场记录重复入场则不下发开闸指令而是把事件推送到岗亭端由人工介入处理。道闸联动这个环节很多人会忽略一个细节开闸指令的下发时机。如果等到相机完全识别完、后端处理完所有逻辑再开闸车辆早就开到道闸跟前了体验会很差。我建议在相机识别回调到达后的几百毫秒内就完成校验并下发开闸指令同时利用地感线圈或雷达做防砸保护。开闸指令和设备IO的关系也很关键代码里一定要明确道闸控制器的“常开/常闭”逻辑避免出现“给开闸信号反而关闸”的乌龙。3.2 免费识别方案的边界与商业相机的必要车牌识别是整个系统的起点识别率直接决定无人值守的可行性。对于想低成本起步的团队可能会考虑用树莓派加开源OCR方案比如PaddleOCR或者OpenALPR。这种方案在小规模测试环境下是可行的但是要把它放到生产环境我劝你慎重。我实际测试过开源的OCR模型在标准光照、清晰车牌情况下的识别率能到95%以上但一旦遇到夜间强光、雨天水渍、车牌污损、新能源绿牌、挂车黄牌这些情况准确率会断崖式下降。商业车牌识别相机比如臻识、海康、大华这些品牌在识别率上能做到99%以上而且内置了补光灯、偏振镜对逆光、夜间场景做了专门优化识别延迟也低。所以我给出的判断是学习和小规模试用开源方案完全够用但如果你想做一个正经运营的无人值守场站直接上商业车牌识别相机虽然单台设备贵一些但省下来的客诉成本和人工介入成本会远远超过设备差价。3.3 二次入场、无牌车、识别错误这几个坑这几个问题是我在实际项目中踩过最多次的坑源码里每一处对应处理逻辑都值得认真看。第一个是重复入场。有些车辆出场时识别失败系统没有生成出场记录车又开回来了这时候如果直接放行就会出现一个车牌对应两条未完结入场记录的情况。我的处理方式是在后端维护一个车辆在场状态的唯一约束同一车牌在同一场站下最多只能有一条未出场的入场记录如果发现重复入场系统不下发开闸指令而是推送事件到岗亭端由值守人员核验后手动处理。第二个是无牌车和污损车牌。这种车没法靠相机识别常见做法是提供一个入场二维码车主扫码后生成一个临时进场凭证绑定一个临时车牌号比如“无牌-时间戳”。出场时由岗亭端人工核验确认后放行。这个功能必须预留否则没有车牌的车辆进不来也出不去现场会直接堵死。第三个是识别错误造成的计费纠纷。比如入场识别成A车出场识别成B车系统里就会多出一条A车的未离场记录同时B车突然多出一段没有入场记录的停车时长。为了避免这类纠纷我在出场确认环节加了一个人工确认操作当相机识别结果和入场记录匹配度不够高时比如置信度低于某个阈值或者车牌省份缩写对不上系统会默认推送到岗亭端由人工确认实际车牌后再放行。当然如果完全依赖人工无人值守又失去意义所以这个确认操作只在低置信度场景下触发正常识别的车辆还是全自动放行。4. 充电桩对接与计费策略电和停车费怎么算明白充电业务是整个系统的增值部分也是运营方真正的利润来源。但充电计费比停车计费要复杂得多因为它牵扯到电费实时浮动、服务费规则、充电时长减免、占位费管理这些维度。4.1 充电启动与停止的交互流程交流桩和直流桩的协议不同但业务交互流程是一致的。我在系统里对接充电桩时优先用的是OCPP协议因为OCPP对远程启停、状态上报、交易记录这些核心能力定义得比较完善。如果充电桩厂商只提供私有协议Modbus TCP或者MQTT也可以对接但需要在设备接入层做一层协议适配器把不同厂商协议的差异屏蔽在内部。一次完整的充电流程是这样的用户在小程序扫码小程序向后端发起“查询桩状态”请求后端从设备模块读实时状态确认充电桩空闲后返回当前电价和预计费用等信息用户确认启动后端向充电桩下发远程启动指令充电桩返回启动成功后端生成本次充电订单状态为“充电中”。充电过程中后端通过协议周期性采集充电功率、累计电量、电压电流这些数据并通过WebSocket或者订阅消息推送到小程序端展示。停止充电有三种触发方式用户手动停止、SOC充满自动停止、账户余额不足停止。无论哪种方式停止后端都要等待充电桩上报最终交易记录包含最终累计电量然后生成最终金额。4.2 电费服务费的拆分逻辑充电费用由电费和服务费两部分组成。电费是成本价一般按照当地峰谷平电价实时浮动服务费是运营方的毛利通常是固定价格。比如某地当前商业电价为峰段1.2元/度你的服务费定价0.4元/度那么用户实际支付就是1.6元/度。在源码设计里电费不能简单用一个固定值而是要支持电价策略。我在系统里设计了一个电价表按场站、按时间区间配置不同时段的电价。同时服务费也要可以按场站、按桩类型快充/慢充配置。计费引擎在生成充电订单时会根据“充电启动时间”和“充电结束时间”判断落在哪些电价区间然后分段计算电费总额。如果跨了多个电价区间要按区间分别计算后累加不能直接用结束时刻的电价算整单。4.3 充电减免停车费与超时占位费设计停车和充电的联动主要落在两个策略上充电减免停车费和超时占位费。充电减免停车费的逻辑是无人值守停车充电系统的核心卖点。我建议按“免费时长”来设计比如充电满5分钟以上的车辆停车费减免2小时超出部分按正常费率计算。这个减免策略放在计费引擎的“费用减免规则链”里执行顺序是先算基础停车费然后应用充电减免再应用优惠券和月卡减免最后计算实付金额。每一步都要留下减免明细记录方便日后对账和客诉排查。超时占位费解决的是“充满不走”的问题。如果一辆车充满电后长时间占用充电车位运营方的翻台率就上不来。策略是充电订单结束后给用户一个宽限期比如30分钟超过宽限期开始按分钟计收占位费费率可以按正常停车费的倍数来设。这个功能在实际运营中非常重要很多只做停车系统或只做充电系统的产品都忽略了这个需求导致充电车位被长期占用运营效率上不去。5. 支付流程与资金对账无人值守的信任基础无人值守系统最敏感的问题就是钱。用户都不愿意多付一分钱运营方也不愿意少收一分钱。所以支付流程和资金对账是这个系统设计中最需要细致处理的部分。5.1 一次完整的出场扣费要经过几个环节出场的支付流程比入场复杂得多。我设计的是“先结算、后支付、再抬杆”的流程链。车辆到出口相机识别车牌后端根据入场记录查这个车是否有未完结的账单。账单引擎开始结算计算停车时长计算停车费关联这个车牌在本次入场期间的所有充电订单应用充电减免策略生成最终应支付金额。如果应支付金额为0比如月卡车或者减免后正好抵消直接放行。如果金额大于0后端向小程序推送一条待支付消息。用户打开小程序点击支付拉起微信支付。支付成功后微信回调到后端后端更新账单状态为“已支付”然后向道闸下发开闸指令。有些系统为了节省出场时间采用“先抬杆、后扣费”的信用模式开通了微信免密支付的用户车牌识别后直接抬杆后端在后台静默发起扣款。这个体验确实好但对支付异常的处理要求非常高。如果扣款失败车已经走了之后只能通过短信、小程序消息追缴。所以我建议把这个功能作为一个可配置项默认关闭只在信用体系相对完善的场景下开启。5.2 回调幂等、退款和异常金额处理支付回调是整个支付链路里最容易出问题的环节。微信支付回调可能会因为网络原因重复推送如果后端没有做幂等处理同一个订单被更新两次支付状态就会出现严重的数据问题。我的做法是在后端用“订单状态Redis分布式锁”双保险先查订单当前状态如果已经是“已支付”直接返回成功不再执行后续逻辑同时加分布式锁防止并发回调同时进入业务代码。退款场景也比想象中多用户重复支付、充电中途停止后剩余服务费需要退、多扣费需要纠正、客人投诉后运营方主动退款。每一次退款都要生成独立的退款单关联到原支付单并在退款成功后更新账单和充电订单状态。所有退款操作都要记录操作人如果是在岗亭端由运营人员发起的退款便于后续审计。金额计算还有一个大坑浮点精度。停车费、电费、服务费、优惠减免这些字段如果直接用浮点运算会在某些场景下出现0.10.2不等于0.3的问题。我在整套源码里把金额相关的计算全部改为以“分”为单位的整数运算只在最后展示时转成元彻底规避了浮点误差。5.3 日结与对账报表怎么设计每日凌晨系统会跑一个日结对账任务。对账的逻辑是把三份数据做比对平台账单明细、微信支付/支付宝支付账单明细、充电桩上报的交易记录。任何一个订单在这三份数据中不一致都会生成一条差异记录推送到岗亭端和运营后台。具体来说对账分几个层级交易笔数和金额对平逐单核对平台订单状态和支付回调是否一致核对充电订单的最终电量和计费金额是否和充电桩上报的交易记录一致核对停车订单的出入场记录和时间是否连续完整。如果有不一致系统会标记异常运营人员可以在岗亭端看到差异详情并手动处理。这个日结功能我强烈建议一期就做进去因为它才是无人值守系统长期稳定运营的保障没有对账机制资金漏洞根本发现不了。6. 岗亭端源码的真正价值远程值守与离线兜底岗亭端在整个三端源码里看起来功能最少但恰恰是最能体现“无人值守不是无人管理”这个概念的部分。它承担的是系统的最后一道防线任何自动化流程处理不了的异常最终都会落到岗亭端。6.1 岗亭端的“事件队列”设计我在岗亭端里设计了一个全局事件队列所有异常事件都按统一格式进入这个队列。事件类型包括设备离线相机、道闸、充电桩、识别失败、重复入场、支付超时、车辆滞留超时、充电桩故障、紧急呼叫用户在充电桩上按下SOS按钮、无牌车进场等。每类事件都有独立的优先级和超时提醒机制。比如“设备离线”这类事件优先级最高如果摄像头离线超过5分钟岗亭端大屏会红色告警并播放提示音而“无牌车进场”这类事件只会在待处理列表里显示不需要立刻告警。事件工单支持指派和流转处理完成必须填写处理结果所有操作都有操作日志。这套事件队列机制让一个运营人员可以同时管理10个以上的场站而不需要在每个场站安排驻场人员。6.2 离线场景下如何保证不丢单不逃费公网断网是无人值守系统躲不开的场景。如果整个系统完全依赖云端后端断网就意味着所有车辆进出不了场充电桩也无法启动整个场站直接瘫痪。所以我建议在岗亭端做一层本地服务作用是离线兜底。本地服务会缓存场站的月卡车白名单和收费规则断网时车辆出入场流程由本地服务接管正常开闸、正常生成入场记录。充电桩的启动和停止也由本地服务代理离线期间产生的订单先保存在本地等网络恢复后再把离线期间的数据补传到云端。同时在云端后端做数据校验和幂等处理确保补传的数据不会和云端已有数据冲突。这套架构是无人值守系统在弱网环境下能正常运营的关键强烈建议在源码设计阶段就考虑进去而不是等线上出问题再补救。6.3 远程值守与多场站管理岗亭端的B/S管理界面本质上是一个多场站监控台。场站列表、设备状态、实时事件流、今日营收、充电量、停车量这些指标一屏展示。运营人员点击任意场站可以看到该场站的实时画面需要接入摄像头流、当前在场车辆数、充电桩占用情况、异常事件列表。从商业模式上看这套远程值守能力决定了运营团队的边际成本。一个运营人员盯一个场站人力成本高无人值守就失去了意义但如果一个运营人员能通过岗亭端同时盯多个场站人力成本就大幅摊薄这才是无人值守商业模式能跑通的根本。所以岗亭端在设计之初就是按多场站运营平台来做的而不是单场站管理工具。7. 从源码到上线部署步骤与排坑清单最后说说源码怎么落地上线。很多团队拿到源码第一步就想把所有功能都跑起来结果被环境问题、依赖问题卡住。我建议按照下面这个顺序一步步来能少踩很多坑。7.1 最低成本跑通整个系统的部署结构最低成本的部署结构是这样一台4核8G的Linux云服务器装好Docker和Docker Compose用Docker Compose一键启动MySQL、Redis、RabbitMQ以及Java后端服务和Nginx前端小程序用微信开发者工具直接导入小程序源码把请求地址指向云服务器的HTTPS域名岗亭端在本地的Windows电脑上运行本地服务负责连接道闸控制器和车牌相机。对应的部署顺序是第一步注册小程序账号完成微信认证配置服务器域名第二步部署后端创建MySQL数据库并执行初始化SQL脚本启动Redis和RabbitMQ第三步启动后端服务用Postman或者平台自带的管理后台接口验证登录、场站管理、设备管理这些基础功能第四步用测试车牌数据模拟出入场流程确认道闸联动逻辑正常第五步接入真实充电桩跑通远程启停和状态上报第六步开通微信支付配置支付回调地址最后在岗亭端部署本地服务连接真实设备完成整链路联调。7.2 我踩过的几个坑第一道闸控制器和相机的IO接线逻辑一定要在代码里显式配置。不同品牌的道闸控制器开闸信号可能是常开型也可能是常闭型如果默认值设反了就会出现“程序里下发了开闸指令道闸反而关得更紧”的情况。我因为这个差点把一台道闸电机烧掉后来在设备配置表里加了一个“IO电平极性”字段每个场站单独配置问题才彻底解决。第二充电桩上报的电量数据在启动瞬间经常是0。如果直接把这条数据入库充电订单的首度电费就会出现异常。我后来在设备接入层加了一个数据过滤逻辑启动后前几秒的电量上报不直接入库只作为状态展示等数据稳定后再开始计量。第三微信小程序的手机号授权接口已经变更了老式的“wx.getPhoneNumber”已经不能直接获取手机号现在要通过手机号快速验证组件来获取。如果团队以前没做过微信小程序这块很容易踩坑而且这个接口的申请和审核还需要一定时间建议提前规划。第四金额字段永远用整数类型存储单位是分。这个我在前面提到过但还是要再强调停车充电业务涉及大量金额计算和减免浮点运算的误差在单个订单上可能只差一分钱但到了月度汇总和对账阶段就会变成对不上的大账。7.3 后续可扩展的方向这套系统的架构为后续扩展留了足够的空间。比如对接ETC无感支付在出口设备加一个ETC读头识别到ETC标签后直接扣款抬杆可以进一步提升出场效率。又比如对接政府停车平台把场站余位、订单数据实时上报满足市政统一监管的要求。再比如充电桩聚合目前系统已经抽象了设备协议适配层后续接入更多品牌的充电桩只需要新写对应的适配器不需要改动核心业务逻辑。另外如果运营方有会员体系需求可以在计费引擎的减免规则链上扩展“会员折扣”和“积分抵现”整个减免规则链已经支持了规则的叠加和优先级控制加新规则不需要改核心代码。最后再分享一个我个人的体会。做无人值守停车充电系统真正难的不是代码本身而是把“支付”“计费”“异常处理”这三件事做对。很多项目技术上看着很漂亮一上线就死在账单对不上、客户投诉处理不过来这些细节上。如果你也是一边做系统一边做运营建议先用真实场站的录像和账单把流程完整跑几遍再回到代码上调整你会发现设计思路会完全不一样。本文还有配套的精品资源点击获取