扫描二维码 上传二维码
选择防红平台类型,避免链接被拦截
选择允许访问的平台类型

高效管理优惠券:批量生成工具助你轻松应对

优惠券短链接生成器

批量生成工具:

https://www.suo.run

(免费、快速、安全带绿标)

优惠券短链接分批生成

电商系统通常需要使用优惠券或兑换码等元素,例如:京东电子卡的卡密就是这样的格式,DJZ3-0PLF-C0E8-L0UF。

京东电子卡是实体卡。如果卡密被定期追踪,会造成巨大的损失,因此其生成算法必须是完全随机的。

我们知道大多数编程语言都支持生成随机整数的功能,但无法确保100%的唯一性,所以我们只能接受这一现实。

假设我们可以随机生成不重复的整数,那么如何将其转换为上述“字母+数字”混合字符串形式呢?答案是:36的补码。36的补码的范围是0-9,A-Z(a-z),正好符合需求。



因此,我的方法是使用一个随机函数生成长整形并转换为36的补码,但由于长整形的36补码宽度不足,于是我形成了两条36进制的随机数条纹,并截取其中一部分。

以下是一段PHP代码示例:

function gen_coupon() {
do {
$m = mt_rand(0, PHP_INT_MAX);
$n = mt_rand(0, PHP_INT_MAX);
$m = base_convert($m, 10, 36); // 主随机数
$n = base_convert($n, 10, 36); // 二次随机
$r = substr($m . $n, 0, 16);
} while (strlen($r) != 16);
$r = strtoupper($r);
$r = str_split($r, 4);
$r = implode('-', $r);
return $r;
}

// 冲突率有多高?我已经生成了5000万个优惠券代码,重复了20个,没有问题。

接下来是如何将这些优惠券代码存储到数据库中的问题。由于无法防止重复,但冲突率很低,您不能每次都去数据库查询20条冲突数据吗?

如果批量插入有问题,那么重复的优惠券代码会因为唯一索引错误而停止,我该怎么办?解决方案也很暴力。插入语句使用on duplicate key update语法。当遇到唯一索引冲突时,可以进行无意义的更新:

<img src="https://suo.run/uploads/20251015/39.png" alt="" class="img-fluid" />

sql
INSERT INTO coupons(code)
VALUES ('xxxx-xxxx-xxxx-xxxx')
ON DUPLICATE KEY UPDATE code = 'xxxx-xxxx-xxxx-xxxx';
```



这样可以直接使用MySQL客户端批量导出,也可以使用脚本程序批量导出数据库。

获取优惠券短链接



从数据库中随机获取一张优惠券并不容易。当多个程序同时查询数据库获取优惠券时,每个人都会收到同一张优惠券。显然,锁定数据库是不合理的。

我分享一个低成本的方法:可以将优惠券保存在Redis Set结构中,这样可以保证Key的唯一性,并且支持SPOP命令随机返回和删除一个Key。最终的优惠券领取流程应该是一个执行步骤,先从Redis Set获取优惠券Code,然后再到MySQL中进行操作。

以上就是关于《优惠券短链接批量生成工具》的全部内容了,感兴趣的话可以点击右侧直接使用哦!

在线短链接生成器

https://www.suo.run

(免费、快速、安全带绿标)