张钢
2024-09-02 63608b5dca9eebb6fa2cb1a8652b395f1d910c3e
app/src/main/java/com/application/zhangshi_app_android/ui/login/LoginActivityViewModel.java
@@ -1,11 +1,31 @@
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
@@ -13,12 +33,208 @@
 * @desc 登录注册ViewModel
 */
public class LoginActivityViewModel extends BaseViewModel<DataRepository> {
    private MutableLiveData<CaptchaImageBean> captchaImageLiveData = new MutableLiveData<>();
    private MutableLiveData<String> username = new MutableLiveData<>();
    private MutableLiveData<String> password = new MutableLiveData<>();
    private MutableLiveData<String> againPassword = new MutableLiveData<>();
    private MutableLiveData<Boolean> passwordVisibility = new MutableLiveData<>();
    private MutableLiveData<Boolean> againPasswordVisibility = new MutableLiveData<>();
    private MutableLiveData<String> selectLoginBackgroundLiveData = new MutableLiveData<>();//背景图
    private MutableLiveData<String> 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<ResultData<CaptchaImageBean>>() {
                    @Override
                    public void onSubscribe(Disposable d) {
                        addSubscribe(d);
                    }
                    @Override
                    public void onNext(ResultData<CaptchaImageBean> 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<ResultData<LoginResponseBean>>() {
                        @Override
                        public void onSubscribe(Disposable d) {
                            addSubscribe(d);
                        }
                        @Override
                        public void onNext(ResultData<LoginResponseBean> 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<ResultData<String>>() {
                        @Override
                        public void onSubscribe(Disposable d) {
                            addSubscribe(d);
                        }
                        @Override
                        public void onNext(ResultData<String> 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<CaptchaImageBean> getCaptchaImageLiveData() {
        return captchaImageLiveData;
    }
    public void setCaptchaImageLiveData(MutableLiveData<CaptchaImageBean> captchaImageLiveData) {
        this.captchaImageLiveData = captchaImageLiveData;
    }
    public MutableLiveData<String> getUsername() {
        return username;
    }
    public void setUsername(MutableLiveData<String> username) {
        this.username = username;
    }
    public MutableLiveData<String> getPassword() {
        return password;
    }
    public MutableLiveData<String> getAgainPassword() {
        return againPassword;
    }
    public void setAgainPassword(MutableLiveData<String> againPassword) {
        this.againPassword = againPassword;
    }
    public void setPassword(MutableLiveData<String> password) {
        this.password = password;
    }
    public MutableLiveData<Boolean> getPasswordVisibility() {
        return passwordVisibility;
    }
    public void setPasswordVisibility(MutableLiveData<Boolean> passwordVisibility) {
        this.passwordVisibility = passwordVisibility;
    }
    public MutableLiveData<Boolean> getAgainPasswordVisibility() {
        return againPasswordVisibility;
    }
    public void setAgainPasswordVisibility(MutableLiveData<Boolean> againPasswordVisibility) {
        this.againPasswordVisibility = againPasswordVisibility;
    }
    public MutableLiveData<String> getValue() {
        return value;
    }
    public void setValue(MutableLiveData<String> value) {
        this.value = value;
    }
    public MutableLiveData<String> getSelectLoginBackgroundLiveData() {
        return selectLoginBackgroundLiveData;
    }
    public void setSelectLoginBackgroundLiveData(MutableLiveData<String> selectLoginBackgroundLiveData) {
        this.selectLoginBackgroundLiveData = selectLoginBackgroundLiveData;
    }
}