跳到主要内容
弗美科技
技术分享

二维码盘点那批设备,扫码接口踩的坑

哈尔滨工程大学实验室台账二期,给 43 台设备贴二维码做扫码盘点。批量生成时把自增 id 编进了 URL,结果序号能被猜出来;改成随机 token 再映射。另外踩了微信扫一扫截断参数、旧标签重复打印、地下室没信号要离线补传三个坑。

2020年10月15日二维码台账踩坑记录

实验室台账二期,43 台设备,每台贴一张二维码,管理员拿手机扫了就能进详情页、记一次盘点。听起来半天的事,前后折腾了一周。记一下踩的坑。

1. 二维码内容用了自增 id

第一版脚本直接把设备的自增 id 编进 URL,比如 /asset/17。打印出来贴上去,客户那边有人扫了一下,顺手把 17 改成 18,另一台设备的信息就出来了。设备信息不算敏感,但「能猜」这件事本身不合适。

改成随机 token,16 位,单独一张 asset_token 表做映射,二维码里只有 token。生成脚本也换成一次性批量出,43 张,文件名带设备名,不暴露序号。

2. 微信扫一扫把参数截了

二维码指向的 URL 带两个参数:token 和来源。用系统相机扫没问题,用微信「扫一扫」打开时,第二个参数偶尔丢。查了半天,是 URL 里的 & 在部分场景下被当成了结束。改成只留一个 token,来源靠服务端按 token 查,参数从两个减到一个。

3. 旧标签没作废,重复打印

第一批标签贴到一半发现贴错了一台,补打了一张,旧的那张没撕干净。结果同一台设备在盘点表里出现两次。后来给 token 加了状态字段,作废的扫码直接提示「标签已失效」,盘点记录也按 asset_id 加了唯一索引,一天一次。

4. 地下室没信号

有一间实验室在楼下,手机基本没网。管理员扫完页面打不开,回来也就忘了。改成扫码后先把记录存在浏览器 localStorage,页面检测到有网再自动补传,补传带一个客户端生成的 uuid,服务端按 uuid 去重。那次补上来 7 条,都是同一天的。

5. 导出还是得能打印

盘点完客户要一张纸质的表签字存档。我们做了个导出,A4 竖版,一列设备名、一列编号、一列盘点状态、一列备注,43 行刚好两页。字号特意调到 10 号,太小签字看不清。

收尾

最后 43 台全扫完,系统里比台账多了 1 台,是一台早就报废没销账的离心机。管设备的老师拿着那张纸质表去办了销账,跟系统没关系。

那批作废的标签我们留了一叠,现在还放在光谷办公室的抽屉里。

商务咨询 · 免费初步沟通

需要针对你的场景给个建议?

把业务背景和当前系统情况告诉我们,我们会给出可执行的思路。

在线留言

周一至周五 9:00–18:00 · 工作日 9:00–18:00 响应,留言会在一个工作日内回复。

商务微信
商务微信二维码

扫一扫,加商务微信咨询服务与方案报价

或填写需求表单