コード例 #1
0
ファイル: CaptchaModule.php プロジェクト: nicklos17/appserver
 /**
  * 生成短信验证码
  * 判断用户获得验证码的资格:type:
  * 1 - 只有未注册的用户才能获取注册验证码
  * 3 - 只有注册过的用户才能获取添加亲人验证码
  * 7 - 只有注册过的用户才能获取忘记密码的验证码
  * 9 - 只有注册过的用户才能获取修改密码的验证码
  * 11 - 只有注册过的用户才能获取第三方注册验证码
  */
 public function makeCaptcha($type, $mobi = '', $babyId = '')
 {
     $userInfo = $this->userSwoole->getUserInfoByMobi($mobi);
     if (($type == '1' || $type == '11') && !empty($userInfo['data'])) {
         return self::EXIST_MOBILE;
     }
     if (($type == '3' || $type == '7' || $type == '9') && empty($userInfo['data'])) {
         return self::NON_EXIST_MOBILE;
     }
     //如果是添加副号,则须判断是否登录以及该手机号是否已经添加
     if ($type == '3') {
         //如果该号已经是宝贝亲人号,则不发送短信
         $checkRel = $this->family->checkRelation($userInfo['data']['u_id'], $babyId);
         if (!empty($checkRel)) {
             return self::HAVE_FAMILY_RELATION;
         }
         $babyInfo = $this->baby->getBabyName($babyId);
     }
     $RedisLib = new \Appserver\Utils\RedisLib($this->di);
     $redis = $RedisLib::getRedis();
     //生成验证码ename123
     if ($redis->get($mobi . $type) == FALSE) {
         $captchaCode = \Appserver\Utils\Common::random(4);
         $redis->setex($mobi . $type, $this->di['sysconfig']['capTime'], $captchaCode);
     } else {
         $captchaCode = $redis->get($mobi . $type);
     }
     switch ($type) {
         case 1:
             $message = sprintf($this->di['sysconfig']['regCaptchaMsg'], $captchaCode);
             break;
         case 3:
             $message = sprintf($this->di['sysconfig']['addRelCaptchaMsg'], $captchaCode, $babyInfo['baby_nick']);
             break;
         case 7:
             $message = sprintf($this->di['sysconfig']['resetCaptchaMsg'], $captchaCode);
             break;
         case 9:
             $message = sprintf($this->di['sysconfig']['changeCaptchaMsg'], $captchaCode);
             break;
         case 11:
             $message = sprintf($this->di['sysconfig']['regCaptchaMsg'], $captchaCode);
             break;
     }
     $lastCapthaInfo = $this->captcha->getLastCapthaInfo($mobi, $type);
     if ($_SERVER['REQUEST_TIME'] - $lastCapthaInfo['mc_addtime'] < 60) {
         return self::GET_TOO_CAPTCHA;
     }
     //验证码入库
     $data = $this->captcha->addCaptcha($mobi, $type, $_SERVER['REQUEST_TIME'], $captchaCode);
     if ($data) {
         $sendMsg = new RpcService($this->di['sysconfig']['thriftConf']['ip'], $this->di['sysconfig']['thriftConf']['port']);
         $sendMsg->smsSend($mobi, $message);
         return self::SUCCESS;
     } else {
         return self::FAIL;
     }
 }