From 80eb39909e0d5c181dc8d6e282a292146ec51e21 Mon Sep 17 00:00:00 2001 From: zuoxiao <lf_zuo@163.com> Date: 星期三, 25 六月 2025 14:36:04 +0800 Subject: [PATCH] refactor(card): 重构卡片制作流程并添加项目号支持 --- generallibrary/src/main/java/com/dayu/general/activity/MainActivity.kt | 112 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 112 insertions(+), 0 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 81b20a0..ef6d869 100644 --- a/generallibrary/src/main/java/com/dayu/general/activity/MainActivity.kt +++ b/generallibrary/src/main/java/com/dayu/general/activity/MainActivity.kt @@ -9,6 +9,7 @@ import android.widget.Toast import androidx.core.content.ContextCompat import androidx.fragment.app.Fragment +import androidx.lifecycle.lifecycleScope import com.dayu.baselibrary.net.subscribers.SubscriberListener import com.dayu.baselibrary.utils.ToastUtil import com.dayu.general.BaseApplication @@ -16,9 +17,13 @@ import com.dayu.general.adapter.TabAdapter import com.dayu.general.bean.net.UserInfoResult import com.dayu.general.bean.net.WaterPriceResult +import com.dayu.general.dao.BaseDaoSingleton import com.dayu.general.databinding.ActivityMainBinding import com.dayu.general.net.ApiManager import com.dayu.general.net.BaseResponse +import com.dayu.general.tool.CardOperationType +import com.tencent.bugly.crashreport.CrashReport +import kotlinx.coroutines.launch class MainActivity : BaseNfcActivity() { @@ -232,4 +237,111 @@ } return super.onKeyDown(keyCode, event) } + + /** + * 鍚戞湇鍔″櫒涓婃姤鍐欏崱鎿嶄綔缁撴灉 + * 鍐欏崱鎴愬姛鍚庤皟鐢ㄦ鏂规硶閫氱煡鏈嶅姟鍣ㄦ搷浣滃畬鎴愶紝鎴愬姛鍚庢洿鏂版湰鍦版暟鎹簱isReported涓簍rue + * + * @param cardAddr 鍗″湴鍧�/鍗″彿 + * @param operationTypeCode 鎿嶄綔绫诲瀷浠g爜 + * @param orderNumber 璁㈠崟鍙� + * @param regionNumber 鍖哄煙鍙� + * @param projectNumber 椤圭洰鍙� + */ + fun postCardData( + cardAddr: String, + operationTypeCode: Int, + orderNumber: String = "", + regionNumber: String = "", + projectNumber: String = "" + ) { + val map = mutableMapOf<String, Any>() + + // 娣诲姞鍗″湴鍧�鍙傛暟 + if (cardAddr.isNotEmpty()) { + map["cardAddr"] = cardAddr + } + + // 娣诲姞鎿嶄綔绫诲瀷鍙傛暟 + // 鍒ゆ柇鏄惁涓虹鐞嗗崱鍒朵綔鎿嶄綔绫诲瀷锛�100-108锛夛紝濡傛灉鏄垯浼犻�扢ANAGEMENT_CARD_WRITE鐨勫�硷紙7锛� + val operateTypeToSend = if (operationTypeCode in 100..108) { + CardOperationType.MANAGEMENT_CARD_WRITE.code + } else { + operationTypeCode + } + map["operateType"] = operateTypeToSend + + // 娣诲姞璁㈠崟鍙峰弬鏁帮紙濡傛灉瀛樺湪锛� + if (orderNumber.isNotEmpty()) { + map["orderNumber"] = orderNumber + } + + // 娣诲姞鍖哄煙鍙峰拰椤圭洰鍙峰弬鏁� + if (regionNumber.isNotEmpty()) { + map["regionNumber"] = regionNumber + } + if (projectNumber.isNotEmpty()) { + map["projectNumber"] = projectNumber + } + + // 璋冪敤鏈嶅姟鍣ㄦ帴鍙d笂鎶ユ搷浣滅粨鏋� + ApiManager.getInstance().requestPostHideLoading( + this, + "terminal/card/termCallBack", // 缁堢鍐欏崱鍥炶皟鎺ュ彛 + String::class.java, + map, + object : SubscriberListener<BaseResponse<String>>() { + override fun onNext(t: BaseResponse<String>) { + if (t.success) { + // 涓婃姤鎴愬姛锛屾洿鏂版湰鍦版暟鎹簱isReported涓簍rue + updateCardReportedStatus(cardAddr, orderNumber) + } else { + // 涓婃姤澶辫触锛岃褰曢敊璇絾涓嶅奖鍝嶇敤鎴锋搷浣� + CrashReport.postCatchedException(Exception("涓婃姤鍐欏崱缁撴灉澶辫触: ${t.msg}")) + } + } + + override fun onError(e: Throwable?) { + super.onError(e) + // 缃戠粶閿欒锛岃褰曢敊璇絾涓嶅奖鍝嶇敤鎴锋搷浣� + CrashReport.postCatchedException(e ?: Exception("涓婃姤鍐欏崱缁撴灉缃戠粶閿欒")) + } + } + ) + } + + /** + * 鏇存柊鏈湴鏁版嵁搴撲腑鐨勪笂鎶ョ姸鎬� + * 灏咰ardRegistrationBean涓殑isReported鐘舵�佽缃负true + * + * @param cardNumber 鍗″彿 + * @param orderNumber 璁㈠崟鍙� + */ + private fun updateCardReportedStatus(cardNumber: String, orderNumber: String = "") { + lifecycleScope.launch { + try { + val cardRegistrationDao = BaseDaoSingleton.getInstance(this@MainActivity) + .cardRegistrationDao() + + // 鏍规嵁璁㈠崟鍙锋煡鎵綜ardRegistrationBean璁板綍 + 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) { + // 璁板綍寮傚父淇℃伅锛屼絾涓嶅奖鍝嶇敤鎴锋搷浣� + CrashReport.postCatchedException(e) + e.printStackTrace() + } + } + } } \ No newline at end of file -- Gitblit v1.8.0