无存储式优惠券编码方案

代码

代码仓库:地址

代码分支:master

博客:地址

简介

优惠券是常见的营销工具,每逢佳节必有促销活动,有活动就会有优惠券。线下活动通常限量提供优惠券,因此不需要特殊设计,但是互联网环境下,线上活动开展频繁,而且线上活动用户体量要比线下活动大很多,通常以万为单位进行发放,因此需要优化优惠券存储,降低空间成本(互联网活动通常采用广撒网的方式)。这里需要特别注意本文针对的优惠券需求,有以下几个特殊点:

  • 预先生成,在活动正式开始前生成优惠券(生成指的是需要预先知道优惠券活动Id、优惠券面值、优惠券序号,例如活动id为1,面值100,满1000减100,优惠券序号1~1,000,000)
  • 优惠券体量大,以万为单位,通常在10万级别以上

在互联网电商中的优惠券通常不需要预先生成,只需要在用户领取时分配优惠券信息即可,在线下和线上结合使用场景中,预生成方式很实用,在预生成的模式下,如果全量存储优惠券将浪费大量空间,因为优惠券不会100%被使用(瓶装饮料经常会出现输入优惠编码兑换奖品活动)。

需求

线上线下营销需要优惠券功能来支撑,传统的方式是生成优惠券方案,提供以下内容:

  • 活动id
  • 活动名称
  • 优惠券面值
  • 优惠券使用条件
  • 发放条件
  • 发放数量

创建优惠券方案后不会立即生成优惠券,只有当用户领取的时候才会生成用户优惠券记录,这是主流方案,可以避免生成大量优惠券记录,浪费存储空间,但是没办法满足需要预生成的要求。我们需要设置一套优惠券编码方案,既可以满足预生成要求,同时要避免浪费存储空间。

设计思路

预生成的优惠券号通常是一段无规则的字符串,类似于:yuIkJGGS,用户输入优惠编号领取对应的优惠券,yuIkJGGS经过解析可以得到活动id信息,

通过上述分析可以知道,优惠券通过活动id就可以知道优惠券详细信息,为了防止重复使用,我们可以为每一张优惠券设置一个唯一编号,同时为了验证优惠券的有效性,需要添加校验码信息,因此一个优惠券通常有以下字段组成:

  • 活动id
  • 优惠券编号
  • 校验码

我们可以设置一个功能函数:H活动Id,优惠券编号) => code,输入活动Id、优惠券编号参数,输出code,我们将code设置为校验码,H可以是md5、sh

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值