errcode::ErrParamter, 'msg' => "错误的类型参数: type={$type}"]; } if($fcheck) { $cur_time = time(); if(isset($_SESSION['sms_code'][$type])) { $last_time = $_SESSION['sms_code'][$type]['last_time']; if($cur_time - $last_time < self::repeat_mintime) { return ['code' => errcode::ErrSmsLessRepeateMinTime, 'msg' => errcode::msg(errcode::ErrSmsLessRepeateMinTime)]; } } } $code = makeSmscode(); Log::record("sms code = {$code}",Log::DEBUG); QueueClient::push('sendSMS', ['mobile'=>$mobile,'type'=>$type,'datas' => ['code'=>$code,'time'=>'5']]); // $logic = Logic('queue'); // $logic->sendSMS(['mobile'=>$mobile,'type'=>$type,'datas' => ['code'=>$code,'time'=>'5']]); $status = 0; if ($status == 0) { if($fcheck) { if(isset($_SESSION['sms_code'][$type])) { $count = $_SESSION['sms_code'][$type]['count']; } else { $count = 0; } $_SESSION['sms_code'][$type] = ['count' => $count + 1, 'code' => $code, 'last_time' => time(),'mobile' => $mobile]; } return ['code' => 200]; } else { $msg = self::get_errmsg($status,$type); return ['code' => errcode::ErrSms, 'msg' => $msg]; } } public function send($mobile, $type) { if(!in_array($type,sms_helper::$arrTypes)) { return ['code' => errcode::ErrParamter, 'msg' => "错误的类型参数: type={$type}"]; } $cur_time = time(); if(isset($_SESSION['sms_code'][$type])) { $last_time = $_SESSION['sms_code'][$type]['last_time']; if($cur_time - $last_time < self::repeat_mintime) { return ['code' => errcode::ErrSmsLessRepeateMinTime, 'msg' => errcode::msg(errcode::ErrSmsLessRepeateMinTime)]; } } //$sms = new Sms(); $code = makeSmscode(); Log::record("sms code = {$code}",Log::DEBUG); //Logic('queue')->sendSMS(array('mobile'=>$mobile,'type'=>$itype,'datas' => array('code'=>$code,'time'=>'5'))); QueueClient::push('sendSMS', ['mobile'=>$mobile,'type'=>$type,'datas' => ['code'=>$code,'time'=>'5']]); $status = 0; if ($status == 0) { if(isset($_SESSION['sms_code'][$type])) { $count = $_SESSION['sms_code'][$type]['count']; } else { $count = 0; } $_SESSION['sms_code'][$type]['count'] = $count + 1; $_SESSION['sms_code'][$type]['code'] = $code; $_SESSION['sms_code'][$type]['last_time'] = time(); $_SESSION['sms_code'][$type]['mobile'] = $mobile; return ['code' => 200]; } else { $msg = self::get_errmsg($status,$type); return ['code' => errcode::ErrSms, 'msg' => $msg]; } } static public function send_nostore_message($mobile,$type,$datas) { QueueClient::push('sendSMS', ['mobile' => $mobile,'type' => $type, 'datas' => $datas]); } static public function check_code($itype,$code,$mobile) { if(isset($_SESSION['sms_code'][$itype])) { if($_SESSION['sms_code'][$itype]['mobile'] != $mobile) { return ['code' => errcode::ErrSmscode, 'msg' => '验证手机号和发送验证码手机号不一致.']; } $tmout = time() - $_SESSION['sms_code'][$itype]['last_time']; if($tmout <= self::code_expire) { if($code == $_SESSION['sms_code'][$itype]['code']) { return true; } else { return ['code' => errcode::ErrSmscode, 'msg' => '验证码错误.']; } } else { return ['code' => errcode::ErrSmscodeExpire, 'msg' => errcode::msg(errcode::ErrSmscodeExpire)]; } } else { return ['code' => errcode::ErrSmscode, 'msg' => '验证码错误.']; } } static private function get_errmsg($status,$itype) { $iCode = intval($status); if($iCode == 160038) { return '短信验证码发送过频繁'; } elseif($iCode == 160040) { if($itype == sms_helper::register) { $stype = '注册验证码'; } elseif ($itype == sms_helper::getbonus) { $stype = '红包验证码'; } elseif ($itype == sms_helper::resetpass) { $stype = '重置密码验证码'; } $msg = sprintf("%s,超过当天发送上限.",$stype); return $msg; } elseif($iCode == 160042) { return "号码格式不正确."; } elseif($iCode == 160000) { return "第三方短信系统错误."; } elseif($iCode == 160034) { return "号码在第三方短信系统黑名单中."; } else { return "发送短信错误 error={$status}."; } } }