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 | 134 +++++++++++++++++++++++++++++++++----------- 1 files changed, 100 insertions(+), 34 deletions(-) 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 9b7c268..c2dca73 100644 --- a/generallibrary/src/main/java/com/dayu/general/activity/NewCard2Activity.kt +++ b/generallibrary/src/main/java/com/dayu/general/activity/NewCard2Activity.kt @@ -10,6 +10,7 @@ import android.widget.Toast import androidx.lifecycle.lifecycleScope import com.dayu.baselibrary.net.subscribers.SubscriberListener +import com.dayu.baselibrary.utils.MornyUtil import com.dayu.baselibrary.view.TitleBar.ClickType_LEFT_IMAGE import com.dayu.general.BaseApplication import com.dayu.general.R @@ -23,7 +24,9 @@ import com.dayu.general.databinding.ActivityNewCardGeBinding import com.dayu.general.net.ApiManager import com.dayu.general.net.BaseResponse +import com.dayu.general.tool.BaseCommon.Companion.protocol import com.dayu.general.tool.CardCommon.Companion.USER_CARD_TYPE_1 +import com.dayu.general.tool.CardOperationType import com.dayu.general.tool.NfcReadHelper import com.dayu.general.tool.NfcWreatHelper import com.dayu.general.utils.DateUtils @@ -44,7 +47,7 @@ private var paymentMethod: String = "鐜伴噾" // 鏀粯鏂瑰紡ID - private var paymentId: Long = 0 + private var paymentId: String = "" // 鏀粯鏂瑰紡鍒楄〃 private var paymentMethodList: List<PaymentMethod> = listOf() @@ -58,15 +61,16 @@ // 瀹㈡埛ID private var clientId: String = "" - private lateinit var clientInfo : ClientInfo + private lateinit var clientInfo: ClientInfo // 鏄惁宸茶鍗� private var isReadCard: Boolean = false - private var orderId:String="" + private var orderId: String = "" companion object { private const val TAG = "NewCard2Activity" + private const val REQUEST_CODE_NFC_WRITE = 1001 } @@ -167,14 +171,14 @@ private fun getPaymentMethods() { ApiManager.getInstance().requestGetLoading( this, - "sell/paymentmethod/get", - PaymentMethodResponse::class.java, + "terminal/paymentmethod/get", + 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 // 鏇存柊鏀粯鏂瑰紡鏄剧ず @@ -308,11 +312,7 @@ // 鑾峰彇宸ユ湰璐� val cardFeeStr = binding.newCardCardFee.text.toString() - val cardFee = if (cardFeeStr.isEmpty()) 0.0 else cardFeeStr.toDouble() - - // 鏍煎紡鍖栭噾棰濅负涓や綅灏忔暟 - val formattedRechargeAmount = String.format("%.2f", rechargeAmount) - val formattedCardFee = String.format("%.2f", cardFee) + val cardFee = if (cardFeeStr.isEmpty()) 0 else cardFeeStr.toInt() val remark = binding.newCardRemark.text.toString() @@ -324,7 +324,7 @@ params["amount"] = rechargeAmount // 鍏呭�奸噾棰�(鍏�) params["paymentId"] = paymentId // 鏀粯鏂瑰紡ID params["remarks"] = remark // 澶囨敞 - params["protocol"] = "p206V1_0_1" // 鍗忚 + params["protocol"] = protocol // 鍗忚 params["operator"] = BaseApplication.userId // 鎿嶄綔浜篒D // 鎵ц鍗$墖婵�娲籄PI璇锋眰 @@ -336,7 +336,7 @@ object : SubscriberListener<BaseResponse<NewCardDataResult>>() { override fun onNext(response: BaseResponse<NewCardDataResult>) { if (response.success) { - orderId=response.content?.orderNo.toString() + orderId = response.content?.orderNo.toString() // 淇濆瓨寮�鍗′俊鎭埌鏁版嵁搴� val cardRegistration = CardRegistrationBean( cardNumber = cardPhysicalId, @@ -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, @@ -357,30 +357,88 @@ try { BaseDaoSingleton.getInstance(this@NewCard2Activity) .cardRegistrationDao().insert(cardRegistration) - - Toast.makeText( - this@NewCard2Activity, - "寮�鍗℃垚鍔�", - Toast.LENGTH_SHORT - ).show() setResult(RESULT_OK) Intent(this@NewCard2Activity, NfcWreatActivity::class.java).apply { putExtra("cardType", USER_CARD_TYPE_1) - putExtra("orderId", orderId) + putExtra("orderNumber", orderId) putExtra("cardAddr", cardPhysicalId) var userCard = UserCard() - userCard.areaNumber =clientInfo.districtNum - userCard.userCode =clientInfo.clientNum - userCard.phoneNumber =clientInfo.phone - userCard.userCodeNumber = response.content?.cardNum?.toInt()!! - userCard.projectCode = response.content?.projectNo?.toInt()!! - userCard.balance = response.content?.balance?.toInt()!! + userCard.areaNumber = + response.content?.cardNum?.substring(0, 12).toString() + userCard.userCode = clientInfo.clientNum + userCard.phoneNumber = clientInfo.phone + userCard.userCodeNumber = + response.content?.cardNum?.substring(12)?.toInt()!! + userCard.projectCode = response.content?.projectNo!! + userCard.balance = + MornyUtil.changeY2F(response.content?.balance) // userCard.surplusWater = response.content?.surplusWater?.toInt()!! - userCard.waterPrice = response.content?.waterPrice?.toFloat()!! -// userCard.electricPrice = response.content?.electricPrice?.toFloat()!! - userCard.rechargeDate = DateUtils.parseStringToCalendar(response.content?.time) + userCard.waterPrice = + MornyUtil.changeY2F(response.content?.waterPrice) + userCard.electricPrice = + MornyUtil.changeY2F(response.content?.waterPrice) + userCard.rechargeDate = + DateUtils.parseStringToCalendar(response.content?.time) + + // 杈撳嚭userCard鐨勬墍鏈変俊鎭埌鏃ュ織 + android.util.Log.d( + "NewCard2Activity", + "=== 寮�鍗serCard淇℃伅 ===" + ) + android.util.Log.d( + "NewCard2Activity", + "鍗$墖绫诲瀷: ${userCard.cardType}" + ) + android.util.Log.d( + "NewCard2Activity", + "鍥藉琛屾斂鍖哄煙鍙�: ${userCard.areaNumber}" + ) + android.util.Log.d( + "NewCard2Activity", + "鐢ㄦ埛缂栧彿: ${userCard.userCode}" + ) + android.util.Log.d( + "NewCard2Activity", + "鐢ㄦ埛鍗$紪鍙�: ${userCard.userCodeNumber}" + ) + android.util.Log.d( + "NewCard2Activity", + "瀹屾暣鐢ㄦ埛缂栧彿: ${userCard.getMyUserCode()}" + ) + android.util.Log.d( + "NewCard2Activity", + "鎵嬫満鍙�: ${userCard.phoneNumber}" + ) + android.util.Log.d( + "NewCard2Activity", + "椤圭洰缂栫爜: ${userCard.projectCode}" + ) + android.util.Log.d( + "NewCard2Activity", + "鍗″唴浣欓: ${userCard.balance}" + ) + android.util.Log.d( + "NewCard2Activity", + "鍓╀綑姘撮噺: ${userCard.surplusWater}" + ) + android.util.Log.d( + "NewCard2Activity", + "姘撮噺鍗曚环: ${userCard.waterPrice}" + ) + android.util.Log.d( + "NewCard2Activity", + "鐢甸噺鍗曚环: ${userCard.electricPrice}" + ) + android.util.Log.d( + "NewCard2Activity", + "鍏呭�兼椂闂�: ${userCard.rechargeDate}" + ) + android.util.Log.d("NewCard2Activity", "==================") + putExtra("userCard", userCard) - startActivity(this) + putExtra("operationTypeCode", CardOperationType.OpenCard.code) + putExtra("cardFee", cardFee) + startActivityForResult(this, REQUEST_CODE_NFC_WRITE) } } catch (e: Exception) { CrashReport.postCatchedException(e) @@ -498,4 +556,12 @@ } } + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + if (requestCode == REQUEST_CODE_NFC_WRITE && resultCode == RESULT_OK) { + // 鍐欏崱鎴愬姛锛屽叧闂綋鍓岮ctivity + finish() + } + } + } \ No newline at end of file -- Gitblit v1.8.0