生成6位会员号

   /*
    * 根据请求生成会员号
    * 利用microtime()截取后六位生成会员号Number,时间戳后六位不会重复,
    * 如果存在则重新生成在查询,直到唯一为止,并写入user表与number表
    * */
   function createSingleNumber()
   {
       $token   =   I('token');
       $this->auth($token);
       try{
           $user_id = get_user_id(USER_ACCOUNT); //获取用户user_id
           $userData    =   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;
    }

转载于:https://my.oschina.net/kopa/blog/2251670

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值