verify($params['phone'], $params['code'], NoticeEnum::FIND_LOGIN_PASSWORD_CAPTCHA)) { throw new \Exception('验证码错误'); } // 重置密码 $passwordSalt = Config::get('project.unique_identification'); $password = create_password($params['password'], $passwordSalt); // 更新 User::where('user_phone', $params['phone'])->update(['user_password' => $password]); return true; } catch (\Exception $e) { self::setError($e->getMessage()); return false; } } //修该密码 public static function changePassword(array $params, int $userId): bool { try { $user = User::findOrEmpty($userId); if ($user->isEmpty()) { throw new \Exception('用户不存在'); } // 密码盐 $passwordSalt = Config::get('project.unique_identification'); // 加密原密码 $oldPassword = create_password($params['old_password'], $passwordSalt); if($oldPassword != $user['user_password']){ throw new \Exception('原密码不正确'); } // 保存密码 $password = create_password($params['password'], $passwordSalt); $user->user_password = $password; $user->save(); return true; } catch (\Exception $e) { self::setError($e->getMessage()); return false; } } //绑定手机号 public static function bindMobile(array $params): bool { try { // 变更手机号场景 $sceneId = NoticeEnum::CHANGE_MOBILE_CAPTCHA; $where = [ ['id', '=', $params['user_id']], ['user_phone', '=', $params['phone']] ]; // 绑定手机号场景 if ($params['type'] == 'bind') { $sceneId = NoticeEnum::BIND_MOBILE_CAPTCHA; $where = [ ['user_phone', '=', $params['phone']] ]; } // 校验短信 $checkSmsCode = (new SmsDriver())->verify($params['phone'], $params['code'], $sceneId); if (!$checkSmsCode) { throw new \Exception('验证码错误'); } $user = User::where($where)->findOrEmpty(); if (!$user->isEmpty()) { throw new \Exception('该手机号已被使用'); } User::update([ 'id' => $params['user_id'], 'user_phone' => $params['phone'], ]); return true; } catch (\Exception $e) { self::setError($e->getMessage()); return false; } } }