From dd2562d8dc2b01bcdfca3152f82f09efbbd09259 Mon Sep 17 00:00:00 2001 From: zuoxiao <lf_zuo@163.com> Date: 星期三, 25 六月 2025 19:49:48 +0800 Subject: [PATCH] fix(generallibrary): 优化卡片处理和支付方式获取逻辑- 修复地区卡处理逻辑,增加对"00"类型卡的特殊处理 - 优化用户卡数据解析和显示逻辑,提高容错性 - 改进支付方式获取方法,增加错误处理和日志记录 -调整充值接口调用参数,确保正确传递当前余额等信息- 修复 AreaCard 中 areaNumber 类型,改为字符串处理 --- generallibrary/src/main/java/com/dayu/general/net/ApiManager.kt | 38 ++++++++++++++++++++++++++++++-------- 1 files changed, 30 insertions(+), 8 deletions(-) diff --git a/generallibrary/src/main/java/com/dayu/general/net/ApiManager.kt b/generallibrary/src/main/java/com/dayu/general/net/ApiManager.kt index 0667e86..4e4827c 100644 --- a/generallibrary/src/main/java/com/dayu/general/net/ApiManager.kt +++ b/generallibrary/src/main/java/com/dayu/general/net/ApiManager.kt @@ -2,6 +2,7 @@ import android.content.Context import android.util.Log +import com.dayu.baselibrary.business.BusinessProvider import com.dayu.baselibrary.net.subscribers.ProgressSubscriber import com.dayu.baselibrary.net.subscribers.SubscriberListener import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers @@ -120,13 +121,13 @@ observable .subscribeOn(Schedulers.io()) - .map(mapResponse(tClass)) + .map(mapResponse(context, tClass)) .unsubscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(mySubscriber) } - private fun <T> mapResponse(tClass: Class<T>): Function<Any, BaseResponse<T>> { + private fun <T> mapResponse(context: Context, tClass: Class<T>): Function<Any, BaseResponse<T>> { return Function { rawResponse -> when (rawResponse) { is BaseResponse<*> -> { @@ -136,12 +137,13 @@ val response = BaseResponse<T>().apply { code = temp.code msg = temp.msg ?: "" + success = temp.success } // 澶勭悊token澶辨晥鐨勬儏鍐� if (temp.code == NetConstans.TOKEN_INVALID) { // 鍙互鍦ㄨ繖閲屾坊鍔犻噸瀹氬悜鍒扮櫥褰曢〉闈㈢殑閫昏緫 - // redirectToLogin() + BusinessProvider.getBusinessProvider().startLoginNavigotor.navigateToLogin(context) return@Function response } @@ -157,13 +159,33 @@ } is List<*> -> { try { - @Suppress("UNCHECKED_CAST") - response.content = MyJsonParser.getListByJson( - MyJsonParser.getJsonbyList(content), - tClass - ) as T + // 鐩存帴澶勭悊List绫诲瀷鐨刢ontent锛屼笉闇�瑕侀噸鏂拌В鏋� + when { + // 濡傛灉鐩爣绫诲瀷鏄疞ist鐨勫瓙绫伙紙濡侾aymentMethodListResponse锛夛紝鐩存帴杞崲 + List::class.java.isAssignableFrom(tClass) -> { + @Suppress("UNCHECKED_CAST") + response.content = content as T + } + // 濡傛灉content鏄疢ap鍒楄〃锛屽皾璇曡浆鎹负鐩爣瀵硅薄鍒楄〃 + content.isNotEmpty() && content[0] is Map<*, *> -> { + val jsonData = MyJsonParser.getJsonbyList(content) + @Suppress("UNCHECKED_CAST") + response.content = MyJsonParser.getListByJson(jsonData, tClass) as T + } + else -> { + @Suppress("UNCHECKED_CAST") + response.content = content as T + } + } } catch (e: Exception) { Log.e(TAG, "Error parsing list content", e) + // 濡傛灉瑙f瀽澶辫触锛屽皾璇曠洿鎺ヨ浆鎹� + try { + @Suppress("UNCHECKED_CAST") + response.content = content as T + } catch (e2: Exception) { + Log.e(TAG, "Failed to cast content directly", e2) + } } } is Int, is String, is Boolean -> { -- Gitblit v1.8.0