1:修改交友房
2:修改拍卖房 3:修改飘屏(没有修改成功)
This commit is contained in:
@@ -91,7 +91,7 @@ public interface ApiServer {
|
||||
|
||||
@FormUrlEncoded
|
||||
@POST(Constants.LOGIN)
|
||||
Observable<BaseModel<List<UserBean>>> login(@Field("user_login") String user_login, @Field("sms_code") String sms_code);
|
||||
Call<BaseModel<List<UserBean>>> login(@Field("user_login") String user_login, @Field("sms_code") String sms_code);
|
||||
|
||||
@FormUrlEncoded //手机换绑
|
||||
@POST(Constants.MODIFY_MOBILE)
|
||||
|
||||
@@ -53,9 +53,11 @@ public abstract class BaseObserver<T> implements Observer<T> {
|
||||
} else if (e instanceof APIException) {
|
||||
APIException apiException = (APIException) e;
|
||||
if (apiException.getCode() == 301) {
|
||||
EventBus.getDefault().post(new LogOutEvent());
|
||||
|
||||
try {
|
||||
com.blankj.utilcode.util.ToastUtils.showShort("提示当前账号已在别的地方登陆,如果不是本人操作请修改密码");
|
||||
ToastUtils.show(extractChinese(apiException.getMessage()));
|
||||
// com.blankj.utilcode.util.ToastUtils.showShort("提示当前账号已在别的地方登陆,如果不是本人操作请修改密码");
|
||||
EventBus.getDefault().post(new LogOutEvent());
|
||||
CommonAppContext.getInstance().clearLoginInfo();
|
||||
} catch (ClassNotFoundException ex) {
|
||||
throw new RuntimeException(ex);
|
||||
|
||||
@@ -2,8 +2,13 @@ package com.xscm.moduleutil.http;
|
||||
|
||||
|
||||
|
||||
import com.blankj.utilcode.util.ToastUtils;
|
||||
import com.xscm.moduleutil.base.CommonAppContext;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import io.reactivex.Observable;
|
||||
import io.reactivex.ObservableSource;
|
||||
import io.reactivex.ObservableTransformer;
|
||||
@@ -23,17 +28,44 @@ public class DefaultTransformer<T> implements ObservableTransformer<BaseModel<T>
|
||||
return upstream
|
||||
.map(response -> {
|
||||
if (response.isTokenExpired()) {
|
||||
// 触发登出事件(EventBus)
|
||||
com.blankj.utilcode.util.ToastUtils.showShort("提示当前账号已在别的地方登陆,如果不是本人操作请修改密码");
|
||||
CommonAppContext.getInstance().clearLoginInfo();
|
||||
throw new APIException(-1, "登录已过期");
|
||||
if (response.getCode()==301){
|
||||
CommonAppContext.getInstance().clearLoginInfo();
|
||||
ToastUtils.showShort(response.getMsg());
|
||||
}else {
|
||||
// 触发登出事件(EventBus)
|
||||
// com.blankj.utilcode.util.ToastUtils.showShort("提示当前账号已在别的地方登陆,如果不是本人操作请修改密码");
|
||||
CommonAppContext.getInstance().clearLoginInfo();
|
||||
}
|
||||
throw new APIException(response.getCode(), response.getMsg());
|
||||
}
|
||||
|
||||
if (!response.isSuccess()) {
|
||||
throw new APIException(response.getCode(), response.getMsg());
|
||||
}
|
||||
|
||||
return response.getData();
|
||||
// 确保不会返回null值
|
||||
T data = response.getData();
|
||||
if (data == null) {
|
||||
return getDefaultValue();
|
||||
// 根据类型返回默认值
|
||||
// if (data instanceof String) {
|
||||
// data = (T) "";
|
||||
// } else if (data instanceof List) {
|
||||
// data = (T) new ArrayList<>();
|
||||
// } else if (data instanceof Integer) {
|
||||
// data = (T) Integer.valueOf(0);
|
||||
// } else if (data instanceof Long) {
|
||||
// data = (T) Long.valueOf(0L);
|
||||
// } else if (data instanceof Double) {
|
||||
// data = (T) Double.valueOf(0.0);
|
||||
// } else if (data instanceof Float) {
|
||||
// data = (T) Float.valueOf(0.0f);
|
||||
// } else if (data instanceof Boolean) {
|
||||
// data = (T) Boolean.FALSE;
|
||||
// } else {
|
||||
// data= ;
|
||||
// }
|
||||
}
|
||||
return data;
|
||||
})
|
||||
.onErrorResumeNext(throwable -> {
|
||||
// 可以在这里统一处理异常
|
||||
@@ -45,4 +77,14 @@ public class DefaultTransformer<T> implements ObservableTransformer<BaseModel<T>
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread());
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private T getDefaultValue() {
|
||||
try {
|
||||
// 尝试返回合理类型的默认值
|
||||
return (T) new Object();
|
||||
} catch (Exception e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3,6 +3,7 @@ package com.xscm.moduleutil.http;
|
||||
|
||||
import com.blankj.utilcode.util.ToastUtils;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.JsonParseException;
|
||||
import com.google.gson.TypeAdapter;
|
||||
import com.xscm.moduleutil.utils.GsonUtils;
|
||||
|
||||
@@ -25,21 +26,76 @@ public class ResponseBodyConverter<T> implements Converter<ResponseBody, T> {
|
||||
@Override
|
||||
public T convert(@NonNull ResponseBody value) throws IOException {
|
||||
String json = value.string();
|
||||
BaseModel obj = GsonUtils.GsonToBean(json, BaseModel.class);
|
||||
if (obj.getCode() != 1) {
|
||||
String info = obj.getMsg();
|
||||
if ("当前余额不足".equals(info)) {
|
||||
value.close();
|
||||
return adapter.fromJson(json);
|
||||
} else {
|
||||
if(!info.contains("更新失败")) {
|
||||
try {
|
||||
BaseModel obj = GsonUtils.GsonToBean(json, BaseModel.class);
|
||||
if (obj.getCode() != 1) {
|
||||
String info = obj.getMsg();
|
||||
if ("当前余额不足".equals(info)) {
|
||||
value.close();
|
||||
return parseDataSafely(json);
|
||||
} else {
|
||||
if (!info.contains("更新失败")) {
|
||||
// ToastUtils.showShort(info);
|
||||
}
|
||||
}
|
||||
// throw new APIException(obj.getCode(), info);
|
||||
}
|
||||
}
|
||||
value.close();
|
||||
return parseDataSafely(json);
|
||||
} catch (Exception e) {
|
||||
// 处理解析异常,避免崩溃
|
||||
value.close();
|
||||
try {
|
||||
// 尝试返回默认值
|
||||
return createDefaultInstance();
|
||||
} catch (Exception ex) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 安全地解析数据,处理各种可能的返回类型
|
||||
*/
|
||||
private T parseDataSafely(String json) {
|
||||
try {
|
||||
return adapter.fromJson(json);
|
||||
} catch (IOException | JsonParseException e) {
|
||||
// 当解析失败时,尝试其他方式处理
|
||||
try {
|
||||
// 尝试返回默认值
|
||||
return createDefaultInstance();
|
||||
} catch (Exception ex) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
value.close();
|
||||
return adapter.fromJson(json);
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建默认实例以避免null返回
|
||||
*/
|
||||
@SuppressWarnings("unused")
|
||||
private T createDefaultInstance() {
|
||||
try {
|
||||
// 对于基本类型和常见集合类型,返回默认值
|
||||
Class<?> rawType = adapter.getClass();
|
||||
if (rawType.isAssignableFrom(String.class)) {
|
||||
return (T) "";
|
||||
} else if (rawType.isAssignableFrom(Boolean.class) || rawType.isAssignableFrom(boolean.class)) {
|
||||
return (T) Boolean.FALSE;
|
||||
} else if (rawType.isAssignableFrom(Integer.class) || rawType.isAssignableFrom(int.class)) {
|
||||
return (T) Integer.valueOf(0);
|
||||
} else if (rawType.isAssignableFrom(Long.class) || rawType.isAssignableFrom(long.class)) {
|
||||
return (T) Long.valueOf(0L);
|
||||
} else if (rawType.isAssignableFrom(Double.class) || rawType.isAssignableFrom(double.class)) {
|
||||
return (T) Double.valueOf(0.0);
|
||||
} else if (rawType.isAssignableFrom(Float.class) || rawType.isAssignableFrom(float.class)) {
|
||||
return (T) Float.valueOf(0.0f);
|
||||
} else {
|
||||
// 对于其他类型,返回null而不是抛出异常
|
||||
return null;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -287,7 +287,30 @@ public class RetrofitClient {
|
||||
}
|
||||
|
||||
public void login(String mobile, String password, BaseObserver<List<UserBean>> observer) {
|
||||
sApiServer.login(mobile, password).compose(new DefaultTransformer<>()).subscribe(observer);
|
||||
sApiServer.login(mobile, password).enqueue(new Callback<BaseModel<List<UserBean>>>() {
|
||||
|
||||
@Override
|
||||
public void onResponse(Call<BaseModel<List<UserBean>>> call, Response<BaseModel<List<UserBean>>> response) {
|
||||
if (response.code() == 200){
|
||||
BaseModel<List<UserBean>> listBaseModel=response.body();
|
||||
if (listBaseModel!=null){
|
||||
int code=listBaseModel.getCode();
|
||||
if (code==1){
|
||||
observer.onNext(listBaseModel.getData());
|
||||
}else if (code==301){
|
||||
ToastUtils.showShort(listBaseModel.getMsg());
|
||||
}else {
|
||||
ToastUtils.showShort(listBaseModel.getMsg());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Call<BaseModel<List<UserBean>>> call, Throwable t) {
|
||||
t.printStackTrace();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void userLogin(String mobile, String password, BaseObserver<List<UserBean>> observer) {
|
||||
@@ -316,14 +339,18 @@ public class RetrofitClient {
|
||||
if (code == 1) {
|
||||
observer.onNext(string.getData());
|
||||
} else if (code == 301) {
|
||||
try {
|
||||
ToastUtils.showShort("提示当前账号已在别的地方登陆,如果不是本人操作请修改密码");
|
||||
CommonAppContext.getInstance().clearLoginInfo();
|
||||
} catch (ClassNotFoundException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
// try {
|
||||
ToastUtils.showShort(string.getMsg());
|
||||
// ToastUtils.showShort("提示当前账号已在别的地方登陆,如果不是本人操作请修改密码");
|
||||
// CommonAppContext.getInstance().clearLoginInfo();
|
||||
// } catch (ClassNotFoundException e) {
|
||||
// throw new RuntimeException(e);
|
||||
// }
|
||||
}else {
|
||||
|
||||
ToastUtils.showShort(string.getMsg());
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -833,7 +860,12 @@ public class RetrofitClient {
|
||||
public void onResponse(Call<BaseModel<List<UserBean>>> call, Response<BaseModel<List<UserBean>>> response) {
|
||||
if (response.code() == 200) {
|
||||
BaseModel<List<UserBean>> baseModel = response.body();
|
||||
observer.onNext(baseModel.getData());
|
||||
if (baseModel.getCode()==1) {
|
||||
observer.onNext(baseModel.getData());
|
||||
}else if (baseModel.getCode()==301){
|
||||
ToastUtils.showShort(baseModel.getMsg());
|
||||
observer.onNext(null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2048,14 +2080,16 @@ public class RetrofitClient {
|
||||
|
||||
@Override
|
||||
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
|
||||
ToastUtils.showShort("提示当前账号已在别的地方登陆,如果不是本人操作请修改密码");
|
||||
// ToastUtils.showShort("提示当前账号已在别的地方登陆,如果不是本人操作请修改密码");
|
||||
if (t.toString().contains("登录失效")) {
|
||||
try {
|
||||
CommonAppContext.getInstance().clearLoginInfo();
|
||||
ToastUtils.showShort(t.toString());
|
||||
} catch (ClassNotFoundException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
ToastUtils.showShort(t.toString());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user