这是报告!7至8月中旬项目总结!以前的一个全栈负责的小程序项目。18年初的时候,因为一我的设计并搭建设计到前端实现,因此一开始的时候可能对数据库没有什么经验,在改业务的时候,数据库的设计真的是有点头大。还有对于本文不是教你一句一句代码敲出一个项目,而是将项目的思路给你,由你去修改出之后更加适合本身的架构或业务实现思路。前端
这是一个真实的创业项目,不过如今已经结束了,缘由种种······git
因为如今已经终止了,因此也没有在线上运行,因此我就给你们看看大体的UI图github
以上就是基本的业务,其他能够由读者本身发挥web
嗯,直接上一个简易版的图纸spring
一、先后端分离,不论是应用仍是后台数据都是API形式
二、微信与支付宝(app版)都是使用sdk,后期换了GitHub上一些开源工具包、卡包能够作成小系统
三、core,二维码模块,须要针对每台设备作定制生成,后台作了二维码系统,小程序接口有介绍,二维码模式下添加每台机的惟一参数进行数据请求
四、netty与单片机硬件的通讯,TCP/IP协议,自定义通讯规则,帧头+ID+数据类型+内容+CRC16加密串+帧尾,netty作了不少很好封装,须要整理一些思路和实现(具体看本人GitHub项目:UncleCatMySelf/ssmnetty)
五、数据库与缓存Redis,因为单机版,在没有实际用户量要求的状况下,没有使用多余的成本去作分布式、数据库主从库、并发等等
六、Netty的数据操做与数据库有关须要在Future中的线程执行,使用了原生JDBC操做CRUD,没有使用mybatis的spring注入。数据库
接下来我会尽量细讲,可是不是手把手教学(提起这个点是由于有些大学生但愿看的技术型文章内容太丰富了···)小程序
首先,这个有区别与电商类应用,这里没有很明显的商品与库存的概念,由于尽管是ISBN相同的一本书,它们投放的(书柜)箱子能够是不同的,用户拿到手的书本即便名字内容同样,可是它们之间是不对等的,因此每一本书都要有惟一ID,书柜投放的设备也是同样,每生产一台机子,都有惟一ID与通讯ID、并生成对应的二维码,用户扫码进入小程序看到的数据是针对这个书柜的图书segmentfault
个人一个失误,使用的netty5.0版,可是其实5是一个舍弃的版本,可是最后仍是运行正常,不过我的以为若是要使用netty仍是用4主版较好。netty通讯框架对于接入的channel会自动生成id,咱们须要在第一次通讯的接收信息时,校验通讯协议(CRC16加密、帧头、帧尾等)是否正常,若是正常须要本身定义一个相似group的堆去从新存放咱们的合法channel并改它的系统通讯ID,接着须要作什么数据操做,相似开锁、设备报警等信息就future中处理,若是涉及数据库的操做,则用JDBC。后端
对于这个模块想说的甚少,押金就是一个判断校验,有作过微信支付的朋友均可以作出来,何况如今Github上有挺多资源了。月卡、季卡我没有设计的很好,不是一个模块(详见个人另外一文章:真实项目之【邀请码活动模块】实现思路),而是一个和系统一块儿的功能代码,很庆幸在以后我从新作了修改,设计为系统模块。api
对于API的返回规范ResultVO、与定制ResultVOUtil(success、error)等api返回协议、Exception全局监控、API拦截权限、后台增删改查数据校验、系统日志等等细节,这里不作一一讲解,有web开发经验的都有一些了解了。
最后,因为项目中止了,我不能给你们看实际产品效果,可是上线一个月的阶段功能均正常,如下是项目的代码目录,均为本人手敲、(摸索)设计完成。
若是有你有帮助,欢迎关注本人技术公众号或者点赞本文,谢谢。