背景
疫情爆发时期, 同乘交通工具会有交叉感染的风险, 我们经常在各主流新闻媒体看到类似「急寻某月某日*车次的乘客」, 另一方面也有不少工具可以提供查询某次交通工具是否发生过疫情的功能, 但是不可能发生疫情的交通班次上的所有乘客都会关注这些信息或主动反复去查询, 这就导致信息不能有效传递给需要的人.
方案
趁着前几天腾讯云云开发组织的一次公益黑客马拉松活动的机会, 我和另一位同事开发一个「同乘码」小程序, 乘客可以在乘坐交通时扫码订阅(登记)对应交通班次的信息, 后期如果有同乘旅客上报或官方公布疫情信息, 小程序会通过微信的消息订阅功能主动向扫过码的乘客发送消息, 实现疫情信息的高效传递.
目前这个小程序已开源, 使用者可以任何方式使用, 源码地址是:
https://gitee.com/tencent_clo...
小程序也已发布, 可以扫以下二维码体验和使用.
功能展示
首页可以查询和订阅, 订阅后还可以分享二维码给同乘的旅客
我的同乘码, 显示已乘坐的交通工具
进入到同乘界面, 有上报和查看是否有疫情的功能, 还可以到成员列表页面, 可以实时看到同乘的旅客, 另外实时留言功能可能实时看到其他人的留言.
HTTP接口说明
小程序可以通过利用云开发提供的HTTP接口进行管理, HTTP接口也是基于云开发的云函数开发, 需要在腾讯云官网的云开发管理页面添加对应的函数, 并开启HTTP访问. 目前接口还没有权限校验功能, 可以在代码里加上一个skey之类来实现.
接口列表:
- sendmsg 给某个乘客发送一条消息, 注意要先在微信管理后台申请好消息模板.
- confirmReport 对某一条用户上报的疫情信息进行确认.
- getReport 获取所有未审核的信息上报列表
- addReport 上报一条官方发布的疫情信息
接口参数可以看源码
源码结构
源码主要分成两部分
- miniprogram目录, 小程序的源码, 与官方默认的代码结构一致.
- cloudfuntion目录, 云函数代码, 使用nodejs实现.
技术架构
云开发的配置
云开发提供了免运维/简化开发的serverless能力,
需要创建集合并建立对应的索引:
roomInfo: 交通工具信息, 需要给key加唯一索引.
report: 疫情上报信息, 需要给roomId加非唯一索引.
member: 同乘用户列表, 需要分别给roomId和openId加非唯一索引.
chatroom: 聊天/留言信息, 需要给groupId加非唯一索引.
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。