卡券的生成
需求:账号数字12位,密码数字8位
利用Unix时间戳的微妙数作为前8位,后四位随机生成
public function createCard(){$s &#61; microtime();$number &#61; substr($s,2,8);$amount&#61;100;for ($i&#61;1;$i<&#61;500;$i&#43;&#43;){$data &#61; array(&#39;coupon_amount&#39;&#61;>$amount, &#39;coupon_number&#39;&#61;>$number.rand(1000,9999), &#39;coupon_pwd&#39;&#61;>rand(1000,9999).rand(1000,9999));Db::name(&#39;coupon_number&#39;)->insert($data);}}
优化方法
public function createCard(){$s &#61; microtime();$number &#61; substr($s,2,8);$amount&#61;100;$arr&#61;[];for ($i&#61;1;$i<&#61;500;$i&#43;&#43;){$data &#61; array(&#39;coupon_amount&#39;&#61;>$amount, &#39;coupon_number&#39;&#61;>$number.rand(1000,9999), &#39;coupon_pwd&#39;&#61;>rand(1000,9999).rand(1000,9999));array_push($arr,$data);}dump($arr);Db::name(&#39;coupon_number&#39;)->insertAll($arr);}
检查账号密码完全重复的数据
select count(*) as num,group_concat(coupon_pwd) from fcxlt_coupon_card group by coupon_number order by num desc;
经检查发下coupon_number有重复的&#xff0c;密码没有重复的&#xff0c;虽说可以用&#xff0c;但是让人不是很放心。于是用下面方法&#xff0c;无重复
truncate table fcxlt_coupon_card;清空数据并ID从1开始
这样生成后&#xff0c;无重复&#xff1a;
public function createCardlist(){$arr&#61;[];$amount&#61;100;for ($i&#61;1;$i<&#61;2000;$i&#43;&#43;){$data &#61; array(&#39;coupon_amount&#39;&#61;>$amount,&#39;coupon_number&#39;&#61;>$this->createNonceStr(12),&#39;coupon_pwd&#39;&#61;>$this->createNonceStr(8),&#39;status&#39;&#61;>1);array_push($arr,$data);}dump($arr);Db::name(&#39;coupon_card&#39;)->insertAll($arr);}//随机字符串public function createNonceStr($length &#61; 12) {$chars &#61; "123456789";$str &#61; "";for ($i &#61; 0; $i <$length; $i&#43;&#43;) {$str .&#61; substr($chars, mt_rand(0, strlen($chars) - 1), 1);}return $str;}
查看是否有重复
select count(*) as num,group_concat(coupon_pwd) from fcxlt_coupon_card group by coupon_number HAVING num>1 order by num desc;
后期完善&#xff0c;coupon_card新增is_online和create_time时间&#xff0c;因后台可以生成卡券&#xff0c;线上赠送。线下的是打印为卡片
alter table fcxlt_coupon_cardadd create_time datetime not null add is_online tinyint(1) not null default 1 comment &#39;1线下2线上&#39;
我的卡券明细表&#xff0c;增加卡号信息
alter table fcxlt_coupon_mlist
add coupon_num varchar(225) not null default 0