记一次关于本地门禁系统的二次开发(内网穿透+消息推送等)

本文最后更新于2019年10月7日,可能由于时间等因素导致内容失效,请自行辨别或联系作者。

为当地某教育机构的一家分店做关于本地门禁系统的二开,老师介绍的,具体报酬没谈,要是坑我以后就没有以后了…

情况是这样的:用户每次进出,都需要刷卡通过闸机,但坑爹的是,这套系统是单机版的,没有联网的功能,连数据库都是在他们本地的电脑里。现在需要实现一个功能:用户每次进出刷卡之后,需要在手机上进行相关推送,比如:某某某,进入/离开…之类的。

去现场看了一下具体的情况,双方商讨了一波,采用微信模板消息推送这套方案。随后看了一下数据库,sql server 2000…对,就是这个玩意儿,后来坑了我好久…

开始撸代码

框架搭建

没啥好说的,果断springboot,快速,好上手,也好部署,由于是属于“帮忙”性质的(对,所以可能报酬少得可怜),所以我也没打算写的有多好…能偷懒的肯定要偷的

这里最坑的就是数据库了,因为实在是有点老了,网上的教程也不多,以至于我找依赖找了一晚上,不断的尝试,不断的换,第二天才知道,sql server 2000的驱动包必须要用当前这个版本的,后面的2008一系列的驱动都不兼容了…最后下了一个sqljdbc4-3.0.jar,搞定~

微信网页授权

这玩意儿网上代码一大堆,我就不贴了,这块当初我是在慕课网上看七月的教程学的,所以相关代码直接copy,改一下就完事儿了。对于个人来说,如果要使用这套方案,门槛还是有点高的,需要企业的资质,然后再去申请公众号(服务号),个人的话,可以用测试号,申请地址

在本地开发的话,还需要一个内网穿透,如果不想折腾可以直接使用花生壳或者natapp(收费),在甲方提供了服务器的情况下,我就没有用第三方的了,直接搭建了frp进行内网穿透。对了,在开始测试授权之前,需要将ip加入白名单,其次还要将微信提供的txt文件上传到服务器,我是直接部署了nginx,然后将文件传了上去,但这里有个坏处,80端口就被nginx使用了,所以我springboot的端口改为了81,然后在nginx中配置端口转发,监听80端口的请求,如果有请求过来,就转到81的端口。但我感觉这个始终不是一个好办法,不知道还有没有更好的解决方案。

前端输入用户的卡号和姓名,如果和本地数据库的数据匹配,就开始授权,获取openid,然后再把卡号和openid写到本地数据库中,嗯,多一事不如少一事,这里就省了一个外网数据库的部署

微信模板消息推送

同样不贴代码了,网上真的很多啊。用springboot写了一个定时任务,每隔10秒中,执行一次:获取上一个10秒中,数据库中有没有新增闸机开关的记录,如果有,获取,再通过每一条记录的卡号,去找对应的openid,如果绑定了,就开始推送。说实话,这个方法挺笨的,对于目前来说,性能影响不大,但是以后如果甲方需要搞别的事情,这块估计就得想办法改了。我大概看了一下,网上的思路是写个触发器,然后有插入事件,通过触发器,触发外部的脚本,再通过脚本,与程序产生通讯,传入相关的信息;还有干脆用websocket的,没有深入去研究,主要是时间不允许,秋招都还不知道能不能上岸呢

其他

本来老师跟我说,把程序部署到他们自己的电脑上的,这样又问题的话,让他们重启程序就行了,如果后期还需要我们维护的话,就太划不来了。但是,我之前忽略了IP白名单的问题,让他们的电脑IP保持不变我觉得更不现实,所以还是挂到服务器上去吧。

2.0

10.15傍晚,写到凌晨十二点多….到16号晚上才基本搞完,我真的快崩溃了,真个忙真的不好帮啊[aru_15],目前分为了两块,一个客户端,一个服务端,这样能够满足他们其他分店也能用这套推送的方案。客户端配置了双数据源,其中一个是监听本地的数据库,有没有新的闸机事件,如果有,写入到在服务器上的数据库中;服务器上的程序会监听自己的数据库,有没有闸机事件,如果有,去根据事件中的卡号,找到对应人的手机号,再去找有没有绑定微信,从而进行推送。真的好赶啊,实施起来真的各种问题都出现了,由于真的是出于帮忙的性质,所以服务器上的数据增删改以及数据的备份,全部由他们手动进行,真的没这个精力做了,那要做下去,真的就朝着一套系统去做了…

目前正在一个分店进行测试,但愿一切顺利啊~~~

 

10.21更新:暂时安静下来了[aru_7],之前遇到过运行一段时间后mysql连接超时,然后在pom对应的依赖中加上版本号似乎就好了….坐等酬劳到账

11.1更新:又跑了一次现场,对方开始在其他园区部署了,明明详细写了操作文档,非得拉上我,最近还要想办法尽量把数据批量导入到服务器中的数据库去,这种活啊,早知道就不接了,到现在了钱也没有下来。

为TA充电
共{{data.count}}人
人已赞赏
职场经验

成功上岸~记录和总结一下我的秋招

2019-9-24 21:31:51

职场经验

项目开发、自测总结

2020-2-13 20:03:34

3 条回复 A文章作者 M管理员
  1. kith

    就需要这样的教程

  2. 有时候这些恰饭机会蛮浪费时间的,做的东西不深不专业,哎无力吐槽[托腮][偷笑]

    • 哈哈哈哈,是啊,被迫营业也没办法咯。在闲的时候玩玩儿也行的。

个人中心
今日签到
有新私信 私信列表
搜索