订单系统是整个平台的独立的核心业务流程,它本身并不复杂,最初的原始需求如下:
1.用户打开app,登录进入主界面。
2.点击扫码,扫码摇摇车身上的二维码。
3.app显示扣费,摇摇启动。
4.用户订单中心显示消费明细,商家订单中心显示收入明细。
长期写代码形成的思维习惯,脑袋里面立马意淫起来,浮现出一幅画面:
路边有辆摇摇车,用户张三打开app,迫不及待的扫码摇摇车,系统提示,未登录,张三输入手机号码和密码,登录成功,可以扫码了,这个时候系统又提示钱不够,张三只能通过app充值,充值成功后,继续扫码摇摇车,终于app提示扫码成功,消费1元,1秒钟后,摇摇启动了,用户可以在用户中心看到每次都消费明细,商家可以通过微信登录商家中心,查看每天都收入,到达一定的资金量后,可以申请提现。
从这个需求里面,大概知道一个整体流程应该怎么走,下面要做到就是根据具体的业务场景做功能设计,依然是程序员的惯性思维首先想到的是: 用户点击扫码摇摇车,然后摇摇车启动这个过程怎么交互?
其实我前面有说到过,摇摇车信号启动这个过程,已经有人在研究并打通,软件这边只需要发送相关协议即可。由于硬件这边是C语言,两边的通信采用什么方式需要考虑。当然,物联网项目现在也比较成熟,相关的解决方案也大把,我们用的是阿里云的平台,阿里云这边已经提供物联网套件的整个解决方案。我们采用的MQTT协议作为软件和硬件的一个交互中心,光听MQTT名字就大概知道MQTT属于消息中间件了,它和传统的MQ系列产品(如RabbitMQ,ActiveMQ等)稍微不一样,MQTT协议是为大量计算能力有限,且工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议,主要用于小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量,像摇摇车(摇摇车身上装了个智能盒子,盒子里面有个2G流量卡,盒子发信号给摇摇车)这里面用的就是2G的流量卡这种业务就非常适合这种。
大概的通信过程就是如此简单: 软件应用层发送协议