一种基于hash算法生成不重复优惠码的方法技术

技术编号:23086023 阅读:19 留言:0更新日期:2020-01-11 01:29
本发明专利技术公开了一种基于hash算法生成不重复优惠码的方法,包括以下步骤:A.获取用户从应用操作界面提交的所需生成优惠码的参数信息;B.接收应用请求信息后,对获取到的参数信息进行预处理;C.计算所述优惠码前缀的长度,将其与所述优惠码长度进行运算,计算出优惠码随机位长度;D.将所述优惠码前缀、优惠码数量、优惠码随机位长度提交给动态字符串生成器进行数据处理,得到最终所需优惠码。本发明专利技术的方法可有效解决优惠码生成方式存在重复率高、长度过长、生成效率低下,以及用户使用不便等问题。

A hash algorithm based method for generating non repeated preferential codes

【技术实现步骤摘要】
一种基于hash算法生成不重复优惠码的方法
本专利技术涉及优惠码生成
,特别涉及一种基于hash算法生成不重复优惠码的方法。
技术介绍
目前,越来越多的互联网应用采用了各式各样的促销方式,而其中以促销码优惠方式极为常见。优惠码的使用给商家带来了收益,同时也给使用者带来了实惠。在这个背景下,消费者在购物中更多考虑获取优惠码来达到低价购物的目的,随着用户群的日益增长,优惠码的使用量不断加大。而目前大部分优惠码生成方式采用在用户侧记录访问和领取情况生成新的优惠码,而此种方式生成的优惠码存在重复率较高的问题。而为了解决此问题,要么将编码的长度增加,这种方式将导致用户输入困难;要么查询数据库已生成的数据去除重复编码,这样当服务器访问人数较多时会导致服务器压力过大,导致用户侧反应延迟,影响用户体验。
技术实现思路
本专利技术的目的是克服上述
技术介绍
中不足,提供一种基于hash算法生成不重复优惠码的方法,可有效解决优惠码生成方式存在重复率高、长度过长、生成效率低下,以及用户使用不便等问题。为了达到上述的技术效果,本专利技术采取以下技术方案:一种基于hash算法生成不重复优惠码的方法,包括以下步骤:A.获取用户从应用操作界面提交的所需生成优惠码的参数信息;其中,所述参数信息至少包含优惠码前缀、优惠码数量、优惠码长度;B.接收应用请求信息后,对获取到的参数信息进行预处理,以保证数据信息有效;C.计算所述优惠码前缀的长度,将其与所述优惠码长度进行运算,计算出优惠码随机位长度;D.将所述优惠码前缀、优惠码数量、优惠码随机位长度提交给动态字符串生成器进行数据处理,得到最终所需优惠码。进一步地,所述步骤B中对参数信息进行预处理时包括:B1.处理优惠码前缀,通过正则匹配字母和数字,使优惠码前缀只包含大小写字母和数字;B2.处理优惠码数量,通过正则匹配数字,使优惠码数量为合法的正整数;B3.处理优惠码长度,使优惠码长度为合法的正整数,且最小值可生成的编码数量符合优惠码数量要求进一步地,所述步骤C中优惠码随机位长度=优惠码长度-优惠码前缀长度。进一步地,所述动态字符串生成器具体对收到的数据进行以下处理:S1.创建随机因子;S2.对所述随机因子进行hash运算得到长度为32个字符的随机码;S3.对所述随机码进行二进制运算得到二进制数据,并使用64个字符来表示所述二进制数据,最终得到一个由64字符表示的字符串;S4.将所述字符串进行处理得到符合要求的优惠码。进一步地,所述步骤S4中具体是对字符串进行以下处理:S4.1.移除字符串中除字母、数字以外的字符,得到字符串B;S4.2.对字符串B进行代码混淆,以降低字符相同率,得到字符串C;S4.3.将字符串C拆分成与传递给动态字符生成器的所述优惠码随机位长度一致的多个字符串D1,D2,…Dn;S4.4.将所述优惠码前缀与得到的多个字符串D1,D2,D3…进行拼接得到最终的优惠码D1’,D2’,…Dn’。进一步地,还包括步骤S5:将得到的优惠码放入散列表,排除可能存在的相同优惠码,得到最终不重复的优惠码。进一步地,还包括步骤S6:重复步骤S1至S5直到生成的优惠码数量达到用户输入的优惠码数量为止。本专利技术与现有技术相比,具有以下的有益效果:本专利技术的基于hash算法生成不重复优惠码的方法,通过对优惠码生成方式的创新,有效避免了优惠码的重复性,并提高了生成唯一编码的效率,有效缩短了优惠码的长度,达到便于用户手动输入的目的。附图说明图1是本专利技术的基于hash算法生成不重复优惠码的方法的流程示意图。具体实施方式下面结合本专利技术的实施例对本专利技术作进一步的阐述和说明。实施例:实施例一:如图1所示,一种基于hash算法生成不重复优惠码的方法,包括以下步骤:步骤1.使用者在操作界面输入优惠码前缀、优惠码数量、优惠码长度等并进行提交。步骤2.获取用户提交的上述所需生成优惠码的参数信息,具体的,获取的参数信息至少应包含优惠码前缀、优惠码数量、优惠码长度。步骤3.接收应用请求信息后,对数据进行预处理,确保优惠码前缀、优惠码数量、优惠码长度符合要求。具体的,本实施例中,对数据进行预处理时具体包括:处理优惠码前缀,以保证优惠码前缀只包含大小写字母和数字,如通过正则匹配字母和数字,如果包含其它字符则返回异常,要求用户重新提交数据。处理优惠码数量,以保证优惠码数量为合法的正整数,如通过正则匹配数字,如果非正整数则返回异常,要求用户重新提交数据。处理优惠码长度,以保证优惠码长度为合法的正整数,并且最小值可生成的编码数量符合优惠码数量要求,如果不符合则返回异常,要求用户重新提交数据。如用若户提交数据优惠码长度为2,优惠码数量为10000,则由于该长度最大可生成数量为64*64=4096,小于需要生成的优惠码数量10000,所以该数据异常,需要用户重新提数据。步骤4.计算优惠码前缀长度,将计算结果与优惠码长度进行运算,计算出优惠码随机位长度。具体的,计算优惠码前缀长度即计算优惠码前缀字符数,如优惠码前缀为CH,则优惠码前缀长度为2;优惠码前缀为CHO,则优惠码前缀长度为3等。将优惠码前缀长度与优惠码长度进行运算具体是将优惠码长度和上述数计算得到的优惠码前缀字符的值进行数学减法运算,得到优惠码随机位长度,即优惠码随机位长度=优惠码长度-优惠码前缀长度。具体如本实施例中,优惠码前缀输入CH,优惠码长度输入值8。则由前述计算规则可知,优惠码前缀值为2;即优惠码随机位长度=8–2=6。步骤5.将优惠码前缀、优惠码数量、优惠码随机位长度传递到动态字符串生成器,得到最终所需优惠码。具体的,本实施例中,动态字符串生成器中具体包括以下操作:步骤5.1.动态字符串生成器创建随机因子。具体的,本实施例中具体是由线性同余发生器通过一个时钟微秒种子产生随机数从而得到随机因子,具体的,在初次调用时最终结果与当前时钟微秒数相关。步骤5.2.对步骤5.1中得到的随机因子进行hash运算得到长度为32个字符的随机码。步骤5.3.对步骤5.2中得到的32字符的随机码进行二进制运算,得到二进制数据,并使用64个字符来表示二进制数据,最终得到一个由64字符表示的字符串。具体的,本实施例中具体为对二进制数据进行处理,每3个字节一组,一共是3x8=24bit划为4组,每组正好6个bit,得到4个数字作为索引,然后查表,获得相应的4个字符,最终得到一个编码后的字符串A;具体的,本实施例中上述查表时所述的表格具体是由大写字母、小写字母、数字以及+和/这64个字符的数组,即['A','B','C',...'a','b','c',...'0','1',...'+','/']。步骤5.4本文档来自技高网...

【技术保护点】
1.一种基于hash算法生成不重复优惠码的方法,其特征在于,包括以下步骤:/nA.获取用户从应用操作界面提交的所需生成优惠码的参数信息;其中,所述参数信息至少包含优惠码前缀、优惠码数量、优惠码长度;/nB.接收应用请求信息后,对获取到的参数信息进行预处理;/nC.计算所述优惠码前缀的长度,将其与所述优惠码长度进行运算,计算出优惠码随机位长度;/nD.将所述优惠码前缀、优惠码数量、优惠码随机位长度提交给动态字符串生成器进行数据处理,得到最终所需优惠码。/n

【技术特征摘要】
1.一种基于hash算法生成不重复优惠码的方法,其特征在于,包括以下步骤:
A.获取用户从应用操作界面提交的所需生成优惠码的参数信息;其中,所述参数信息至少包含优惠码前缀、优惠码数量、优惠码长度;
B.接收应用请求信息后,对获取到的参数信息进行预处理;
C.计算所述优惠码前缀的长度,将其与所述优惠码长度进行运算,计算出优惠码随机位长度;
D.将所述优惠码前缀、优惠码数量、优惠码随机位长度提交给动态字符串生成器进行数据处理,得到最终所需优惠码。


2.根据权利要求1所述的一种基于hash算法生成不重复优惠码的方法,其特征在于,所述步骤B中对参数信息进行预处理时包括:
B1.处理优惠码前缀,通过正则匹配字母和数字,使优惠码前缀只包含大小写字母和数字;
B2.处理优惠码数量,通过正则匹配数字,使优惠码数量为合法的正整数;
B3.处理优惠码长度,使优惠码长度为合法的正整数,且最小值可生成的编码数量符合优惠码数量要求。


3.根据权利要求2所述的一种基于hash算法生成不重复优惠码的方法,其特征在于,所述步骤C中优惠码随机位长度=优惠码长度-优惠码前缀长度。


4.根据权利要求1所述的一种基于hash算法生成不重复优惠码的方法,其特征在于,所述动态字符串生成器具体对收到的数据进行以下处理:<...

【专利技术属性】
技术研发人员:宋亮
申请(专利权)人:四川长虹电器股份有限公司
类型:发明
国别省市:四川;51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1