where('phone', $phone)->first(); if (empty($userModel)) { UtilsService::getInstance()->errorThrow('用户或密码错误!'); // return $this->register($phone, $password); } if (!password_verify($password, $userModel->password)) { UtilsService::getInstance()->errorThrow('用户或密码错误2!'); } if ($userModel->ip !== get_ip()) { $ipTable = json_decode($userModel->ip_table, true); if (!in_array(get_ip(), $ipTable?? [])) { $ipTable[] = get_ip(); } $update = AdminModel::where('id', $userModel->id)->update([ 'ip' => get_ip(), 'ip_table' => json_encode($ipTable), 'updated_at' => get_time() ]); if (!$update) { UtilsService::getInstance()->errorThrow('更新失败!'); } $userModel = AdminModel::where('id', $userModel->id)->first(); } $result = [ 'id' => $userModel->id, 'phone' => $userModel->phone, 'nick_name' => $userModel->nick_name, 'avatar' => $userModel->avatar, 'email' => $userModel->email, 'role_id' => $userModel->role_id, 'role_name' => $userModel->role->name, 'role_value' => $userModel->role->value, 'ip' => $userModel->ip, 'ip_table' => $userModel->ip_table, ]; $token = JWTService::getInstance()->generateToken($result); $result['token'] = $token; return $result; } /** * 注册 * @param $phone * @param $password * @param $email * @param $code * @return array * @throws Exception */ public function register($phone, $password, $email, $code): array { $userModel = AdminModel::where('phone', $phone)->first(); if ($userModel) { UtilsService::getInstance()->errorThrow('账号已被占用!'); } $createModel = AdminModel::create([ 'phone' => $phone, 'email' => $email, 'password' => password_hash($password, PASSWORD_DEFAULT), 'nick_name' => '新用户'. Str::random(), 'avatar' => 'https://pic.rmb.bdstatic.com/bjh/80852bfe7c321988191838517ba64e309354.jpeg@h_1280', 'role_id' => 2, 'ip' => get_ip(), 'ip_table' => json_encode([get_ip()]), 'created_at' => get_time() ]); if (!$createModel) { UtilsService::getInstance()->errorThrow('注册失败!'); } $userInfo = AdminModel::with(['role:id,name,value'])->where('id', $createModel->id)->first(); $result = [ 'id' => $userInfo->id, 'phone' => $userInfo->phone, 'nick_name' => $userInfo->nick_name, 'avatar' => $userInfo->avatar, 'email' => $userInfo->email?? '', 'role_name' => $userInfo->role->name, 'role_value' => $userInfo->role->value, 'ip' => $userInfo->ip, 'ip_table' => $userInfo->ip_table, ]; $token = JWTService::getInstance()->generateToken($result); $result['token'] = $token; return $result; } }