ECSHOP红包类型设计原理
ecshop的促销管理当中有一项名为红包类型,顾名思义,这是创建红包与发放红包给商城网站会员的一项重要促进会员下单到订单成交的功能,商城网站管理员可在后台创建红包,所有的红包类型存储在数据库的pre_bonus_type表中,该表的字段信息带注释如下列出:
从以上各个字段信息可以看到,其中有一个名为send_type的字段需要重点解释下,该字段的作用就是用来指明红包是如何操作发放的,如果该字段的值存储为0,那表示该红包是按会员发放的,也就是说可以将该红包发放到某部分会员(商城网站开发管理员通过网站后台搜索这部分会员),如果该字段的值存储为1,那表示该红包按商品发放,也就是说,只要会员购买了设置的相关商品,且购买时间介于红包发放起始日期和截止日期之间时,商城网站程序就会自动地把红包发放到会员的账户上,会员通过我的红包栏目可查看到赠送的红包,如果该字段的值存储为2,那表示该红包按订单金额发放,也就是说,只要会员购买商品的订单总金额大于等于订单下限,会员就可获得该红包,如果该字段的值存储为3,那表示该红包是线下发放,也就是说,商城网站或企业通过组织线下活动,比如举办的展会有快乐大转盘、抽奖箱等等活动,通过类似的抽奖活动将这些红包券赠送给会员,而拿到红包券的会员在商城网站上下订单时便可使用(通过输入红包券里面的兑换码或序列号进行抵销)。
ECSHOP红包序列号的生成规则
通过仔细阅读ecshop商城网站程序的pre_user_bonus会员红包记录表(已经发送的红包信息)中可以看出,该表里面有一个名为bonus_sn的字段,该字段就是保存着线下红包的兑换码(序列号),而这个兑换码的生成规则是100000拼接0至9999之间的伪随机数,伪随机数不足四位数的使用0字符串向左填充,如下图所示的就是pre_user_bonus会员红包记录表保存线下红包的信息:
可以看到bonus_sn字段保存的值的生成规则
而这样简单的兑换码(序列号)是很容易被暴力破解的,所以,需要进行修改线下红包的兑换码生成格式。