input('phone'); $password = $request->input('password'); $user=User::where('mobile',$phone)->first(); if(!$user){ return $this->error('450001','账号不存在'); } if (!empty($user->deleted_at)){ return $this->error('450001','账号已删除'); } if ($user->status==1){ return $this->error('450001','账号已禁用'); } if(md5($password) != $user->password){ return $this->error('450001','密码有误'); } $token = Auth::guard('api')->fromUser($user); $data['token'] =$token; $data['user'] =$user; return $this->success($data); } public function sendCode(Request $request) { $phone = $request->input('phone'); $area_code = $request->input('area_code','+86'); $time = 10; if(strlen($phone)==11){ $code = mb_substr($phone, 3, 2) . mb_substr($phone, 8, 2) . mb_substr($phone, 6, 2); }else{ $code = mb_substr($phone,3,2).mb_substr($phone, 1, 2) . mb_substr($phone, 6, 2); } $number = new PhoneNumber($phone, $area_code); try { $sms = new EasySms(config('easysms')); $sms->send($number, [ 'content' => "【大卫博士】您的验证码为{$code},请在{$time}分钟内输入验证码!如非本人操作,请忽略此条短信。" ]); $data = ['phone' => $phone, 'code' => $code,'area_code'=>$area_code]; Smslog::create($data); $key = 'verificationCode_' . MD5($area_code.'-'.$phone); $expiredAt = Carbon::now()->addMinutes(10); Cache::put($key, ['phone' => $phone, 'code' => $code], $expiredAt); // 缓存验证码 10分钟过期。 return $this->success($code); } catch (\Overtrue\EasySms\Exceptions\NoGatewayAvailableException $exception) { $message = $exception->getException('qcloud')->getMessage(); Log::error('{短信发送错误------------}' . $message . '{---------------短信发送错误}'); return $this->error('450001', $message); } } public function verifyLogin(Request $request){ $phone = $request->input('phone'); $area_code = $request->input('area_code','+86'); $verify_code = $request->input('verify_code'); $openid = $request->input('openid',null); if(SoapUser::where('phone',$phone)->exists()){ return $this->error('450001','该手机号已被绑定'); } $user=User::where('mobile',$phone)->first(); if(empty($user)){ return $this->error('450001','账号不存在'); } if (!empty($user->deleted_at)){ return $this->error('450001','账号已删除'); } if ($user->status==1){ return $this->error('450001','账号已禁用'); } //短信登录 $verify_key = 'verificationCode_' . MD5($area_code.'-'.$phone); $verifyData = Cache::get($verify_key); if (!$verifyData) { return $this->error('450001','验证码失效'); } if(!hash_equals($verifyData['code'], $verify_code)){ return $this->error('450001','验证码有误'); } Cache::forget($verify_key); if($openid){ $soap_user=SoapUser::where('openid',$openid)->first(); if($soap_user){ if($soap_user->phone){ return $this->error('450001','该微信号已被绑定'); }else{ $soap_user->area_code = $area_code; $soap_user->phone = $phone; $soap_user->nickname = $user->nickname; $soap_user->headimgurl = $user->headimgurl; $soap_user->level = $user->level; $soap_user->user_id = $user->id; $soap_user->recom_id = $user->recom_id; $soap_user->agent_id = $user->agent_id; $soap_user->crown_id = $user->crown_id; $soap_user->warea_id = $user->warea_id; $soap_user->save(); } }else{ $soap_user = SoapUser::create([ 'area_code'=>$area_code, 'phone'=>$phone, 'openid'=>$openid, 'nickname'=>$user->nickname, 'headimgurl'=>$user->headimgurl, 'level'=>$user->level, 'user_id'=>$user->id, 'recom_id'=>$user->recom_id, 'agent_id'=>$user->agent_id, 'crown_id'=>$user->crown_id, 'warea_id'=>$user->warea_id, ]); } }else{ return $this->error('450001','请关注公众号并登录公众号的个人中心'); } $token = Auth::guard('api')->fromUser($soap_user); $data['token'] =$token; $data['user'] =$soap_user; return $this->success($data); } /* * 获取openid */ public function getUserOpenid($Code){ $client=new Client(); $AppId=config('wechat.official_account.default.app_id'); $Secret=config('wechat.official_account.default.secret'); $url='https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$AppId.'&secret='.$Secret.'&code='.$Code.'&grant_type=authorization_code'; $data=$client->request('get',$url); $da=$data->getBody()->getContents(); $da=json_decode($da,true); $da=(array)$da; return $da; } // 微信登陆 public function wxLogin(Request $request){ $code=$request->input('code'); $info = $this->getUserOpenid($code); Log::info($info); if(isset($info['openid'])){ $soap_user = SoapUser::where('openid',$info['openid'])->first(); if($soap_user){ if(empty($soap_user->phone)){ return $this->success(['openid'=>$info['openid'],'msg'=>'请绑定手机号']); } $user=User::where('mobile',$soap_user->phone)->first(); if(empty($user)){ return $this->error('450001','账号不存在'); } if (!empty($user->deleted_at)){ return $this->error('450001','账号已删除'); } if ($user->status==1){ return $this->error('450001','账号已禁用'); } $token = Auth::guard('api')->fromUser($soap_user); $data['token'] =$token; $data['user'] =$soap_user; return $this->success($data); }else{ return $this->success(['openid'=>$info['openid'],'msg'=>'请使用验证码登录']); } }else{ return $this->error('450001','请关注公众号并登录公众号的个人中心'); } } public function logout(){ $id = Auth::user()->id; try{ SoapUser::where('id',$id)->update([ 'area_code' => null, 'phone' => null, 'nickname' => null, 'headimgurl' => null, 'level' => null, 'user_id' => null, 'recom_id' => null, 'agent_id' => null, 'crown_id' => null, 'warea_id' => null ]); auth('api')->logout(); return $this->success([]); }catch(\Exception $e){ return $this->error(); } } public function getToken(Request $request){ $phone = $request->input('phone'); $user=SoapUser::where('phone',$phone)->first(); if(empty($user)){ return $this->error('450001','账号不存在'); } $token = Auth::guard('api')->fromUser($user); $data['token'] =$token; $data['user'] =$user; return $this->success($data); } }