package com.application.zhangshi_app_android.ui.login; import static com.android.app_base.base.BaseConfig.CODE_SUCCESS; import android.app.Application; import android.text.TextUtils; import android.util.Log; import androidx.annotation.NonNull; import androidx.lifecycle.MutableLiveData; import com.android.app_base.base.StateViewEnum; import com.android.app_base.base.viewmodel.BaseViewModel; import com.android.app_base.http.ResultData; import com.android.app_base.manager.AppManager; import com.android.app_base.manager.UserManager; import com.android.app_base.utils.RxUtils; import com.android.app_base.utils.ToastUtils; import com.application.zhangshi_app_android.bean.CaptchaImageBean; import com.application.zhangshi_app_android.bean.LoginRequestBean; import com.application.zhangshi_app_android.bean.LoginResponseBean; import com.application.zhangshi_app_android.data.DataRepository; import com.application.zhangshi_app_android.ui.main.MainActivity; import java.util.Objects; import io.reactivex.Observer; import io.reactivex.disposables.Disposable; /** * @author Ljj * @date 2023.03.18. 17:47 * @desc 登录注册ViewModel */ public class LoginActivityViewModel extends BaseViewModel { private MutableLiveData captchaImageLiveData = new MutableLiveData<>(); private MutableLiveData username = new MutableLiveData<>(); private MutableLiveData password = new MutableLiveData<>(); private MutableLiveData againPassword = new MutableLiveData<>(); private MutableLiveData passwordVisibility = new MutableLiveData<>(); private MutableLiveData againPasswordVisibility = new MutableLiveData<>(); private MutableLiveData selectLoginBackgroundLiveData = new MutableLiveData<>();//背景图 private MutableLiveData value = new MutableLiveData<>(); public LoginActivityViewModel(@NonNull Application application) { super(application); passwordVisibility.postValue(true); againPasswordVisibility.postValue(true); } @Override protected DataRepository initModel() { return DataRepository.getInstance(); } public void getCaptchaImage(){ model.getCaptchaImage() .compose(RxUtils.schedulersTransformer()) .subscribe(new Observer>() { @Override public void onSubscribe(Disposable d) { addSubscribe(d); } @Override public void onNext(ResultData captchaImageBeanResultData) { if (captchaImageBeanResultData.getCode() == CODE_SUCCESS){ captchaImageLiveData.postValue(captchaImageBeanResultData.getData()); }else { changeStateView(StateViewEnum.DATA_ERROR); messageLiveData.postValue(captchaImageBeanResultData.getMsg()); } } @Override public void onError(Throwable e) { messageLiveData.postValue(e.getMessage()); } @Override public void onComplete() { } }); } public void login(){ if (TextUtils.isEmpty(username.getValue()) || TextUtils.isEmpty(password.getValue())||TextUtils.isEmpty(password.getValue())){ ToastUtils.showShort("请输入账号密码"); return; } if (TextUtils.isEmpty(value.getValue())){ ToastUtils.showShort("请输入验证码"); return; } if (captchaImageLiveData.getValue() != null){ model.login(new LoginRequestBean(username.getValue(),password.getValue(),value.getValue(),captchaImageLiveData.getValue().getUuid())) .compose(RxUtils.schedulersTransformer()) .subscribe(new Observer>() { @Override public void onSubscribe(Disposable d) { addSubscribe(d); } @Override public void onNext(ResultData loginResponseBeanResultData) { if (loginResponseBeanResultData.getCode() == CODE_SUCCESS){ String token = loginResponseBeanResultData.getData().getToken(); UserManager.getInstance().setToken(token); AppManager.getAppManager().startActivity(MainActivity.class); AppManager.getAppManager().finishCurrentActivity(); ToastUtils.showShort("登陆成功"); }else { changeStateView(StateViewEnum.DATA_ERROR); messageLiveData.postValue(loginResponseBeanResultData.getMsg()); } } @Override public void onError(Throwable e) { messageLiveData.postValue(e.getMessage()); } @Override public void onComplete() { } }); } } public void register(){ if (TextUtils.isEmpty(username.getValue()) || TextUtils.isEmpty(password.getValue())||TextUtils.isEmpty(password.getValue())){ ToastUtils.showShort("请输入账号密码"); return; } if (TextUtils.isEmpty(value.getValue())){ ToastUtils.showShort("请输入验证码"); return; } if (!Objects.equals(password.getValue(), againPassword.getValue())){ ToastUtils.showShort("两次密码输入不一致"); return; } if (captchaImageLiveData.getValue() != null){ model.register(new LoginRequestBean(username.getValue(),password.getValue(),captchaImageLiveData.getValue().getValue(),captchaImageLiveData.getValue().getUuid())) .compose(RxUtils.schedulersTransformer()) .subscribe(new Observer>() { @Override public void onSubscribe(Disposable d) { addSubscribe(d); } @Override public void onNext(ResultData stringResultData) { if (stringResultData.getCode() == CODE_SUCCESS){ ToastUtils.showShort("注册成功"); AppManager.getAppManager().finishCurrentActivity(); }else { changeStateView(StateViewEnum.DATA_ERROR); messageLiveData.postValue(stringResultData.getMsg()); } } @Override public void onError(Throwable e) { messageLiveData.postValue(e.getMessage()); } @Override public void onComplete() { } }); } } public MutableLiveData getCaptchaImageLiveData() { return captchaImageLiveData; } public void setCaptchaImageLiveData(MutableLiveData captchaImageLiveData) { this.captchaImageLiveData = captchaImageLiveData; } public MutableLiveData getUsername() { return username; } public void setUsername(MutableLiveData username) { this.username = username; } public MutableLiveData getPassword() { return password; } public MutableLiveData getAgainPassword() { return againPassword; } public void setAgainPassword(MutableLiveData againPassword) { this.againPassword = againPassword; } public void setPassword(MutableLiveData password) { this.password = password; } public MutableLiveData getPasswordVisibility() { return passwordVisibility; } public void setPasswordVisibility(MutableLiveData passwordVisibility) { this.passwordVisibility = passwordVisibility; } public MutableLiveData getAgainPasswordVisibility() { return againPasswordVisibility; } public void setAgainPasswordVisibility(MutableLiveData againPasswordVisibility) { this.againPasswordVisibility = againPasswordVisibility; } public MutableLiveData getValue() { return value; } public void setValue(MutableLiveData value) { this.value = value; } public MutableLiveData getSelectLoginBackgroundLiveData() { return selectLoginBackgroundLiveData; } public void setSelectLoginBackgroundLiveData(MutableLiveData selectLoginBackgroundLiveData) { this.selectLoginBackgroundLiveData = selectLoginBackgroundLiveData; } }