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/MainActivity.kt |   55 +++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 37 insertions(+), 18 deletions(-)

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) {
                 // 璁板綍寮傚父淇℃伅锛屼絾涓嶅奖鍝嶇敤鎴锋搷浣�

--
Gitblit v1.8.0