LoginViewModel.java
6.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
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");
}
}
}