需求场景
为注册会员生成独有的邀请码,每个会员一个,不能重复。为了方便传播,邀请码的位数暂定为 5 位,由数字和大写字母组成。
为了防止邀请码重复冲突,我在会员表的邀请码字段上加了个唯一索引。
但是,邀请码是在微信支付成功的回调逻辑里触发的,5位的邀请码,还是存在冲突的可能,可以加了个不断重试的机制。
实现代码
/**
* 生成邀请码
*/
public function gen_invite_code() {
$chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
$res = "";
while (true) {
for ($i = 0; $i < 5; $i++) {
$res .= $chars[mt_rand(0, strlen($chars)-1)];
}
$user = User::where('invite_code', $res)->first();
if (!$user) {
break;
}
}
return $res;
}
微信关注我哦 👍
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式
谈笑风生
fyh (来自: 中国 浙江 嘉兴 电信) 4年前
大象腿 (来自: 中国 山东 烟台 电信) 4年前