/** * 生成短信验证码 * 判断用户获得验证码的资格: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; } }