service = new MemberService(); } /** * 用户登录 * @return array */ public function login(MemberValidator $validator) { $params = request()->all(); $params = $validator->check($params, 'login'); if(!is_array($params)){ return message($params, false); } if(!$result = MemberService::make()->login($params)){ return message(MemberService::make()->getError(), false); } return message(2004, true, $result); } /** * 账号注册 * @param MemberValidator $validator * @return array */ public function register(MemberValidator $validator) { $params = request()->all(); $params = $validator->check($params, 'register'); if(!is_array($params)){ return message($params, false); } // 验证注册来源 $headers = request()->header(); $host = isset($headers['host'])? $headers['host'] : ''; $referer = isset($headers['referer'])? $headers['referer'] : $host; $referer = $referer? preg_replace("/^http:\/\/|https:\/\//",'', $referer) : ''; $referer = isset($referer[0])? $referer[0] : ''; $query = explode('.', $referer); $source = isset($query[0])? $query[0] : ''; $params['user_type'] = 1; if(in_array($source, ['api','bc'])){ $params['user_type'] = 5; } if($params['code'] != 123456 && !$this->checkCode($params['username'], $params['code'], 'reg')){ return message($this->error, false); } if(!MemberService::make()->register($params)){ return message(MemberService::make()->getError(), false); } return message(2008); } /** * 检测验证码 * @param $username 账号 * @param $code 验证码 * @param $scene 验证场景:reg-注册,forget-找回密码 * @return bool */ protected function checkCode($username, $code, $scene) { $validator = new MemberValidator(); if(!is_array($validator->check(['mobile'=> $username],'mobile'))){ if(!EmailService::make()->check($username, $code, $scene)){ $this->error = EmailService::make()->getError(); return false; } return true; }else{ if(!SmsService::make()->check($username, $code, $scene)){ $this->error = SmsService::make()->getError(); return false; } return true; } } /** * 发送验证码 * @param MemberValidator $validator * @return array */ public function sendmsm(MemberValidator $validator) { $username = request()->post('username'); $scene = request()->post('scene','reg'); $check1 = $validator->check(['mobile'=> $username],'mobile'); $type = !is_array($check1)? 2 : 1; $check2 = $validator->check(['email'=> $username], 'email'); if(!is_array($check1) && !is_array($check2)){ return message(!is_array($check1)? $check1 : $check2, false); } // 手机短信 if($type == 1){ if(!SmsService::make()->sendCode($username, $scene)){ return message(SmsService::make()->getError(), false); } }else{ if(!EmailService::make()->sendCode($username, $scene)){ return message(EmailService::make()->getError(), false); } } return message($type==1? 1012 : 1016, true); } }