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/dao/BaseDaoSingleton.kt |   77 ++++++++++++++++++++++++++++----------
 1 files changed, 56 insertions(+), 21 deletions(-)

diff --git a/generallibrary/src/main/java/com/dayu/general/dao/BaseDaoSingleton.kt b/generallibrary/src/main/java/com/dayu/general/dao/BaseDaoSingleton.kt
index 1b4f9f8..cb56c7a 100644
--- a/generallibrary/src/main/java/com/dayu/general/dao/BaseDaoSingleton.kt
+++ b/generallibrary/src/main/java/com/dayu/general/dao/BaseDaoSingleton.kt
@@ -3,48 +3,83 @@
 import android.content.Context
 import android.os.Environment
 import androidx.room.Room
-import com.dayu.general.activity.BaseActivity
+import androidx.room.migration.Migration
+import androidx.sqlite.db.SupportSQLiteDatabase
 import java.io.File
 
 class BaseDaoSingleton {
 
     companion object {
         var baseDao: AppDataBase? = null
+        var AsynchBaseDao: AppDataBase? = null
         @JvmField
         val SqlitePath: String =
             Environment.getExternalStorageDirectory().absolutePath + File.separator + ".dayu" + File.separator + "data" + File.separator
-        @JvmStatic
-        fun getInstance(context: Context?): AppDataBase? {
+
+        // 鏁版嵁搴撹縼绉荤瓥鐣ワ細浠庣増鏈�3杩佺Щ鍒扮増鏈�4
+        private val MIGRATION_3_4 = object : Migration(3, 4) {
+            override fun migrate(database: SupportSQLiteDatabase) {
+                // 杩欓噷涓嶉渶瑕佸疄闄呯殑鏁版嵁搴撶粨鏋勪慨鏀癸紝鍥犱负鎴戜滑鍙槸鏇存柊浜哛oom鐗堟湰
+                // 濡傛灉闇�瑕佷慨鏀规暟鎹簱缁撴瀯锛屽彲浠ュ湪杩欓噷娣诲姞 ALTER TABLE 璇彞
+            }
+        }
+
+        // 鏁版嵁搴撹縼绉荤瓥鐣ワ細浠庣増鏈�4杩佺Щ鍒扮増鏈�5
+        private val MIGRATION_4_5 = object : Migration(4, 5) {
+            override fun migrate(database: SupportSQLiteDatabase) {
+                // 鍒涘缓绠$悊鍗¤〃
+                database.execSQL("""
+                    CREATE TABLE IF NOT EXISTS `manager_card` (
+                        `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
+                        `cardAddress` TEXT NOT NULL,
+                        `orderId` TEXT NOT NULL,
+                        `isReported` INTEGER NOT NULL DEFAULT 0,
+                        `isCardWritten` INTEGER NOT NULL DEFAULT 0,
+                        `operatorId` TEXT NOT NULL DEFAULT '',
+                        `createTime` INTEGER NOT NULL
+                    )
+                """.trimIndent())
+            }
+        }
+
+        fun getInstance(context: Context): AppDataBase {
             if (baseDao == null) {
                 baseDao = Room.databaseBuilder<AppDataBase>(
-                    context!!,
+                    context,
                     AppDataBase::class.java,
                     SqlitePath + "ConfigurationData_generalV1"
-                ).allowMainThreadQueries().build()
+                ).allowMainThreadQueries()
+                .addMigrations(MIGRATION_3_4, MIGRATION_4_5) // 娣诲姞杩佺Щ绛栫暐
+                .build()
             }
-            return baseDao
+            return baseDao as AppDataBase
+        }
+        fun getAsynchInstance(context: Context): AppDataBase {
+            if (AsynchBaseDao == null) {
+                synchronized(this) {
+                    if (AsynchBaseDao == null) {
+                        AsynchBaseDao = Room.databaseBuilder(
+                            context.applicationContext,
+                            AppDataBase::class.java,
+                            "GeneralLibrary.db"
+                        )
+                        .addMigrations(MIGRATION_3_4, MIGRATION_4_5) // 娣诲姞杩佺Щ绛栫暐
+                        .build()
+                    }
+                }
+            }
+            return AsynchBaseDao as AppDataBase
         }
 
+        // 閿�姣佹暟鎹簱瀹炰緥
+        fun destroyInstance() {
+            AsynchBaseDao = null
+        }
     }
 
 
 
-    var AsynchBaseDao: AppDataBase? = null
 
-
-
-
-
-    fun getAsynchInstance(context: Context?): AppDataBase? {
-        if (AsynchBaseDao == null) {
-            AsynchBaseDao = Room.databaseBuilder<AppDataBase>(
-                context!!,
-                AppDataBase::class.java,
-                SqlitePath + "ConfigurationData_generalV1"
-            ).build()
-        }
-        return AsynchBaseDao
-    }
 
 //    companion object {
 //        fun getAsynchInstance(baseActivity: BaseActivity): AppDataBase? {

--
Gitblit v1.8.0