再来一瓶

东方树叶已经两连坠机了,啥都没抽到…

然后突然想到,这个瓶盖是怎么回事呢?有没有可能买之前知道它中不中奖呢,如果是怎么设计?
其实把瓶盖当成一个 token 就行了,只是一个抽奖的资格:

  1. 用户扫描的时候,直接带着这个 token 把请求发到后端;
  2. 如果这个 token 已经被使用过了,那么返回结果;
  3. 如果这个 token 是第一次来,那么调用抽奖逻辑,来判断这个 token 中奖没,然后数据落库,返回结果。

好像瓶盖还有一个校验扫描者是不是瓶盖“拥有者”(第一次提交这个 token 的用户)的逻辑,也在参数里面带上就好了。

为什么不提前计算好 token 是否中奖?没必要。只有在用户扫描了瓶盖的时候,数据库才会生成这一条记录,这样省空间。

举个例子,印了2亿瓶水,只有1000万人扫了,那么就有1.9亿条永远没用的“死数据”,嘿。

周五周五!