LoginViewModel.java 6.01 KB
package com.naji.xiaotao.login.vm;

import android.app.Activity;
import android.content.Context;
import android.databinding.ObservableBoolean;
import android.databinding.ObservableField;
import android.os.Build;
import android.provider.Settings;
import android.text.TextUtils;

import com.githang.statusbar.StatusBarCompat;
import com.naji.xiaotao.R;
import com.naji.xiaotao.http.RetrofitClient;
import com.naji.xiaotao.login.service.LoginApiService;
import com.naji.xiaotao.login.entity.LoginEntity;
import com.naji.xiaotao.main.ui.MainActivity;
import com.naji.xiaotao.tangshi.ui.TangShiActivity;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import cn.jpush.android.api.JPushInterface;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Consumer;
import me.goldze.mvvmhabit.base.BaseViewModel;
import me.goldze.mvvmhabit.binding.command.BindingAction;
import me.goldze.mvvmhabit.binding.command.BindingCommand;
import me.goldze.mvvmhabit.http.BaseResponse;
import me.goldze.mvvmhabit.http.ResponseThrowable;
import me.goldze.mvvmhabit.utils.KLog;
import me.goldze.mvvmhabit.utils.MaterialDialogUtils;
import me.goldze.mvvmhabit.utils.RxUtils;
import me.goldze.mvvmhabit.utils.SPUtils;
import me.goldze.mvvmhabit.utils.ToastUtils;

public class LoginViewModel extends BaseViewModel{

    public ObservableField<String> shanghuNum=new ObservableField<>();//商户编号
    public ObservableField<String> gonghaoNum=new ObservableField<>();//工号
    public ObservableField<String> password=new ObservableField<>();//密码

    public ObservableBoolean passVisible=new ObservableBoolean(false);//监听密码显示隐式



    public LoginViewModel(Context context){
        super(context);
        shanghuNum.set(SPUtils.getInstance("user_info").getString("sellercode"));
        gonghaoNum.set(SPUtils.getInstance("user_info").getString("account"));
    }

    @Override
    public void onCreate() {
        super.onCreate();
        StatusBarCompat.setStatusBarColor((Activity) context,context.getResources().getColor(R.color.backgroundColor));
    }

    //显式/隐式 password
    public BindingCommand passImgClick=new BindingCommand(new BindingAction() {
        @Override
        public void call() {
            passVisible.set(!passVisible.get());
        }
    });

    //登录按钮点击监听
    public BindingCommand onLoginClick=new BindingCommand(new BindingAction() {
        @Override
        public void call() {
            if(TextUtils.isEmpty(shanghuNum.get())){
                MaterialDialogUtils.showBasicDialogNoCancel(context,"提示","请输入商户编号").build().show();
                return;
            }
            if(TextUtils.isEmpty(gonghaoNum.get())){
                MaterialDialogUtils.showBasicDialogNoCancel(context,"提示","请输入工号").build().show();
                return;
            }
            if(TextUtils.isEmpty(password.get())){
                MaterialDialogUtils.showBasicDialogNoCancel(context,"提示","请输入密码").build().show();
                return;
            }

            loginRequest();
        }
    });

    //登录接口
    private void loginRequest(){
        Map<String,String> params=new HashMap<>();
        params.put("seller_code",shanghuNum.get());
        params.put("alias",getRegistrationId());
        params.put("account",gonghaoNum.get());
        params.put("password",password.get());
        RetrofitClient.getInstance().create(LoginApiService.class)
                .login(params)
                .compose(RxUtils.schedulersTransformer())
                .compose(RxUtils.exceptionTransformer())
                .doOnSubscribe(new Consumer<Disposable>() {
                    @Override
                    public void accept(Disposable disposable) throws Exception {
                        showDialog();
                    }
                })
                .subscribe(new Consumer<BaseResponse<List<LoginEntity>>>() {

                    @Override
                    public void accept(BaseResponse<List<LoginEntity>> listBaseResponse) throws Exception {
                        dismissDialog();
                        if(listBaseResponse.getRet()==200){
                            SPUtils.getInstance("user_info").put("sellerid",listBaseResponse.getData().get(0).getSeller().getId());//商户id
                            SPUtils.getInstance("user_info").put("sellercode",listBaseResponse.getData().get(0).getUser().getSeller_code());
                            SPUtils.getInstance("user_info").put("sellername",listBaseResponse.getData().get(0).getSeller().getSellername());//商户名称
                            SPUtils.getInstance("user_info").put("account",listBaseResponse.getData().get(0).getUser().getAccount());//账号
                            SPUtils.getInstance("user_info").put("openid",listBaseResponse.getData().get(0).getUser().getId());//登录账号id
                            startActivity(MainActivity.class);
                            ((Activity)context).finish();
                        }else{
                            MaterialDialogUtils.showBasicDialogNoCancel(context,"提示",listBaseResponse.getMsg()).build().show();
                        }
                    }
                }, new Consumer<ResponseThrowable>() {
                    @Override
                    public void accept(ResponseThrowable throwable) throws Exception {
                        dismissDialog();
                        ToastUtils.showShort(throwable.msg);
                        throwable.printStackTrace();
                    }
                });
    }

    //设备唯一标识
    private String getRegistrationId(){
        if(TextUtils.isEmpty(SPUtils.getInstance("jpush").getString("alias"))){
            String androidID = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);
            String id = androidID + Build.SERIAL;
            JPushInterface.setAlias(context,0x11,id);
            return id;
        }else{
            return SPUtils.getInstance("jpush").getString("alias");
        }
    }
}