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