美文网首页
楚币红包分析

楚币红包分析

作者: 金星show | 来源:发表于2019-03-18 09:48 被阅读0次

    基于自己的一个楚币来分享楚币红包供别人领取。
    1、创建楚币
    注意细节:①设定创建楚币的数量,即抢红包的人数,一般不要太多;
    ②原始优惠券的信息,比如这里是无条件券可以分享多人,满减券||退款补偿券(且支持分享)的情况,仅限单人分享,当前优惠券未使用;
    ③分享楚币面额限定,如果是按整元处理,判断一下总额度;
    ④创建楚币的基础信息入库存储,根据拆分红包的类型拆分金额。比如有普通红包均分的,拼手气红包随机分的;
    ⑤如果领取红包的并发很高,这里可以在创建楚币的时候就按规则分配好楚币,分别存储在redis和db中,这样领取的时候直接选择一个即可;
    ⑥创建楚币信息redis用hMset 拆分领取楚币列表用zAdd 领取楚币数量用自增set一个最大值,然后decr;
    ⑦还需要注意一点就是异常机制,例如先入库再入redis,中途可能某一环节出错,因此需要多次查询判断。先查询数据库看当前优惠券是否创建过楚币,没创建过就创建,如果有取出唯一标识$coinSn = md5($couponInfo['couponUser']['couponSn']).'_'.$uid.'_'.$couponInfo['couponTemp']['startTime'];,
    然后查看是否有拆分记录,有取出,没有插入。然后楚币基础信息入hash,拆分列表入zadd以及领取数量。
    2、分享楚币,基于创建楚币后的唯一标识coinSn来再次分享给他人进行领取。根据coinSn查询redis是否有楚币信息,没有则查库来hash插入,再查看是否有拆分列表记录,没有则查库插入。领取数量也同理判断一下。(分享还是基于用一份创建的coinSn,另外判断一下分享的有效期和过期时间)
    3、领取楚币。判断当前人是否领取过,获取楚币基础信息,分享人和领取人不可以是同一人,领取时间是否在有效期(领取有效时间,优惠结束时间等)。领取基于领取数量decr得到的数,到集合中取相应位置的值,$location = $this->_redis->decr($key);$this->_redis->zRange('coin_split_list_'.$coinSn,$location,$location,true);
    然后将领取信息存入领取明细集合,入redis(zadd集合 可以按领取时间排序) 入库(领取明细记录),修改领取总人数。 进行发币(发优惠券等操作)
    4、以上过程的redis数据 需要合理的设置expire过期时间。过期后查库即可。

    相关文章

      网友评论

          本文标题:楚币红包分析

          本文链接:https://www.haomeiwen.com/subject/ckqvpqtx.html