From 9048f0067ca220fe90ee41bb9a05b125119b4cb3 Mon Sep 17 00:00:00 2001 From: cloudroam <cloudroam> Date: 星期五, 14 三月 2025 10:58:14 +0800 Subject: [PATCH] add: 验证码接口 --- app/src/main/java/com/example/firstapp/ui/login/LoginViewModel.kt | 58 +++++++++++++++++++++++++++++++++++----------------------- 1 files changed, 35 insertions(+), 23 deletions(-) diff --git a/app/src/main/java/com/example/firstapp/ui/login/LoginViewModel.kt b/app/src/main/java/com/example/firstapp/ui/login/LoginViewModel.kt index 6d102f4..1526f66 100644 --- a/app/src/main/java/com/example/firstapp/ui/login/LoginViewModel.kt +++ b/app/src/main/java/com/example/firstapp/ui/login/LoginViewModel.kt @@ -1,45 +1,57 @@ package com.example.firstapp.ui.login -import android.app.Application -import android.content.Context import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.viewModelScope -import kotlinx.coroutines.delay import kotlinx.coroutines.launch -import androidx.lifecycle.AndroidViewModel +import androidx.lifecycle.ViewModel +import com.example.firstapp.database.service.RetrofitClient -class LoginViewModel(application: Application) : AndroidViewModel(application) { +class LoginViewModel : ViewModel() { private val _loginState = MutableLiveData<Boolean>() val loginState: LiveData<Boolean> = _loginState + private val _loginMessage = MutableLiveData<String>() + val loginMessage: LiveData<String> = _loginMessage + + private val _isLoading = MutableLiveData<Boolean>() + val isLoading: LiveData<Boolean> = _isLoading + fun sendVerificationCode(phone: String) { viewModelScope.launch { - // 这里实现发送验证码的逻辑 - // 模拟网络请求 - delay(1000) - // 实际应用中需要调用后端API + _isLoading.value = true + try { + val response = RetrofitClient.apiService.sendVerificationCode(phone) + if (response.code == 200) { + _loginMessage.value = "验证码已发送" + } else { + _loginMessage.value = response.msg.ifEmpty { "发送验证码失败" } + } + } catch (e: Exception) { + _loginMessage.value = "网络错误,请稍后重试" + } finally { + _isLoading.value = false + } } } fun login(phone: String, code: String) { viewModelScope.launch { - // 模拟登录请求 - delay(1000) - // 保存登录状态和手机号 - saveLoginInfo(phone) - _loginState.value = true + _isLoading.value = true + try { + val response = RetrofitClient.apiService.verifyCode(phone, code) + if (response.code == 200 && response.data) { + _loginState.value = true + } else { + _loginMessage.value = response.msg.ifEmpty { "登录失败" } + } + } catch (e: Exception) { + _loginMessage.value = "网络错误,请稍后重试" + } finally { + _isLoading.value = false + } } } - private fun saveLoginInfo(phone: String) { - getApplication<Application>().getSharedPreferences( - "user_info", Context.MODE_PRIVATE - ).edit().apply { - putBoolean("is_logged_in", true) - putString("phone", phone) - apply() - } - } } \ No newline at end of file -- Gitblit v1.9.3