第三方登录绑定手机逻辑优化
This commit is contained in:
@@ -29,10 +29,7 @@ import com.yizhuan.xchat_android_core.auth.exception.ShowPhoneCodeException;
|
||||
import com.yizhuan.xchat_android_core.code.CodeType;
|
||||
import com.yizhuan.xchat_android_core.statistic.StatisticManager;
|
||||
import com.yizhuan.xchat_android_core.statistic.protocol.StatisticsProtocol;
|
||||
import com.yizhuan.xchat_android_core.user.bean.UserInfo;
|
||||
import com.yizhuan.xchat_android_core.user.event.NeedCompleteInfoEvent;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import com.yizhuan.xchat_android_core.user.UserModel;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
@@ -48,24 +45,22 @@ import io.reactivex.disposables.Disposable;
|
||||
*/
|
||||
public class BindCodeActivity extends BaseLoginAct {
|
||||
|
||||
private static final String TAG = "LoginVertificationActivity";
|
||||
|
||||
private CodeEditText codeEt;
|
||||
private TextView tvGetCode,tvDesc,tvSecond;
|
||||
private TextView tvGetCode, tvDesc, tvSecond;
|
||||
private String mPhone;
|
||||
private boolean isSuperAdmin = false;
|
||||
private CodeDownDescTimer timer;
|
||||
private static final String TYPE_SMS = "1";
|
||||
|
||||
public static void start(Context context,String phone) {
|
||||
public static void start(Context context, String phone) {
|
||||
Intent intent = new Intent(context, BindCodeActivity.class);
|
||||
intent.putExtra("phone",phone);
|
||||
intent.putExtra("phone", phone);
|
||||
context.startActivity(intent);
|
||||
}
|
||||
|
||||
public static void startForResult(Activity context,String phone, int requestCode) {
|
||||
public static void startForResult(Activity context, String phone, int requestCode) {
|
||||
Intent intent = new Intent(context, BindCodeActivity.class);
|
||||
intent.putExtra("phone",phone);
|
||||
intent.putExtra("phone", phone);
|
||||
context.startActivityForResult(intent, requestCode); // startActivityForResult会导致singletop,singletask失效
|
||||
}
|
||||
|
||||
@@ -142,7 +137,7 @@ public class BindCodeActivity extends BaseLoginAct {
|
||||
*/
|
||||
@SuppressLint("CheckResult")
|
||||
private void getSmsCode() {
|
||||
if (mPhone.length() != 11){
|
||||
if (mPhone.length() != 11) {
|
||||
return;
|
||||
}
|
||||
AuthModel.get()
|
||||
@@ -157,7 +152,7 @@ public class BindCodeActivity extends BaseLoginAct {
|
||||
|
||||
@Override
|
||||
public void onSuccess(String s) {
|
||||
tvDesc.setText(getString(R.string.str_send_code_success)+mPhone);
|
||||
tvDesc.setText(getString(R.string.str_send_code_success) + mPhone);
|
||||
startCountDownTimer();
|
||||
toast(s);
|
||||
|
||||
@@ -167,13 +162,12 @@ public class BindCodeActivity extends BaseLoginAct {
|
||||
public void onError(Throwable e) {
|
||||
toast(e.getMessage());
|
||||
// finish();
|
||||
LogUtils.e( "获取短信失败!");
|
||||
LogUtils.e("获取短信失败!");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void dealWithLoginError(Throwable e) {
|
||||
if (!(e instanceof IsSuperAdminException)) {
|
||||
@@ -209,7 +203,7 @@ public class BindCodeActivity extends BaseLoginAct {
|
||||
|
||||
private void startCountDownTimer() {
|
||||
stopCountDownTimer();
|
||||
timer = new CodeDownDescTimer(tvSecond, tvGetCode,60000, 1000);
|
||||
timer = new CodeDownDescTimer(tvSecond, tvGetCode, 60000, 1000);
|
||||
timer.start();
|
||||
}
|
||||
|
||||
@@ -222,34 +216,19 @@ public class BindCodeActivity extends BaseLoginAct {
|
||||
|
||||
private void bindPhone() {
|
||||
getDialogManager().showProgressDialog(BindCodeActivity.this, "正在绑定请稍后...");
|
||||
AuthModel.get().bindPhone(
|
||||
mPhone,
|
||||
codeEt.getText().toString()
|
||||
)
|
||||
AuthModel.get().bindPhone(mPhone, codeEt.getText().toString())
|
||||
.compose(bindUntilEvent(ActivityEvent.DESTROY))
|
||||
.subscribe(new SingleObserver<UserInfo>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(UserInfo userInfo) {
|
||||
if (TextUtils.isEmpty(userInfo.getNick()) || TextUtils.isEmpty(userInfo.getAvatar())) {
|
||||
EventBus.getDefault().post(new NeedCompleteInfoEvent());
|
||||
}
|
||||
getDialogManager().dismissDialog();
|
||||
.doOnSuccess(s -> {
|
||||
toast("绑定手机号成功");
|
||||
setResult(RESULT_OK);
|
||||
finish();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(Throwable e) {
|
||||
})
|
||||
.doOnError(throwable -> toast(throwable.getMessage()))
|
||||
.flatMap(s -> UserModel.get().updateCurrentUserInfo())
|
||||
.doFinally(() -> {
|
||||
getDialogManager().dismissDialog();
|
||||
toast(e.getMessage());
|
||||
}
|
||||
});
|
||||
finish();
|
||||
})
|
||||
.subscribe();
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -22,8 +22,8 @@ import com.yizhuan.xchat_android_library.utils.NetworkUtils;
|
||||
import com.yizhuan.xchat_android_library.utils.TextWatcherWrapper;
|
||||
|
||||
/**
|
||||
* @author zhouxiangfeng
|
||||
* @date 17/2/26
|
||||
* 由于所有用户都需要强制绑定手机,所以理论上这里只有MainActivity会调用到这个界面
|
||||
* 但是为了以防万一,其它调用绑定手机的地方也改为调用这个页面了
|
||||
*/
|
||||
public class BindPhoneActivity extends BaseActivity implements View.OnClickListener {
|
||||
|
||||
@@ -49,11 +49,6 @@ public class BindPhoneActivity extends BaseActivity implements View.OnClickListe
|
||||
context.startActivity(intent);
|
||||
}
|
||||
|
||||
public static void startForResult(Activity context, int requestCode) {
|
||||
Intent intent = new Intent(context, BindPhoneActivity.class);
|
||||
context.startActivityForResult(intent, requestCode); // startActivityForResult会导致singletop,singletask失效
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
@@ -100,7 +95,7 @@ public class BindPhoneActivity extends BaseActivity implements View.OnClickListe
|
||||
toast(accountValidator.getErrorMessage());
|
||||
return;
|
||||
}
|
||||
BindCodeActivity.startForResult(BindPhoneActivity.this,accountEt.getText().toString(),REQUEST_CODE);
|
||||
BindCodeActivity.startForResult(BindPhoneActivity.this, accountEt.getText().toString(), REQUEST_CODE);
|
||||
break;
|
||||
|
||||
case R.id.iv_back:
|
||||
@@ -115,7 +110,7 @@ public class BindPhoneActivity extends BaseActivity implements View.OnClickListe
|
||||
@Override
|
||||
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
if (requestCode == REQUEST_CODE &&resultCode == RESULT_OK){
|
||||
if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
|
||||
finish();
|
||||
}
|
||||
}
|
||||
@@ -143,7 +138,6 @@ public class BindPhoneActivity extends BaseActivity implements View.OnClickListe
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void onBackPressed() {
|
||||
handleFinish();
|
||||
|
@@ -12,7 +12,6 @@ import com.netease.nimlib.sdk.NIMClient;
|
||||
import com.netease.nimlib.sdk.Observer;
|
||||
import com.netease.nimlib.sdk.RequestCallback;
|
||||
import com.netease.nimlib.sdk.RequestCallbackWrapper;
|
||||
import com.netease.nimlib.sdk.StatusBarNotificationConfig;
|
||||
import com.netease.nimlib.sdk.StatusCode;
|
||||
import com.netease.nimlib.sdk.auth.AuthService;
|
||||
import com.netease.nimlib.sdk.auth.AuthServiceObserver;
|
||||
@@ -31,7 +30,6 @@ import com.yizhuan.xchat_android_core.auth.event.LogoutEvent;
|
||||
import com.yizhuan.xchat_android_core.auth.exception.BanAccountException;
|
||||
import com.yizhuan.xchat_android_core.auth.exception.BigHeadPhoneException;
|
||||
import com.yizhuan.xchat_android_core.auth.exception.IsSuperAdminException;
|
||||
import com.yizhuan.xchat_android_core.auth.exception.OldMemberException;
|
||||
import com.yizhuan.xchat_android_core.auth.exception.ShowPhoneCodeException;
|
||||
import com.yizhuan.xchat_android_core.base.BaseModel;
|
||||
import com.yizhuan.xchat_android_core.bean.response.ServiceResult;
|
||||
@@ -44,8 +42,6 @@ import com.yizhuan.xchat_android_core.initial.InitialModel;
|
||||
import com.yizhuan.xchat_android_core.linked.LinkedModel;
|
||||
import com.yizhuan.xchat_android_core.linked.bean.LinkedInfo;
|
||||
import com.yizhuan.xchat_android_core.user.UserModel;
|
||||
import com.yizhuan.xchat_android_core.user.bean.UserInfo;
|
||||
import com.yizhuan.xchat_android_core.user.event.LoadLoginUserInfoEvent;
|
||||
import com.yizhuan.xchat_android_core.utils.APIEncryptUtil;
|
||||
import com.yizhuan.xchat_android_core.utils.CheckUtils;
|
||||
import com.yizhuan.xchat_android_core.utils.OldHttpErrorHandleUtil;
|
||||
@@ -947,38 +943,21 @@ public class AuthModel extends BaseModel implements IAuthModel {
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public Single<UserInfo> bindPhone(String phone, String code) {
|
||||
public Single<String> bindPhone(String phone, String code) {
|
||||
if (currentAccountInfo == null || currentAccountInfo.getUid() == 0) {
|
||||
return Single.error(new Throwable("获取不到当前用户UID"));
|
||||
}
|
||||
|
||||
return api.bindPhone(
|
||||
String.valueOf(currentAccountInfo.getUid()),
|
||||
phone,
|
||||
code,
|
||||
getTicket()
|
||||
)
|
||||
.flatMap(new Function<ServiceResult, SingleSource<String>>() {
|
||||
@Override
|
||||
public SingleSource<String> apply(ServiceResult serviceResult) throws Exception {
|
||||
.flatMap(serviceResult -> {
|
||||
if (!serviceResult.isSuccess()) {
|
||||
return Single.error(new Throwable(serviceResult.getMessage()));
|
||||
}
|
||||
return Single.just("绑定手机成功");
|
||||
}
|
||||
})
|
||||
.flatMap(new Function<String, SingleSource<UserInfo>>() {
|
||||
@Override
|
||||
public SingleSource<UserInfo> apply(String s) throws Exception {
|
||||
return UserModel.get().updateCurrentUserInfo();
|
||||
}
|
||||
})
|
||||
.doOnSuccess(new Consumer<UserInfo>() {
|
||||
@Override
|
||||
public void accept(UserInfo info) throws Exception {
|
||||
//在绑定手机号成功时,重新发出此事件
|
||||
EventBus.getDefault().post(new LoadLoginUserInfoEvent());
|
||||
}
|
||||
})
|
||||
.compose(RxHelper.handleSchedulers());
|
||||
}
|
||||
|
@@ -100,7 +100,7 @@ public interface IAuthModel extends IModel{
|
||||
* @param code
|
||||
* @return
|
||||
*/
|
||||
Single<UserInfo> bindPhone(String phone, String code);
|
||||
Single<String> bindPhone(String phone, String code);
|
||||
|
||||
/**
|
||||
* 获取手机验证码
|
||||
|
@@ -36,6 +36,7 @@ import com.yizhuan.xchat_android_core.user.event.NeedCompleteInfoEvent;
|
||||
import com.yizhuan.xchat_android_core.utils.net.RxHelper;
|
||||
import com.yizhuan.xchat_android_library.net.rxnet.RxNet;
|
||||
import com.yizhuan.xchat_android_library.utils.ListUtils;
|
||||
import com.yizhuan.xchat_android_library.utils.SingleToastUtil;
|
||||
import com.yizhuan.xchat_android_library.utils.StringUtils;
|
||||
import com.yizhuan.xchat_android_library.utils.codec.DESUtils;
|
||||
|
||||
@@ -150,6 +151,7 @@ public final class UserModel extends BaseModel implements IUserModel {
|
||||
//如果没有绑定手机号,提醒去绑定手机号
|
||||
if (userInfo.getDefUser() != 4 && !userInfo.isBindPhone()) {
|
||||
EventBus.getDefault().post(new NeedBindPhoneEvent());
|
||||
SingleToastUtil.showToast("第三方登录需绑定手机号喔~");
|
||||
return Single.error(new Throwable("need bind phone"));
|
||||
}
|
||||
//首次注册需要完善昵称和头像
|
||||
|
Reference in New Issue
Block a user