Files
assistant-android/app/src/main/java/com/gh/common/util/LoginUtils.java
kehaoyuan badf9f9c20 修改编辑封面UI
防止手机登录连续点击获取验证码重复发送问题
2020-07-30 17:13:19 +08:00

292 lines
10 KiB
Java

package com.gh.common.util;
import android.content.Context;
import com.gh.gamecenter.retrofit.JSONObjectResponse;
import com.gh.gamecenter.retrofit.Response;
import com.gh.gamecenter.retrofit.RetrofitManager;
import com.lightgame.utils.Utils;
import org.json.JSONException;
import org.json.JSONObject;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers;
import okhttp3.MediaType;
import okhttp3.RequestBody;
import okhttp3.ResponseBody;
import retrofit2.HttpException;
/**
* Created by khy on 7/07/17.
*/
// TODO: 1/12/17 逐步整理 删除
public class LoginUtils {
// 获取验证码
public static void getPhoneCaptcha(final Context context, String phoneNum, final onCaptchaCallBackListener listener) {
JSONObject content = new JSONObject();
try {
content.put("mobile", phoneNum);
content.put("device", DeviceUtils.getLoginDevice(context.getApplicationContext()));
} catch (JSONException e) {
e.printStackTrace();
}
RequestBody body = RequestBody.create(MediaType.parse("application/json"), content.toString());
RetrofitManager.getInstance(context)
.getApi()
.loginByCaptcha(body)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new JSONObjectResponse() {
@Override
public void onResponse(JSONObject response) {
super.onResponse(response);
try {
listener.onCaptcha(response.getString("service_id"));
Utils.toast(context, "验证码短信已发送,请注意查收");
} catch (JSONException e) {
e.printStackTrace();
}
}
@Override
public void onFailure(HttpException e) {
super.onFailure(e);
listener.onCaptcha(null);
if (e == null) {
Utils.toast(context, "无法获取验证码,请检查你的网络状态");
return;
}
try {
ResponseBody responseBody = e.response().errorBody();
String string = responseBody.string();
JSONObject content = new JSONObject(string);
int code = content.getInt("code");
if (code == 403202) {
captchaErrorHint(context, content);
} else {
outputErrorHint(context, code);
}
} catch (Exception e1) {
e1.printStackTrace();
Utils.toast(context, "无法获取验证码,请检查你的网络状态");
}
}
});
}
// 注销登录
public static void logout(final Context context, final OnLogoutListener listener) {
RetrofitManager.getInstance(context)
.getApi()
.logout()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Response<ResponseBody>() {
@Override
public void onResponse(ResponseBody response) {
super.onResponse(response);
listener.onCompleted();
}
@Override
public void onFailure(HttpException e) {
super.onFailure(e);
listener.onCompleted();
}
});
}
public static void captchaErrorHint(Context context, JSONObject content) {
try {
JSONObject detail = content.getJSONObject("detail");
if ("isv.BUSINESS_LIMIT_CONTROL".equals(detail.getString("sub_code"))) {
Utils.toast(context, "获取验证码太频繁,请稍后再试");
} else {
Utils.toast(context, detail.getString("sub_msg"));
}
} catch (JSONException e) {
e.printStackTrace();
}
}
public static void outputErrorHint(Context context, int code) {
switch (code) {
case 40000:
Utils.toast(context, "参数不全");
break;
case 400001:
Utils.toast(context, "验证码获取过快,请稍后重试");// 已经发送过短信
break;
case 400002:
Utils.toast(context, "请求第三方开放平台时发生错误");
break;
case 400003:
Utils.toast(context, "上传用户头像时发生错误");
break;
case 400101:
Utils.toast(context, "缺少参数 app_id");
break;
case 400102:
Utils.toast(context, "缺少签名验证的头信息");
break;
case 400104:
Utils.toast(context, "缺少token");
break;
case 400105:
Utils.toast(context, "缺少手机号码");
break;
case 400106:
Utils.toast(context, "缺少用户名");
break;
case 400107:
Utils.toast(context, "缺少密码参数");
break;
case 400202:
Utils.toast(context, "无效的手机号码");
break;
case 400203:
Utils.toast(context, "无效的用户名");
break;
case 400204:
Utils.toast(context, "无效的头像地址");
break;
case 400205:
Utils.toast(context, "无效的性别参数");
break;
case 400206:
Utils.toast(context, "无效的地区参数");
break;
case 400208:
Utils.toast(context, "无效的密码");
break;
case 400209:
Utils.toast(context, "无效的URL 地址");
break;
case 42000:
Utils.toast(context, "无效的app_id");
break;
case 42001:
Utils.toast(context, "无效的app_secret");
break;
case 42002:
Utils.toast(context, "无效的Union_id");
break;
case 42003:
Utils.toast(context, "无效的设备信息");
break;
case 42004:
Utils.toast(context, "无效的请求");
break;
case 400301:
Utils.toast(context, "签名验证失败");
break;
case 400302:
Utils.toast(context, "验证码错误");
break;
case 400303:
Utils.toast(context, "密码错误");
break;
case 400304:
Utils.toast(context, "不支持该种方式登录");
break;
case 400305:
Utils.toast(context, "错误的状态值(应用只有两种状态: working / stop)");
break;
case 400306:
Utils.toast(context, "传递了无法识别的参数");
break;
case 400401:
Utils.toast(context, "token过期");
break;
case 400402:
Utils.toast(context, "Service_id过期,主要原因是:收到手机短信验证码后长时间没有进行登录操作");
break;
case 400403:
Utils.toast(context, "验证码已过期");
break;
case 400501:
Utils.toast(context, "同名应用已经存在");
break;
case 400502:
Utils.toast(context, "昵称已存在");
break;
case 400503:
Utils.toast(context, "名称已经存在");
break;
case 400601:
Utils.toast(context, "应用不存在");
break;
case 400602:
Utils.toast(context, "用户不存在");
break;
case 400603:
Utils.toast(context, "用户系统不存在");
break;
case 400604:
Utils.toast(context, "用户已被冻结");
break;
case 400605:
Utils.toast(context, "用户没有冻结");
break;
case 400606:
Utils.toast(context, "该应用被停止运行了");
break;
case 400801:
Utils.toast(context, "访问过于频繁");
break;
case 403007:
Utils.toast(context, "设备异常,获取验证码失败,请更换登陆方式或明天再试");
break;
case 403202:
Utils.toast(context, "403202");
break;
case 400213:
case 403016:
Utils.toast(context, "内容违规,请修改后再保存");
break;
case 403021:
Utils.toast(context, "内容可能包含敏感信息,请修改后再提交");
break;
case 403801:
Utils.toast(context, "获取验证码太频繁,请稍后再试");
break;
case 403204:
Utils.toast(context, "获取验证码太频繁,请稍后再试");
break;
case 400212:
Utils.toast(context, "请输入正确的手机号");
break;
case 400010:
Utils.toast(context, "身份证无效,请重新输入");
break;
case 400011:
Utils.toast(context, "请输入正确的身份信息");
break;
default:
Utils.toast(context, code + "");
break;
}
}
// 更改用户信息回调
public interface OnLogoutListener {
void onCompleted();
}
// 获取验证码回调
public interface onCaptchaCallBackListener {
void onCaptcha(String serviceId);
}
}