From 5edfd12deb166302708857515a833d1471a0f208 Mon Sep 17 00:00:00 2001
From: zuoxiao <lf_zuo@163.com>
Date: 星期三, 25 六月 2025 16:15:23 +0800
Subject: [PATCH] feat(database): 增加管理卡相关功能并优化数据库结构- 新增 ManagerCardBean 数据类用于管理卡信息 - 在 AppDataBase 中添加 ManagerCardDao 接口 - 实现管理卡的数据库迁移策略 - 优化支付方式 ID 类型,从 Long改为 String - 重构更新写卡和上报状态的逻辑,支持管理卡和用户卡

---
 generallibrary/src/main/java/com/dayu/general/activity/NewCard2Activity.kt       |   14 +-
 generallibrary/src/main/java/com/dayu/general/bean/db/ManagerCardBean.kt         |   16 ++++
 generallibrary/src/main/java/com/dayu/general/dao/ManagerCardDao.kt              |   31 +++++++
 generallibrary/src/main/java/com/dayu/general/dao/AppDataBase.kt                 |    4 
 generallibrary/src/main/java/com/dayu/general/activity/MainActivity.kt           |   55 +++++++++----
 generallibrary/src/main/java/com/dayu/general/activity/RechargeDetailActivity.kt |   14 +-
 generallibrary/src/main/java/com/dayu/general/bean/net/NewCardInfo.kt            |    2 
 generallibrary/src/main/java/com/dayu/general/dao/BaseDaoSingleton.kt            |   24 +++++
 generallibrary/src/main/java/com/dayu/general/activity/CardReplaceActivity.kt    |    2 
 generallibrary/src/main/java/com/dayu/general/activity/NfcWreatActivity.kt       |   77 +++++++++++-------
 10 files changed, 172 insertions(+), 67 deletions(-)

diff --git a/generallibrary/src/main/java/com/dayu/general/activity/CardReplaceActivity.kt b/generallibrary/src/main/java/com/dayu/general/activity/CardReplaceActivity.kt
index a2a3283..14a7cff 100644
--- a/generallibrary/src/main/java/com/dayu/general/activity/CardReplaceActivity.kt
+++ b/generallibrary/src/main/java/com/dayu/general/activity/CardReplaceActivity.kt
@@ -43,7 +43,7 @@
 
     // 鏀粯鏂瑰紡鐩稿叧灞炴��
     private var paymentMethod: String = "鐜伴噾"
-    private var paymentId: Long = 0
+    private var paymentId: String = ""
     private var paymentMethodList: List<PaymentMethod> = listOf()
 
     companion object {
diff --git a/generallibrary/src/main/java/com/dayu/general/activity/MainActivity.kt b/generallibrary/src/main/java/com/dayu/general/activity/MainActivity.kt
index ef6d869..9c52341 100644
--- a/generallibrary/src/main/java/com/dayu/general/activity/MainActivity.kt
+++ b/generallibrary/src/main/java/com/dayu/general/activity/MainActivity.kt
@@ -294,7 +294,7 @@
                 override fun onNext(t: BaseResponse<String>) {
                     if (t.success) {
                         // 涓婃姤鎴愬姛锛屾洿鏂版湰鍦版暟鎹簱isReported涓簍rue
-                        updateCardReportedStatus(cardAddr, orderNumber)
+                        updateCardReportedStatus(cardAddr, orderNumber, operationTypeCode)
                     } else {
                         // 涓婃姤澶辫触锛岃褰曢敊璇絾涓嶅奖鍝嶇敤鎴锋搷浣�
                         CrashReport.postCatchedException(Exception("涓婃姤鍐欏崱缁撴灉澶辫触: ${t.msg}"))
@@ -312,30 +312,49 @@
 
     /**
      * 鏇存柊鏈湴鏁版嵁搴撲腑鐨勪笂鎶ョ姸鎬�
-     * 灏咰ardRegistrationBean涓殑isReported鐘舵�佽缃负true
+     * 鏍规嵁鎿嶄綔绫诲瀷鍒ゆ柇鏄洿鏂癕anagerCardBean杩樻槸CardRegistrationBean鐨刬sReported鐘舵�佷负true
      *
      * @param cardNumber 鍗″彿
      * @param orderNumber 璁㈠崟鍙�
+     * @param operationTypeCode 鎿嶄綔绫诲瀷浠g爜
      */
-    private fun updateCardReportedStatus(cardNumber: String, orderNumber: String = "") {
+    private fun updateCardReportedStatus(cardNumber: String, orderNumber: String = "", operationTypeCode: Int = -1) {
         lifecycleScope.launch {
             try {
-                val cardRegistrationDao = BaseDaoSingleton.getInstance(this@MainActivity)
-                    .cardRegistrationDao()
-
-                // 鏍规嵁璁㈠崟鍙锋煡鎵綜ardRegistrationBean璁板綍
-                val cardRegistration = if (orderNumber.isNotEmpty()) {
-                    cardRegistrationDao.getByOrderId(orderNumber)
-                } else {
-                    // 濡傛灉娌℃湁璁㈠崟鍙凤紝鍒欓�氳繃鍗″彿鏌ユ壘
-                    cardRegistrationDao.getByCardNumber(cardNumber)
-                }
+                val baseDaoSingleton = BaseDaoSingleton.getInstance(this@MainActivity)
                 
-                if (cardRegistration != null) {
-                    // 鍒涘缓鏇存柊鍚庣殑CardRegistrationBean瀵硅薄锛屽皢isReported璁剧疆涓簍rue
-                    val updatedCardRegistration = cardRegistration.copy(isReported = true)
-                    // 鏇存柊鏁版嵁搴撹褰�
-                    cardRegistrationDao.update(updatedCardRegistration)
+                // 鏍规嵁鎿嶄綔绫诲瀷鍒ゆ柇鏄鐞嗗崱杩樻槸鐢ㄦ埛鍗℃搷浣�
+                val isManagerCardOperation = operationTypeCode in 100..108
+                
+                if (isManagerCardOperation) {
+                    // 绠$悊鍗″埗浣滄搷浣滅被鍨嬶紝鏌ヨ鍜屾洿鏂癕anagerCardBean
+                    val managerCardDao = baseDaoSingleton.managerCardDao()
+                    val managerCard = if (orderNumber.isNotEmpty()) {
+                        managerCardDao.getByOrderId(orderNumber)
+                    } else {
+                        managerCardDao.getByCardAddress(cardNumber)
+                    }
+                    
+                    if (managerCard != null) {
+                        val updatedManagerCard = managerCard.copy(isReported = true)
+                        managerCardDao.update(updatedManagerCard)
+                    }
+                } else {
+                    // 鐢ㄦ埛鍗℃搷浣滅被鍨嬶紝鏌ヨ鍜屾洿鏂癈ardRegistrationBean
+                    val cardRegistrationDao = baseDaoSingleton.cardRegistrationDao()
+                    val cardRegistration = if (orderNumber.isNotEmpty()) {
+                        cardRegistrationDao.getByOrderId(orderNumber)
+                    } else {
+                        // 濡傛灉娌℃湁璁㈠崟鍙凤紝鍒欓�氳繃鍗″彿鏌ユ壘
+                        cardRegistrationDao.getByCardNumber(cardNumber)
+                    }
+                    
+                    if (cardRegistration != null) {
+                        // 鍒涘缓鏇存柊鍚庣殑CardRegistrationBean瀵硅薄锛屽皢isReported璁剧疆涓簍rue
+                        val updatedCardRegistration = cardRegistration.copy(isReported = true)
+                        // 鏇存柊鏁版嵁搴撹褰�
+                        cardRegistrationDao.update(updatedCardRegistration)
+                    }
                 }
             } catch (e: Exception) {
                 // 璁板綍寮傚父淇℃伅锛屼絾涓嶅奖鍝嶇敤鎴锋搷浣�
diff --git a/generallibrary/src/main/java/com/dayu/general/activity/NewCard2Activity.kt b/generallibrary/src/main/java/com/dayu/general/activity/NewCard2Activity.kt
index 7d370bd..c2dca73 100644
--- a/generallibrary/src/main/java/com/dayu/general/activity/NewCard2Activity.kt
+++ b/generallibrary/src/main/java/com/dayu/general/activity/NewCard2Activity.kt
@@ -47,7 +47,7 @@
     private var paymentMethod: String = "鐜伴噾"
 
     // 鏀粯鏂瑰紡ID
-    private var paymentId: Long = 0
+    private var paymentId: String = ""
 
     // 鏀粯鏂瑰紡鍒楄〃
     private var paymentMethodList: List<PaymentMethod> = listOf()
@@ -172,13 +172,13 @@
         ApiManager.getInstance().requestGetLoading(
             this,
             "terminal/paymentmethod/get",
-            PaymentMethodResponse::class.java,
+            Array<PaymentMethod>::class.java,
             null,
-            object : SubscriberListener<BaseResponse<PaymentMethodResponse>>() {
-                override fun onNext(response: BaseResponse<PaymentMethodResponse>) {
+            object : SubscriberListener<BaseResponse<Array<PaymentMethod>>>() {
+                override fun onNext(response: BaseResponse<Array<PaymentMethod>>) {
                     if (response.success) {
-                        // 鑾峰彇鏀粯鏂瑰紡鍒楄〃
-                        val paymentMethods = response.content?.obj ?: listOf()
+                        // 鑾峰彇鏀粯鏂瑰紡鍒楄〃锛岀幇鍦╟ontent鐩存帴鏄疨aymentMethod鏁扮粍
+                        val paymentMethods = response.content?.toList() ?: listOf()
                         if (paymentMethods.isNotEmpty()) {
                             paymentMethodList = paymentMethods
                             // 鏇存柊鏀粯鏂瑰紡鏄剧ず
@@ -345,7 +345,7 @@
                             clientId = clientId,
                             cardFee = cardFee,
                             remark = binding.newCardRemark.text.toString(),
-                            paymentMethod = paymentId.toInt(),
+                            paymentMethod = paymentId.toLongOrNull()?.toInt() ?: 0,
                             isReported = true,
                             isCardWritten = false, // 鍒濆璁剧疆涓篺alse锛屽啓鍗℃垚鍔熷悗鍐嶆洿鏂颁负true
                             operatorId = orderId,
diff --git a/generallibrary/src/main/java/com/dayu/general/activity/NfcWreatActivity.kt b/generallibrary/src/main/java/com/dayu/general/activity/NfcWreatActivity.kt
index 8539f83..af95df2 100644
--- a/generallibrary/src/main/java/com/dayu/general/activity/NfcWreatActivity.kt
+++ b/generallibrary/src/main/java/com/dayu/general/activity/NfcWreatActivity.kt
@@ -594,7 +594,7 @@
 
     /**
      * 鏇存柊鏈湴鏁版嵁搴撲腑鐨勫啓鍗$姸鎬�
-     * 灏咰ardRegistrationBean涓殑isCardWritten鐘舵�佽缃负true
+     * 鏍规嵁鎿嶄綔绫诲瀷鍒ゆ柇鏄洿鏂癕anagerCardBean杩樻槸CardRegistrationBean鐨刬sCardWritten鐘舵�佷负true
      * 鐒跺悗璺宠浆鍒板啓鍗℃垚鍔熺晫闈紝骞堕�氱煡MainActivity璋冪敤postCardData
      *
      * @param cardNumber 鍗″彿
@@ -602,37 +602,54 @@
     private fun updateCardWrittenStatus(cardNumber: String) {
         lifecycleScope.launch {
             try {
-                val cardRegistrationDao = BaseDaoSingleton.getInstance(this@NfcWreatActivity)
-                    .cardRegistrationDao()
-
-                // 鏍规嵁璁㈠崟鍙锋煡鎵綜ardRegistrationBean璁板綍
-                val cardRegistration = cardRegistrationDao.getByOrderId(orderNumber)
-
-                if (cardRegistration != null) {
-                    // 鍒涘缓鏇存柊鍚庣殑CardRegistrationBean瀵硅薄锛屽皢isCardWritten璁剧疆涓簍rue
-                    val updatedCardRegistration = cardRegistration.copy(isCardWritten = true)
-                    // 鏇存柊鏁版嵁搴撹褰�
-                    cardRegistrationDao.update(updatedCardRegistration)
-
-                    // 鍦ㄤ富绾跨▼涓叧闂瑼ctivity骞惰烦杞埌鎴愬姛椤甸潰
-                    runOnUiThread {
-                        setResult(RESULT_OK)
-                        finish()
-                        
-                        // 璺宠浆鍒板啓鍗℃垚鍔熺晫闈�
-                        Intent(this@NfcWreatActivity, CardWriteSuccessActivity::class.java).apply {
-                            putExtra("cardNumber", cardNumber)
-                            if (::userCard.isInitialized) {
-                                putExtra("userCard", userCard)
-                            }
-                            putExtra("operationTypeCode", operationTypeCode)
-                            startActivity(this)
-                        }
-                        
-                        // 閫氱煡MainActivity璋冪敤postCardData
-                        notifyMainActivityToPostCardData(cardNumber)
+                val baseDaoSingleton = BaseDaoSingleton.getInstance(this@NfcWreatActivity)
+                
+                // 鏍规嵁鎿嶄綔绫诲瀷鍒ゆ柇鏄鐞嗗崱杩樻槸鐢ㄦ埛鍗℃搷浣�
+                val isManagerCardOperation = operationTypeCode in 100..108
+                
+                var updateSuccess = false
+                
+                if (isManagerCardOperation) {
+                    // 绠$悊鍗″埗浣滄搷浣滅被鍨嬶紝鏌ヨ鍜屾洿鏂癕anagerCardBean
+                    val managerCardDao = baseDaoSingleton.managerCardDao()
+                    val managerCard = managerCardDao.getByOrderId(orderNumber)
+                    
+                    if (managerCard != null) {
+                        val updatedManagerCard = managerCard.copy(isCardWritten = true)
+                        managerCardDao.update(updatedManagerCard)
+                        updateSuccess = true
+                    }
+                } else {
+                    // 鐢ㄦ埛鍗℃搷浣滅被鍨嬶紝鏌ヨ鍜屾洿鏂癈ardRegistrationBean
+                    val cardRegistrationDao = baseDaoSingleton.cardRegistrationDao()
+                    val cardRegistration = cardRegistrationDao.getByOrderId(orderNumber)
+                    
+                    if (cardRegistration != null) {
+                        val updatedCardRegistration = cardRegistration.copy(isCardWritten = true)
+                        cardRegistrationDao.update(updatedCardRegistration)
+                        updateSuccess = true
                     }
                 }
+
+                // 鏃犺鏄惁鎵惧埌璁板綍锛岄兘璺宠浆鍒版垚鍔熺晫闈�
+                runOnUiThread {
+                    setResult(RESULT_OK)
+                    finish()
+                    
+                    // 璺宠浆鍒板啓鍗℃垚鍔熺晫闈�
+                    Intent(this@NfcWreatActivity, CardWriteSuccessActivity::class.java).apply {
+                        putExtra("cardNumber", cardNumber)
+                        if (::userCard.isInitialized) {
+                            putExtra("userCard", userCard)
+                        }
+                        putExtra("operationTypeCode", operationTypeCode)
+                        startActivity(this)
+                    }
+                    
+                    // 閫氱煡MainActivity璋冪敤postCardData
+                    notifyMainActivityToPostCardData(cardNumber)
+                }
+                
             } catch (e: Exception) {
                 // 璁板綍寮傚父淇℃伅
                 CrashReport.postCatchedException(e)
diff --git a/generallibrary/src/main/java/com/dayu/general/activity/RechargeDetailActivity.kt b/generallibrary/src/main/java/com/dayu/general/activity/RechargeDetailActivity.kt
index 97ad182..3ec2878 100644
--- a/generallibrary/src/main/java/com/dayu/general/activity/RechargeDetailActivity.kt
+++ b/generallibrary/src/main/java/com/dayu/general/activity/RechargeDetailActivity.kt
@@ -38,7 +38,7 @@
 
     // 鏀粯鏂瑰紡鐩稿叧灞炴��
     private var paymentMethod: String = "鐜伴噾"
-    private var paymentId: Long = 0
+    private var paymentId: String = ""
     private var paymentMethodList: List<PaymentMethod> = listOf()
 
     companion object {
@@ -155,13 +155,13 @@
         ApiManager.getInstance().requestGetLoading(
             this,
             "terminal/paymentmethod/get",
-            PaymentMethodResponse::class.java,
+            Array<PaymentMethod>::class.java,
             null,
-            object : SubscriberListener<BaseResponse<PaymentMethodResponse>>() {
-                override fun onNext(response: BaseResponse<PaymentMethodResponse>) {
+            object : SubscriberListener<BaseResponse<Array<PaymentMethod>>>() {
+                override fun onNext(response: BaseResponse<Array<PaymentMethod>>) {
                     if (response.success) {
-                        // 鑾峰彇鏀粯鏂瑰紡鍒楄〃
-                        val paymentMethods = response.content?.obj ?: listOf()
+                        // 鑾峰彇鏀粯鏂瑰紡鍒楄〃锛岀幇鍦╟ontent鐩存帴鏄疨aymentMethod鏁扮粍
+                        val paymentMethods = response.content?.toList() ?: listOf()
                         if (paymentMethods.isNotEmpty()) {
                             paymentMethodList = paymentMethods
                             // 鏇存柊鏀粯鏂瑰紡鏄剧ず
@@ -365,7 +365,7 @@
             money = String.format("%.0f", rechargeAmount),
             amount = String.format("%.0f", bonusAmount),
             gift = String.format("%.0f", bonusAmount),
-            paymentId = paymentId.toString(),
+            paymentId = paymentId,
             price = String.format("%.2f", currentWaterPrice), // 浣跨敤缁熶竴鑾峰彇鐨勬按浠�
             remarks = "鍏呭��",
             operator = BaseApplication.userId // 榛樿鎿嶄綔鍛業D锛屽彲浠ユ牴鎹疄闄呮儏鍐佃皟鏁�
diff --git a/generallibrary/src/main/java/com/dayu/general/bean/db/ManagerCardBean.kt b/generallibrary/src/main/java/com/dayu/general/bean/db/ManagerCardBean.kt
new file mode 100644
index 0000000..310d5a2
--- /dev/null
+++ b/generallibrary/src/main/java/com/dayu/general/bean/db/ManagerCardBean.kt
@@ -0,0 +1,16 @@
+package com.dayu.general.bean.db
+
+import androidx.room.Entity
+import androidx.room.PrimaryKey
+
+@Entity(tableName = "manager_card")
+data class ManagerCardBean(
+    @PrimaryKey(autoGenerate = true)
+    val id: Long = 0,
+    val cardAddress: String, // 鍗″湴鍧�
+    val orderId: String, // 璁㈠崟id
+    val isReported: Boolean = false, // 鏄惁涓婃姤鎴愬姛
+    val isCardWritten: Boolean = false, // 鏄惁鍐欏崱鎴愬姛
+    val operatorId: String = "", // 鎿嶄綔浜篿d
+    val createTime: Long = System.currentTimeMillis() // 鍒涘缓鏃堕棿
+) 
\ No newline at end of file
diff --git a/generallibrary/src/main/java/com/dayu/general/bean/net/NewCardInfo.kt b/generallibrary/src/main/java/com/dayu/general/bean/net/NewCardInfo.kt
index dd85942..fabf9a7 100644
--- a/generallibrary/src/main/java/com/dayu/general/bean/net/NewCardInfo.kt
+++ b/generallibrary/src/main/java/com/dayu/general/bean/net/NewCardInfo.kt
@@ -2,7 +2,7 @@
 
 // 鏀粯鏂瑰紡鏁版嵁绫�
 data class PaymentMethod(
-    val id: Long,
+    val id: String,
     val name: String
 )
 
diff --git a/generallibrary/src/main/java/com/dayu/general/dao/AppDataBase.kt b/generallibrary/src/main/java/com/dayu/general/dao/AppDataBase.kt
index f8cfcb7..5b1d8d6 100644
--- a/generallibrary/src/main/java/com/dayu/general/dao/AppDataBase.kt
+++ b/generallibrary/src/main/java/com/dayu/general/dao/AppDataBase.kt
@@ -4,14 +4,16 @@
 import androidx.room.RoomDatabase
 import com.dayu.general.bean.db.CardData
 import com.dayu.general.bean.db.CardRegistrationBean
+import com.dayu.general.bean.db.ManagerCardBean
 import com.dayu.general.bean.db.PassWordCardBean
 import com.dayu.general.bean.db.ProjectDataBean
 import com.dayu.general.bean.db.RechargeRecordBean
 
-@Database(entities = [PassWordCardBean::class, CardData::class, ProjectDataBean::class, CardRegistrationBean::class, RechargeRecordBean::class], version = 4, exportSchema = false)
+@Database(entities = [PassWordCardBean::class, CardData::class, ProjectDataBean::class, CardRegistrationBean::class, RechargeRecordBean::class, ManagerCardBean::class], version = 5, exportSchema = false)
 abstract class AppDataBase : RoomDatabase() {
     abstract fun cardDataDao(): CardDataDao
     abstract fun projectDataDao(): ProjectDataDao
     abstract fun cardRegistrationDao(): CardRegistrationDao
     abstract fun rechargeRecordDao(): RechargeRecordDao
+    abstract fun managerCardDao(): ManagerCardDao
 }
\ No newline at end of file
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 a58d63f..cb56c7a 100644
--- a/generallibrary/src/main/java/com/dayu/general/dao/BaseDaoSingleton.kt
+++ b/generallibrary/src/main/java/com/dayu/general/dao/BaseDaoSingleton.kt
@@ -24,13 +24,33 @@
             }
         }
 
+        // 鏁版嵁搴撹縼绉荤瓥鐣ワ細浠庣増鏈�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,
                     AppDataBase::class.java,
                     SqlitePath + "ConfigurationData_generalV1"
-                ).allowMainThreadQueries().build()
+                ).allowMainThreadQueries()
+                .addMigrations(MIGRATION_3_4, MIGRATION_4_5) // 娣诲姞杩佺Щ绛栫暐
+                .build()
             }
             return baseDao as AppDataBase
         }
@@ -43,7 +63,7 @@
                             AppDataBase::class.java,
                             "GeneralLibrary.db"
                         )
-                        .addMigrations(MIGRATION_3_4) // 娣诲姞杩佺Щ绛栫暐
+                        .addMigrations(MIGRATION_3_4, MIGRATION_4_5) // 娣诲姞杩佺Щ绛栫暐
                         .build()
                     }
                 }
diff --git a/generallibrary/src/main/java/com/dayu/general/dao/ManagerCardDao.kt b/generallibrary/src/main/java/com/dayu/general/dao/ManagerCardDao.kt
new file mode 100644
index 0000000..2ca2c19
--- /dev/null
+++ b/generallibrary/src/main/java/com/dayu/general/dao/ManagerCardDao.kt
@@ -0,0 +1,31 @@
+package com.dayu.general.dao
+
+import androidx.room.*
+import com.dayu.general.bean.db.ManagerCardBean
+
+@Dao
+interface ManagerCardDao {
+    @Insert
+    suspend fun insert(managerCard: ManagerCardBean): Long
+
+    @Update
+    suspend fun update(managerCard: ManagerCardBean)
+
+    @Delete
+    suspend fun delete(managerCard: ManagerCardBean)
+
+    @Query("SELECT * FROM manager_card WHERE cardAddress = :cardAddress")
+    suspend fun getByCardAddress(cardAddress: String): ManagerCardBean?
+
+    @Query("SELECT * FROM manager_card WHERE orderId = :orderId")
+    suspend fun getByOrderId(orderId: String): ManagerCardBean?
+
+    @Query("SELECT * FROM manager_card WHERE isReported = 0")
+    suspend fun getUnreportedCards(): List<ManagerCardBean>
+
+    @Query("SELECT * FROM manager_card WHERE isCardWritten = 0")
+    suspend fun getUnwrittenCards(): List<ManagerCardBean>
+
+    @Query("SELECT * FROM manager_card ORDER BY createTime DESC")
+    suspend fun getAllCards(): List<ManagerCardBean>
+} 
\ No newline at end of file

--
Gitblit v1.8.0