getRegisterConfig($this->site_id, 'shop'); return $this->response($info); } /** * 注册协议 */ public function aggrement() { $register = new Config(); $info = $register->getRegisterDocument($this->site_id, 'shop'); return $this->response($info); } /** * 用户名密码注册 */ public function username() { $config = new Config(); $config_info = $config->getRegisterConfig($this->site_id); if (strstr($config_info['data']['value']['register'], 'username') === false) return $this->response($this->error("", "REGISTER_REFUND")); $register = new RegisterModel(); $this->params['username'] = str_replace(' ', '', $this->params['username']); $exist = $register->usernameExist($this->params['username'], $this->site_id); if($exist) return $this->response($this->error("", "用户名已存在")); // 校验验证码 $captcha = new Captcha(); $check_res = $captcha->checkCaptcha(); if ($check_res['code'] < 0) return $this->response($check_res); if(isset($this->params['rCode']) && $this->params['rCode']){ $this->params['source_member']=decode($this->params['rCode']); } $res = $register->usernameRegister($this->params); //生成access_token if ($res['code'] >= 0) { $token = $this->createToken($res['data']); return $this->response($this->success(['token' => $token])); } return $this->response($res); } /** * 手机号注册 * @return false|string */ public function mobile() { $config = new Config(); $config_info = $config->getRegisterConfig($this->site_id); if (strstr($config_info['data']['value']['register'], 'mobile') === false) return $this->response($this->error("", "REGISTER_REFUND")); $register = new RegisterModel(); $exist = $register->mobileExist($this->params['mobile'], $this->site_id); if ($exist) { return $this->response($this->error("", "手机号已存在")); } else { $key = $this->params['key']; $verify_data = Cache::get($key); $verify_data = $verify_data["mobile"] == $this->params["mobile"] && $verify_data["code"] == $this->params["code"]; if ($verify_data) { $source_member=model('member')->getValue([['rcode','=',$this->params['rCode']]],'member_id'); if(!$source_member){ return $this->response($this->error("", "推荐用户不存在")); } $this->params['source_member']=$source_member; $res = $register->mobileRegister($this->params); if ($res['code'] >= 0) { $token = $this->createToken($res['data']); $res = $this->success([ 'token' => $token ]); } } else { $res = $this->error("", "手机动态码不正确"); } return $this->response($res); } } /** * 检测存在性 */ public function exist() { $type = $this->params['type']; $register = new RegisterModel(); switch ($type) { case "username" : $res = $register->usernameExist($this->params['username'], $this->site_id); break; case "mobile" : $res = $register->mobileExist($this->params['mobile'], $this->site_id); break; default: $res = 0; break; } if ($res) { return $this->response($this->error("", "账户已存在")); } else { return $this->response($this->success()); } } /** * 短信验证码 * @return false|string * @throws Exception */ public function mobileCode() { // 校验验证码 $captcha = new Captcha(); $check_res = $captcha->checkCaptcha(false); if ($check_res['code'] < 0) return $this->response($check_res); $mobile = $this->params['mobile'];//注册手机号 $register = new RegisterModel(); $exist = $register->mobileExist($mobile, $this->site_id); $mobile_code='register_mobile_code_'.$mobile; if(Cache::get($mobile_code)) return $this->response($this->error("", "重复发送请稍后再试")); if ($exist) { return $this->response($this->error("", "手机号已存在")); } else { if(isset($this->params['rCode']) && $this->params['rCode']){ $source_member=model('member')->getValue([['rcode','=',$this->params['rCode']]],'member_id'); if(!$source_member){ return $this->response($this->error("", "推荐用户不存在")); } }else{ return $this->response($this->error("", "请填写推荐码")); } $code = str_pad(random_int(1, 9999), 4, 0, STR_PAD_LEFT);// 生成4位随机数,左侧补0 $message_model = new Message(); $res = $message_model->sendMessage([ "mobile" => $mobile, "site_id" => $this->site_id, "code" => $code, "support_type" => [ "sms" ], "keywords" => "REGISTER_CODE" ]); if ($res["code"] >= 0) { //将验证码存入缓存 $key = 'register_mobile_code_' . md5(uniqid(null, true)); Cache::tag("register_mobile_code")->set($key, [ 'mobile' => $mobile, 'code' => $code ], 600); Cache::tag("register_mobile_code")->set('register_mobile_code_'.$mobile,time(), 600); return $this->response($this->success([ "key" => $key])); } else { return $this->response($res); } } } }