| | |
| | | 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) |
| | | _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() |
| | | } |
| | | } |
| | | } |