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/activity/NewCard2Activity.kt | 176 +++++++++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 137 insertions(+), 39 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 8fe770b..3f6fcb8 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,18 +171,49 @@
private fun getPaymentMethods() {
ApiManager.getInstance().requestGetLoading(
this,
- "sell/paymentmethod/get",
- PaymentMethodResponse::class.java,
+ "terminal/paymentmethod/get",
+ Any::class.java,
null,
- object : SubscriberListener<BaseResponse<PaymentMethodResponse>>() {
- override fun onNext(response: BaseResponse<PaymentMethodResponse>) {
+ object : SubscriberListener<BaseResponse<Any>>() {
+ override fun onNext(response: BaseResponse<Any>) {
if (response.success) {
- // 鑾峰彇鏀粯鏂瑰紡鍒楄〃
- val paymentMethods = response.content?.obj ?: listOf()
- if (paymentMethods.isNotEmpty()) {
- paymentMethodList = paymentMethods
- // 鏇存柊鏀粯鏂瑰紡鏄剧ず
- updatePaymentMethodRadioGroup()
+ try {
+ // 瀹夊叏鍦板鐞嗚繑鍥炵殑content锛屾湇鍔″櫒杩斿洖鐨勬槸ArrayList<LinkedHashMap>
+ val paymentMethods = mutableListOf<PaymentMethod>()
+ val content = response.content
+
+ if (content is List<*>) {
+ content.forEach { item ->
+ if (item is Map<*, *>) {
+ val id = item["id"]?.toString() ?: ""
+ val name = item["name"]?.toString() ?: ""
+ if (id.isNotEmpty() && name.isNotEmpty()) {
+ paymentMethods.add(PaymentMethod(id, name))
+ }
+ }
+ }
+ }
+
+ if (paymentMethods.isNotEmpty()) {
+ paymentMethodList = paymentMethods
+ // 鏇存柊鏀粯鏂瑰紡鏄剧ず
+ updatePaymentMethodRadioGroup()
+ } else {
+ Toast.makeText(
+ this@NewCard2Activity,
+ "鑾峰彇鏀粯鏂瑰紡澶辫触锛氳繑鍥炴暟鎹负绌�",
+ Toast.LENGTH_SHORT
+ ).show()
+ }
+ } catch (e: Exception) {
+ android.util.Log.e("NewCard2Activity", "瑙f瀽鏀粯鏂瑰紡鏁版嵁澶辫触", e)
+ android.util.Log.e("NewCard2Activity", "鍘熷鏁版嵁绫诲瀷: ${response.content?.javaClass?.name}")
+ android.util.Log.e("NewCard2Activity", "鍘熷鏁版嵁鍐呭: ${response.content}")
+ Toast.makeText(
+ this@NewCard2Activity,
+ "瑙f瀽鏀粯鏂瑰紡鏁版嵁澶辫触: ${e.message}",
+ Toast.LENGTH_SHORT
+ ).show()
}
} else {
Toast.makeText(
@@ -191,6 +226,7 @@
override fun onError(e: Throwable?) {
super.onError(e)
+ android.util.Log.e("NewCard2Activity", "缃戠粶璇锋眰澶辫触", e)
Toast.makeText(
this@NewCard2Activity,
"鑾峰彇鏀粯鏂瑰紡澶辫触: ${e?.message ?: "缃戠粶寮傚父"}",
@@ -308,11 +344,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 +356,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 +368,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,9 +377,9 @@
clientId = clientId,
cardFee = cardFee,
remark = binding.newCardRemark.text.toString(),
- paymentMethod = paymentId.toInt(),
+ paymentMethod = paymentId.toLongOrNull()?.toInt() ?: 0,
isReported = true,
- isCardWritten = true,
+ isCardWritten = false, // 鍒濆璁剧疆涓篺alse锛屽啓鍗℃垚鍔熷悗鍐嶆洿鏂颁负true
operatorId = orderId,
)
@@ -357,30 +389,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 +588,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