1:修改交友房

2:修改拍卖房
3:修改飘屏(没有修改成功)
This commit is contained in:
2025-09-24 00:30:40 +08:00
parent 1c54f0c072
commit 5f573e607d
43 changed files with 1172 additions and 307 deletions

View File

@@ -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)

View File

@@ -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);

View File

@@ -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;
}
}
}

View File

@@ -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;
}
}
}

View File

@@ -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());
}
});
}