- 首页 > it技术 > >
/*
* 根据请求生成会员号
* 利用microtime()截取后六位生成会员号Number,时间戳后六位不会重复,
* 如果存在则重新生成在查询,直到唯一为止,并写入user表与number表
* */
function createSingleNumber()
{
$token=I('token');
$this->auth($token);
try{
$user_id = get_user_id(USER_ACCOUNT);
//获取用户user_id
$userData=https://www.it610.com/article/D('User')->where(['id'=>$user_id])->find();
if(!empty($userData['number']))
throw new \Exception('你的爱豆号为'.$userData['number'],1);
//否则继续进行生成与验证
$randNumber= microtime();
$userNumber=rand(11,99).substr($randNumber,-4);
$check=$this->unique($userNumber);
//计算是几连号,return 2 为2连号if($check >= 3)
//检查是否3位相连,如果是,则生成任意随机数代替
$userNumber=mt_rand(111111,999999);
$doubleCheck=D('User')->where(['number'=>$userNumber])->find();
if(!empty($doubleCheck))
//再次生成爱豆号,直到不重复
throw new \Exception('再次请求生成',2018);
exit(json_encode(['code'=>200,'data'=>$userNumber,'message'=>'ok']));
}catch(\Exception $e){
$result['code'] = $e->getCode();
$result['message'] = $e->getMessage();
exit(json_encode($result));
}}function unique($num){
//使用正则检测连号数量
preg_match_all("/(\d)\\1+/",$num,$match);
rsort($match[0],SORT_NUMERIC);
return strlen($match[0][0])?:1;
}
复制代码
推荐阅读