背景:
使用小程序的云数据库
业务逻辑:
- 会员生成二维码时,前端生成时间戳1,将该时间戳存储到后台数据库etsa字段
- 商户扫描会员二维码时,前端生成时间戳2,将该时间戳存储到后台数据库etsb字段,同时销毁etsa字段中存储的时间戳(销毁方式,例如:后台给一个随机八位数,前端不知道该随机数)
- 商户在和会员当前确认后,通过页面操作扣除会员积分,扣除积分时需要校验etsb字段存储的时间戳2,扣除完成后需要销毁etsb字段存储的时间戳2(销毁方式,例如:后台给一个随机八位数,前端不知道该随机数)
使用A/B时间戳的好处:
- 会员可以随时更新自己的时间戳1(etsa字段值)
- 会员二维码被扫码后,该二维码立即失效,其他人再扫描也无效,因为后台的时间戳1(etsa字段值)已经被销毁
- 商户扫码后生成自己的时间戳2(etsb字段值),一旦完成操作立即销毁该时间戳2,商户没有办法通过刷新页面不断重复操作,因为后台的时间戳2(etsb字段值)已经被销毁。
说明:
因为云数据库是文件型数据库,etsa,etsb,积分等属性都存储在同一条商户记录中,所以可以通过一条更新语句做到更新。