兼容后台接口不规范

This commit is contained in:
lijia 2024-10-23 15:41:12 +08:00
parent b64a200deb
commit 1dae6c840f
10 changed files with 99 additions and 107 deletions

View File

@ -6,13 +6,13 @@ package com.dhsd.glowner.bean
* @Date 2024/10/16 09:58 * @Date 2024/10/16 09:58
* @Description TODO * @Description TODO
*/ */
data class CodeBean( //data class CodeBean(
val captchaEnabled: Boolean, // val captchaEnabled: Boolean,
val code: Int, // val code: Int,
val img: String, // val img: String,
val msg: String, // val msg: String,
val uuid: String // val uuid: String
) //)
data class LoginBean( data class LoginBean(
var username: String, var username: String,

View File

@ -6,6 +6,10 @@ package com.dahe.glex.bean
* @Date 2023/9/21 10:22 * @Date 2023/9/21 10:22
* @Description TODO * @Description TODO
*/ */
data class OrderListBean(
var rows: List<OrderBean>
)
data class OrderBean( data class OrderBean(
var orderId: String, var orderId: String,
var waybillId: String, var waybillId: String,

View File

@ -28,4 +28,10 @@ data class UserBean(
var credit :String var credit :String
) )
data class CodeBean(
val captchaEnabled:Boolean,
val img:String,
val uuid:String
)

View File

@ -37,7 +37,7 @@ interface Api {
* @return Observable<CommonResponseBean<CodeBean>> * @return Observable<CommonResponseBean<CodeBean>>
*/ */
@GET(BASE_URL+"devApi/code") @GET(BASE_URL+"devApi/code")
fun getCode(): Observable<CommonResponseBean<Any>> fun getCode(): Observable<CommonResponseBean<CodeBean>>
/** /**
* 是否需要验证码登录 * 是否需要验证码登录
@ -49,5 +49,8 @@ interface Api {
@GET(BASE_URL+"devApi/business/shipper/order/list") @GET(BASE_URL+"devApi/business/shipper/order/list")
fun getOrderList(): Observable<CommonResponseBean<MutableList<OrderBean>>> fun getOrderList(): Observable<CommonResponseBean<MutableList<OrderBean>>>
@GET(BASE_URL+"devApi/business/shipper/order/list")
fun getOrderList2(): Observable<CommonResponseBean<OrderListBean>>
} }

View File

@ -12,6 +12,7 @@ import android.text.style.ClickableSpan
import android.view.View import android.view.View
import android.widget.TextView import android.widget.TextView
import androidx.core.text.toSpannable import androidx.core.text.toSpannable
import com.dahe.glex.bean.CodeBean
import com.dahe.glex.bean.UserBean import com.dahe.glex.bean.UserBean
import com.dahe.mylibrary.base.BaseActivity import com.dahe.mylibrary.base.BaseActivity
import com.dahe.mylibrary.net.CommonResponseBean import com.dahe.mylibrary.net.CommonResponseBean
@ -138,15 +139,15 @@ class LoginActivity : BaseActivity<ActivityLoginBinding>(), View.OnClickListener
private fun getCode() { private fun getCode() {
DataManager.getInstance().getCode().subscribeOn(Schedulers.io()) DataManager.getInstance().getCode().subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribe(BaseObserver(mContext, object : RxHttpCallBack<Any>() { .subscribe(BaseObserver(mContext, object : RxHttpCallBack<CodeBean>() {
override fun onSuccess(t: CommonResponseBean<Any>) { override fun onSuccess(t: CommonResponseBean<CodeBean>) {
super.onSuccess(t) super.onSuccess(t)
isNeedCode = t.isCaptchaEnabled isNeedCode = t.data.captchaEnabled
if (isNeedCode) { if (isNeedCode) {
binding.run { binding.run {
ivCode.setImageBitmap(Base64Utils.base64ToBitmap(t.img)) ivCode.setImageBitmap(Base64Utils.base64ToBitmap(t.data.img))
} }
uuid = t.uuid uuid = t.data.uuid
} }
binding.llCode.visibility = if (isNeedCode) View.VISIBLE else View.GONE binding.llCode.visibility = if (isNeedCode) View.VISIBLE else View.GONE
} }

View File

@ -3,12 +3,14 @@ package com.dhsd.glowner.ui.home
import BaseObserver import BaseObserver
import DataManager import DataManager
import RxHttpCallBack import RxHttpCallBack
import android.content.Context
import android.graphics.Color import android.graphics.Color
import android.widget.LinearLayout import android.widget.LinearLayout
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.dahe.gldriver.bean.GridBean import com.dahe.gldriver.bean.GridBean
import com.dahe.glex.bean.OrderBean import com.dahe.glex.bean.OrderBean
import com.dahe.glex.bean.OrderListBean
import com.dahe.glex.bean.WayBillBean import com.dahe.glex.bean.WayBillBean
import com.dahe.mylibrary.base.BaseFragment import com.dahe.mylibrary.base.BaseFragment
import com.dahe.mylibrary.callback.RefreshCallBack import com.dahe.mylibrary.callback.RefreshCallBack
@ -97,13 +99,43 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>(), RefreshCallBack {
} }
private fun initData() { private fun initData() {
DataManager.getInstance().getOrderList() // DataManager.getInstance().getOrderList()
// .subscribeOn(Schedulers.io())
// .observeOn(AndroidSchedulers.mainThread())
// .subscribe(BaseObserver(mContext,object :RxHttpCallBack<MutableList<OrderBean>>(){
// override fun onSuccess(t: CommonResponseBean<MutableList<OrderBean>>) {
// super.onSuccess(t)
// showToast(t.rows.size.toString())
// }
//
// override fun onCodeError(
// mContext: Context?,
// t: CommonResponseBean<MutableList<OrderBean>>
// ) {
// super.onCodeError(mContext, t)
// binding.refresh.finishRefresh()
// binding.refresh.finishLoadMore()
// }
// }))
DataManager.getInstance().getOrderList2()
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribe(BaseObserver(mContext,object :RxHttpCallBack<MutableList<OrderBean>>(){ .subscribe(BaseObserver(mContext,object :RxHttpCallBack<OrderListBean>(){
override fun onSuccess(t: CommonResponseBean<MutableList<OrderBean>>) { override fun onSuccess(t: CommonResponseBean<OrderListBean>) {
super.onSuccess(t) super.onSuccess(t)
showToast(t.rows.size.toString()) showToast(t.data.rows.size.toString())
binding.refresh.finishRefresh()
binding.refresh.finishLoadMore()
}
override fun onCodeError(
mContext: Context?,
t: CommonResponseBean<OrderListBean>
) {
super.onCodeError(mContext, t)
binding.refresh.finishRefresh()
binding.refresh.finishLoadMore()
} }
})) }))
} }

View File

@ -24,7 +24,7 @@ import com.github.gzuliyujiang.wheelpicker.entity.ProvinceEntity
* @ClassName AddresEditActivity * @ClassName AddresEditActivity
* @Author john * @Author john
* @Date 2024/2/4 10:44 * @Date 2024/2/4 10:44
* @Description TODO * @Description 选择地址
*/ */
class AddressEditActivity : BaseActivity<ActivityAddressEditBinding>(), View.OnClickListener { class AddressEditActivity : BaseActivity<ActivityAddressEditBinding>(), View.OnClickListener {
override fun initView(savedInstanceState: Bundle?) { override fun initView(savedInstanceState: Bundle?) {

View File

@ -12,54 +12,6 @@ public class CommonResponseBean<T> implements Serializable {
private int code; private int code;
private String msg; private String msg;
// 数据未封装 无奈呀
private boolean captchaEnabled;
private String img;
private String uuid;
private int total;
private T rows;
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
public T getRows() {
return rows;
}
public void setRows(T rows) {
this.rows = rows;
}
public boolean isCaptchaEnabled() {
return captchaEnabled;
}
public void setCaptchaEnabled(boolean captchaEnabled) {
this.captchaEnabled = captchaEnabled;
}
public String getImg() {
return img;
}
public void setImg(String img) {
this.img = img;
}
public String getUuid() {
return uuid;
}
public void setUuid(String uuid) {
this.uuid = uuid;
}
public T getData() { public T getData() {
return data; return data;

View File

@ -1,30 +0,0 @@
package com.dahe.mylibrary.net
import java.io.Serializable
/**
* 返回通用的实体类
*/
class CommonResponseBean2<T> : Serializable {
var data : T? = null
var code = 0
var msg: String? = null
// 数据未封装 无奈呀
var isCaptchaEnabled = false
var img: String? = null
var uuid: String? = null
var total = 0
var rows: T? = null
private set
fun setRows(rows: T) {
this.rows = rows
}
fun setData(data: T) {
this.data = data
}
}

View File

@ -4,13 +4,19 @@ import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import com.google.zxing.common.StringUtils; import com.google.gson.JsonNull;
import org.json.JSONArray; import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject; import org.json.JSONObject;
import org.json.JSONTokener;
import java.io.IOException; import java.io.IOException;
import java.nio.charset.Charset; import java.nio.charset.Charset;
import java.security.spec.KeySpec;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Set;
import okhttp3.Interceptor; import okhttp3.Interceptor;
import okhttp3.MediaType; import okhttp3.MediaType;
@ -45,16 +51,34 @@ public class JsonInterceptor implements Interceptor {
Log.i(TAG, "result-body= " + responseBodyStr); Log.i(TAG, "result-body= " + responseBodyStr);
try { try {
JSONObject jsonObject = new JSONObject(responseBodyStr); JSONObject jsonObject = new JSONObject(responseBodyStr);
String str = jsonObject.optString("data"); boolean hasData = jsonObject.has("data");
int code = jsonObject.optInt("code"); if (!hasData) {
// if (-1 == code) { //兼容后台接口重新封装一下data
// jsonObject.put("data", new JSONObject()); JSONObject toData = new JSONObject();
// throw new ResultException(); Iterator<String> keys = jsonObject.keys();
// } else { // 标记需要删除的key
// if (TextUtils.isEmpty(str)) { ArrayList<String> strings = new ArrayList<>();
// jsonObject.put("data", new JSONObject()); while (keys.hasNext()) {
// } String key = keys.next();
// } if ("code".equals(key) || "msg".equals(key) ) {
continue;
}
Object o = jsonObject.get(key);
if (o instanceof JSONObject) {
toData.putOpt(key, new JSONObject(o.toString()));
} else if (o instanceof JSONArray) {
toData.putOpt(key, new JSONArray(o.toString()));
}else {
toData.putOpt(key, o);
}
strings.add(key);
}
for (String s : strings) {
jsonObject.remove(s);
}
jsonObject.put("data", toData);
}
String data = jsonObject.toString(); String data = jsonObject.toString();
responseBody = ResponseBody.create(MediaType.parse("application/json; charset=utf-8"), data); responseBody = ResponseBody.create(MediaType.parse("application/json; charset=utf-8"), data);