From 87e5604ad04c0b7aaacf3d52bae85e62d308cb6d Mon Sep 17 00:00:00 2001
From: zuoxiao <lf_zuo@163.com>
Date: 星期四, 26 六月 2025 16:41:02 +0800
Subject: [PATCH] refactor(generallibrary):重构开卡成功界面并移除未使用的开卡界面
---
/dev/null | 600 --------------------------
generallibrary/src/main/java/com/dayu/general/activity/SearchUserListActivity.kt | 2
generallibrary/src/main/java/com/dayu/general/bean/net/NewCardInfo.kt | 6
generallibrary/src/main/AndroidManifest.xml | 13
generallibrary/src/main/java/com/dayu/general/activity/CardWriteSuccessActivity.kt | 114 +++-
generallibrary/src/main/java/com/dayu/general/activity/NewCardActivity.kt | 598 +++++++++++++++++++++++++
generallibrary/src/main/java/com/dayu/general/activity/NfcWreatActivity.kt | 8
7 files changed, 682 insertions(+), 659 deletions(-)
diff --git a/generallibrary/src/main/AndroidManifest.xml b/generallibrary/src/main/AndroidManifest.xml
index 24cbef4..b9de4d7 100644
--- a/generallibrary/src/main/AndroidManifest.xml
+++ b/generallibrary/src/main/AndroidManifest.xml
@@ -12,10 +12,6 @@
android:name="android.hardware.nfc"
android:required="true" />
- <!-- <intent-filter>-->
- <!-- <action android:name="android.nfc.action.TAG_DISCOVERED" />-->
- <!-- <data android:mimeType="text/plain" />-->
- <!-- </intent-filter>-->
<!--鐢ㄤ簬杩涜缃戠粶瀹氫綅-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<!--鐢ㄤ簬璁块棶GPS瀹氫綅-->
@@ -39,7 +35,7 @@
android:supportsRtl="true"
android:theme="@style/AppTheme">
- <activity android:name="com.dayu.general.activity.NewCardActivity" />
+
<activity android:name="com.dayu.general.activity.ManageListActivity" />
<activity android:name="com.dayu.general.activity.SearchUserListActivity" />
<activity android:name="com.dayu.general.activity.RechargeDetailActivity" />
@@ -76,7 +72,7 @@
</activity>
<activity android:name=".activity.SearchCardListActivity" />
<activity
- android:name=".activity.NewCard2Activity"
+ android:name=".activity.NewCardActivity"
android:exported="false"
android:launchMode="singleTop">
<intent-filter>
@@ -138,8 +134,9 @@
<activity
android:name=".activity.CardUnlossActivity"
android:exported="false"
- android:launchMode="singleTop"/>
- <activity android:name=".activity.CardReplaceActivity"
+ android:launchMode="singleTop" />
+ <activity
+ android:name=".activity.CardReplaceActivity"
android:exported="false"
android:launchMode="singleTop">
<intent-filter>
diff --git a/generallibrary/src/main/java/com/dayu/general/activity/CardWriteSuccessActivity.kt b/generallibrary/src/main/java/com/dayu/general/activity/CardWriteSuccessActivity.kt
index 6872853..8af188e 100644
--- a/generallibrary/src/main/java/com/dayu/general/activity/CardWriteSuccessActivity.kt
+++ b/generallibrary/src/main/java/com/dayu/general/activity/CardWriteSuccessActivity.kt
@@ -7,6 +7,7 @@
import com.dayu.general.BaseApplication
import com.dayu.general.bean.card.UserCard
import com.dayu.general.bean.net.CardInfoResult
+import com.dayu.general.bean.net.ClientInfo
import com.dayu.general.databinding.ActivityCardWriteSuccessBinding
import com.dayu.general.tool.CardOperationType
@@ -24,6 +25,7 @@
private var userCard: UserCard? = null
private var orderNumber: String? = null
private var cardInfo: CardInfoResult? = null
+ private var clientInfo: ClientInfo? = null
// 鍏呭�肩浉鍏冲弬鏁�
private var rechargeAmount = 0.0
@@ -69,6 +71,10 @@
if (intent.hasExtra("cardInfo")) {
cardInfo = intent.getSerializableExtra("cardInfo") as CardInfoResult
+ }
+
+ if (intent.hasExtra("clientInfo")) {
+ clientInfo = intent.getSerializableExtra("clientInfo") as ClientInfo
}
initView()
@@ -186,12 +192,38 @@
CardOperationType.OpenCard -> {
binding.titleBar.setCenterText("寮�鍗℃垚鍔�")
binding.successTitle.text = "寮�鍗℃垚鍔�"
+
val messageBuilder = StringBuilder()
+ messageBuilder.append("寮�鍗℃搷浣滃凡鎴愬姛瀹屾垚\n")
+
+ // 鏄剧ず鐢ㄦ埛濮撳悕
+ val userName = getUserName()
+ if (!userName.isNullOrEmpty()) {
+ messageBuilder.append("鐢ㄦ埛濮撳悕锛�$userName\n")
+ }
+
+ // 鏄剧ず鍗″湴鍧�
+ val cardAddress = cardNumber ?: cardAddr
+ if (!cardAddress.isNullOrEmpty()) {
+ messageBuilder.append("鍗″湴鍧�锛�$cardAddress\n")
+ }
+
+ // 鏄剧ず宸ユ湰璐�
+ if (cardFee > 0) {
+ messageBuilder.append("宸ユ湰璐癸細${cardFee}鍏僜n")
+ }
+
+ // 鏄剧ず鍏呭�奸噾棰�
if (rechargeAmount > 0) {
messageBuilder.append("鍏呭�奸噾棰濓細${String.format("%.2f", rechargeAmount)}鍏僜n")
}
+
+ // 鏄剧ず鍗″唴浣欓
messageBuilder.append("鍗″唴浣欓锛�${MornyUtil.changeF2Y(userCard?.balance ?: 0)}鍏�")
- // 鍏呭�兼垚鍔熷悗鑷姩鎵撳嵃
+
+ binding.successMessage.text = messageBuilder.toString()
+
+ // 寮�鍗℃垚鍔熷悗鑷姩鎵撳嵃
userCard?.let { card ->
doPrint(card)
}
@@ -230,6 +262,14 @@
}
/**
+ * 鑾峰彇鐢ㄦ埛濮撳悕锛屼紭鍏堜粠ClientInfo鑾峰彇锛屽鏋滄病鏈夊啀浠嶤ardInfo鑾峰彇
+ * @return 鐢ㄦ埛濮撳悕
+ */
+ private fun getUserName(): String? {
+ return clientInfo?.name ?: cardInfo?.userName
+ }
+
+ /**
* 鎵撳嵃鍏呭�兼垚鍔熶俊鎭埌鎵撳嵃鏈�
* @param userCard 鐢ㄦ埛鍗$墖淇℃伅锛屽寘鍚綑棰濈瓑淇℃伅
* 鍑芥暟浼氭瀯寤烘墦鍗版暟鎹苟璋冪敤鎵撳嵃閫傞厤鍣ㄨ繘琛屾墦鍗�
@@ -249,11 +289,10 @@
data.add(" 鍏呭�煎嚟璇�")
data.add("*****************************")
- // 娣诲姞鐢ㄦ埛鍚嶏紙浠嶤ardInfo涓幏鍙栵級
- cardInfo?.userName?.let { userName ->
- if (userName.isNotEmpty()) {
- data.add("鐢ㄦ埛濮撳悕锛�$userName")
- }
+ // 娣诲姞鐢ㄦ埛鍚嶏紙浼樺厛浠嶤lientInfo涓幏鍙栵紝濡傛灉娌℃湁鍐嶄粠CardInfo涓幏鍙栵級
+ val userName = getUserName()
+ if (!userName.isNullOrEmpty()) {
+ data.add("鐢ㄦ埛濮撳悕锛�$userName")
}
// 娣诲姞鍗″湴鍧�
@@ -305,11 +344,10 @@
data.add(" 琛ュ崱鍑瘉")
data.add("*****************************")
- // 娣诲姞鐢ㄦ埛鍚嶏紙浠嶤ardInfo涓幏鍙栵級
- cardInfo?.userName?.let { userName ->
- if (userName.isNotEmpty()) {
- data.add("鐢ㄦ埛濮撳悕锛�$userName")
- }
+ // 娣诲姞鐢ㄦ埛鍚嶏紙浼樺厛浠嶤lientInfo涓幏鍙栵紝濡傛灉娌℃湁鍐嶄粠CardInfo涓幏鍙栵級
+ val userName = getUserName()
+ if (!userName.isNullOrEmpty()) {
+ data.add("鐢ㄦ埛濮撳悕锛�$userName")
}
val cardAddress = cardNumber ?: cardAddr
@@ -352,11 +390,10 @@
data.add(" 閿�鍗″嚟璇�")
data.add("*****************************")
- // 娣诲姞鐢ㄦ埛鍚嶏紙浠嶤ardInfo涓幏鍙栵級
- cardInfo?.userName?.let { userName ->
- if (userName.isNotEmpty()) {
- data.add("鐢ㄦ埛濮撳悕锛�$userName")
- }
+ // 娣诲姞鐢ㄦ埛鍚嶏紙浼樺厛浠嶤lientInfo涓幏鍙栵紝濡傛灉娌℃湁鍐嶄粠CardInfo涓幏鍙栵級
+ val userName = getUserName()
+ if (!userName.isNullOrEmpty()) {
+ data.add("鐢ㄦ埛濮撳悕锛�$userName")
}
val cardAddress = cardNumber ?: cardAddr
@@ -397,11 +434,10 @@
data.add(" 杩旇繕鍑瘉")
data.add("*****************************")
- // 娣诲姞鐢ㄦ埛鍚嶏紙浠嶤ardInfo涓幏鍙栵級
- cardInfo?.userName?.let { userName ->
- if (userName.isNotEmpty()) {
- data.add("鐢ㄦ埛濮撳悕锛�$userName")
- }
+ // 娣诲姞鐢ㄦ埛鍚嶏紙浼樺厛浠嶤lientInfo涓幏鍙栵紝濡傛灉娌℃湁鍐嶄粠CardInfo涓幏鍙栵級
+ val userName = getUserName()
+ if (!userName.isNullOrEmpty()) {
+ data.add("鐢ㄦ埛濮撳悕锛�$userName")
}
val cardAddress = cardNumber ?: cardAddr
@@ -442,11 +478,10 @@
data.add(" 琛ユ墸鍑瘉")
data.add("*****************************")
- // 娣诲姞鐢ㄦ埛鍚嶏紙浠嶤ardInfo涓幏鍙栵級
- cardInfo?.userName?.let { userName ->
- if (userName.isNotEmpty()) {
- data.add("鐢ㄦ埛濮撳悕锛�$userName")
- }
+ // 娣诲姞鐢ㄦ埛鍚嶏紙浼樺厛浠嶤lientInfo涓幏鍙栵紝濡傛灉娌℃湁鍐嶄粠CardInfo涓幏鍙栵級
+ val userName = getUserName()
+ if (!userName.isNullOrEmpty()) {
+ data.add("鐢ㄦ埛濮撳悕锛�$userName")
}
val cardAddress = cardNumber ?: cardAddr
@@ -486,11 +521,10 @@
data.add(" 寮�鍗″嚟璇�")
data.add("*****************************")
- // 娣诲姞鐢ㄦ埛鍚嶏紙浠嶤ardInfo涓幏鍙栵級
- cardInfo?.userName?.let { userName ->
- if (userName.isNotEmpty()) {
- data.add("鐢ㄦ埛濮撳悕锛�$userName")
- }
+ // 娣诲姞鐢ㄦ埛鍚嶏紙浼樺厛浠嶤lientInfo涓幏鍙栵紝濡傛灉娌℃湁鍐嶄粠CardInfo涓幏鍙栵級
+ val userName = getUserName()
+ if (!userName.isNullOrEmpty()) {
+ data.add("鐢ㄦ埛濮撳悕锛�$userName")
}
// 娣诲姞鍗″湴鍧�
@@ -507,14 +541,15 @@
// 娣诲姞鍏呭�奸噾棰�
if (rechargeAmount > 0) {
data.add("鍏呭�奸噾棰濓細${String.format("%.2f", rechargeAmount)} 鍏�")
- // 娣诲姞鍏呭�煎悗浣欓
- data.add("鍏呭�煎悗浣欓锛�${MornyUtil.changeF2Y(userCard.balance)} 鍏�")
}
- // 娣诲姞璧犻�侀噾棰�
+ // 娣诲姞宸ユ湰璐�
if (cardFee > 0) {
- data.add("宸ユ湰璐癸細" + MornyUtil.changeF2Y(cardFee) + "鍏�")
+ data.add("宸ユ湰璐癸細" + cardFee + "鍏�")
}
+
+ // 娣诲姞鍗″唴浣欓锛堝紑鍗″悗鐨勪綑棰濓級
+ data.add("鍗″唴浣欓锛�${MornyUtil.changeF2Y(userCard.balance)} 鍏�")
// 娣诲姞璁㈠崟鍙�
if (!orderNumber.isNullOrEmpty()) {
@@ -541,11 +576,10 @@
data.add(" 鎿嶄綔鍑瘉")
data.add("*****************************")
- // 娣诲姞鐢ㄦ埛鍚嶏紙浠嶤ardInfo涓幏鍙栵級
- cardInfo?.userName?.let { userName ->
- if (userName.isNotEmpty()) {
- data.add("鐢ㄦ埛濮撳悕锛�$userName")
- }
+ // 娣诲姞鐢ㄦ埛鍚嶏紙浼樺厛浠嶤lientInfo涓幏鍙栵紝濡傛灉娌℃湁鍐嶄粠CardInfo涓幏鍙栵級
+ val userName = getUserName()
+ if (!userName.isNullOrEmpty()) {
+ data.add("鐢ㄦ埛濮撳悕锛�$userName")
}
val cardAddress = cardNumber ?: cardAddr
diff --git a/generallibrary/src/main/java/com/dayu/general/activity/NewCard2Activity.kt b/generallibrary/src/main/java/com/dayu/general/activity/NewCard2Activity.kt
deleted file mode 100644
index 1be8768..0000000
--- a/generallibrary/src/main/java/com/dayu/general/activity/NewCard2Activity.kt
+++ /dev/null
@@ -1,600 +0,0 @@
-package com.dayu.general.activity
-
-import android.content.Intent
-import android.os.Bundle
-import android.text.Editable
-import android.text.TextWatcher
-import android.util.TypedValue
-import android.view.View
-import android.widget.RadioButton
-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
-import com.dayu.general.bean.card.UserCard
-import com.dayu.general.bean.db.CardRegistrationBean
-import com.dayu.general.bean.net.ClientInfo
-import com.dayu.general.bean.net.NewCardDataResult
-import com.dayu.general.bean.net.PaymentMethod
-import com.dayu.general.bean.net.PaymentMethodResponse
-import com.dayu.general.dao.BaseDaoSingleton
-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
-import com.tencent.bugly.crashreport.CrashReport
-import kotlinx.coroutines.launch
-import java.util.Calendar
-
-/**
- * Description: 鐢ㄦ埛寮�鍗$晫闈�(鍚屾淇敼鐧藉崱瀵嗙爜)
- * Author: zuo
- * Date: 2025/4/7
- */
-class NewCard2Activity : BaseNfcActivity() {
-
- private lateinit var binding: ActivityNewCardGeBinding
-
- // 鏀粯鏂瑰紡
- private var paymentMethod: String = "鐜伴噾"
-
- // 鏀粯鏂瑰紡ID
- private var paymentId: String = ""
-
- // 鏀粯鏂瑰紡鍒楄〃
- private var paymentMethodList: List<PaymentMethod> = listOf()
-
- // 鍗$墿鐞咺D
- private var cardPhysicalId: String = ""
-
- // 鐢ㄦ埛ID
- private var userId: String = ""
-
- // 瀹㈡埛ID
- private var clientId: String = ""
-
- private lateinit var clientInfo: ClientInfo
-
- // 鏄惁宸茶鍗�
- private var isReadCard: Boolean = false
-
- private var orderId: String = ""
-
- companion object {
- private const val TAG = "NewCard2Activity"
- private const val REQUEST_CODE_NFC_WRITE = 1001
- }
-
-
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- binding = ActivityNewCardGeBinding.inflate(layoutInflater)
- setContentView(binding.root)
-
- // 鑾峰彇浼犻�掔殑clientId鍙傛暟
- clientId = intent.getStringExtra("clientId") ?: ""
-
- initView()
-
- // 濡傛灉鏈塩lientId锛岃幏鍙栧鎴蜂俊鎭�
- if (clientId.isNotEmpty()) {
- getClientInfo(clientId)
- }
-
- // 鑾峰彇鏀粯鏂瑰紡
- getPaymentMethods()
- initListener()
- }
-
- private fun initView() {
- // 鍒濆鍖栨爣棰樻爮杩斿洖鎸夐挳
- binding.titleBar.setOnItemclickListner(ClickType_LEFT_IMAGE) {
- finish()
- }
-
- // 鍒濆鍖朜FC璇诲崱瀹瑰櫒锛屽垵濮嬮殣钘�
- binding.nfcContainer.visibility = View.VISIBLE
-
- // 璁剧疆閲戦杈撳叆闄愬埗涓轰袱浣嶅皬鏁�
- binding.newCardRechargeAmount.addTextChangedListener(createDecimalTextWatcher())
- binding.newCardCardFee.addTextChangedListener(createDecimalTextWatcher())
- }
-
- /**
- * 鑾峰彇瀹㈡埛璇︾粏淇℃伅
- */
- private fun getClientInfo(clientId: String) {
- ApiManager.getInstance().requestGetLoading(
- this,
- "terminal/client/getTermOne/$clientId",
- ClientInfo::class.java,
- null,
- object : SubscriberListener<BaseResponse<ClientInfo>>() {
- override fun onNext(response: BaseResponse<ClientInfo>) {
- if (response.success) {
- clientInfo = response.content!!
- if (clientInfo != null) {
- // 鏄剧ず瀹㈡埛淇℃伅鍒扮晫闈�
- displayClientInfo(clientInfo)
- } else {
- Toast.makeText(
- this@NewCard2Activity,
- "鑾峰彇瀹㈡埛淇℃伅澶辫触: 杩斿洖鏁版嵁涓虹┖",
- Toast.LENGTH_SHORT
- ).show()
- }
- } else {
- Toast.makeText(
- this@NewCard2Activity,
- "鑾峰彇瀹㈡埛淇℃伅澶辫触: ${response.msg}",
- Toast.LENGTH_SHORT
- ).show()
- }
- }
-
- override fun onError(e: Throwable?) {
- super.onError(e)
- Toast.makeText(
- this@NewCard2Activity,
- "鑾峰彇瀹㈡埛淇℃伅澶辫触: ${e?.message ?: "缃戠粶寮傚父"}",
- Toast.LENGTH_SHORT
- ).show()
- }
- }
- )
- }
-
- /**
- * 鏄剧ず瀹㈡埛淇℃伅鍒扮晫闈�
- */
- private fun displayClientInfo(clientInfo: ClientInfo) {
- // 淇濆瓨鐢ㄦ埛ID渚涘悗缁娇鐢�
- userId = clientInfo.clientId
-
- // 鏄剧ず鐢ㄦ埛鍩烘湰淇℃伅
- binding.newCardUserName.text = clientInfo.name
- binding.newCardIdCard.text = if (clientInfo.idCard.isBlank()) "鏃�" else clientInfo.idCard
- binding.newCardFarmerCode.text = clientInfo.clientNum
- }
-
- /**
- * 鑾峰彇鏀粯鏂瑰紡鍒楄〃
- */
- private fun getPaymentMethods() {
- ApiManager.getInstance().requestGetLoading(
- this,
- "terminal/paymentmethod/get",
- Any::class.java,
- null,
- object : SubscriberListener<BaseResponse<Any>>() {
- override fun onNext(response: BaseResponse<Any>) {
- if (response.success) {
- 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(
- this@NewCard2Activity,
- "鑾峰彇鏀粯鏂瑰紡澶辫触: ${response.msg}",
- Toast.LENGTH_SHORT
- ).show()
- }
- }
-
- override fun onError(e: Throwable?) {
- super.onError(e)
- android.util.Log.e("NewCard2Activity", "缃戠粶璇锋眰澶辫触", e)
- Toast.makeText(
- this@NewCard2Activity,
- "鑾峰彇鏀粯鏂瑰紡澶辫触: ${e?.message ?: "缃戠粶寮傚父"}",
- Toast.LENGTH_SHORT
- ).show()
- }
- }
- )
- }
-
- /**
- * 鏇存柊鏀粯鏂瑰紡RadioGroup
- */
- private fun updatePaymentMethodRadioGroup() {
- // 娓呯┖鍘熸湁RadioButton
- binding.newCardPaymentMethod.removeAllViews()
-
- // 鍔ㄦ�佹坊鍔燫adioButton
- paymentMethodList.forEachIndexed { index, method ->
- val radioButton = RadioButton(this)
- radioButton.id = View.generateViewId() // 鐢熸垚鍞竴ID
- radioButton.layoutParams = android.widget.LinearLayout.LayoutParams(
- 0,
- resources.getDimensionPixelSize(R.dimen.dimen_40),
- 1.0f
- )
-
- // 濡傛灉涓嶆槸鏈�鍚庝竴涓寜閽紝娣诲姞鍙宠竟璺�
- if (index < paymentMethodList.size - 1) {
- (radioButton.layoutParams as android.widget.LinearLayout.LayoutParams).rightMargin =
- resources.getDimensionPixelSize(R.dimen.dimen_15)
- }
-
- radioButton.text = method.name
- radioButton.background = resources.getDrawable(R.drawable.radio_selector)
- radioButton.buttonDrawable = null
- radioButton.gravity = android.view.Gravity.CENTER
- radioButton.setTextColor(resources.getColorStateList(R.color.radio_button_text_color))
- radioButton.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14f)
-
- // 娣诲姞鍒癛adioGroup
- binding.newCardPaymentMethod.addView(radioButton)
-
- // 榛樿閫変腑绗竴涓�
- if (index == 0) {
- radioButton.isChecked = true
- paymentMethod = method.name
- paymentId = method.id
- }
- }
- }
-
- /**
- * 鍒涘缓闄愬埗杈撳叆涓や綅灏忔暟鐨凾extWatcher
- */
- private fun createDecimalTextWatcher(): TextWatcher {
- return object : TextWatcher {
- override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
- // 涓嶉渶瑕佸疄鐜�
- }
-
- override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
- // 涓嶉渶瑕佸疄鐜�
- }
-
- override fun afterTextChanged(s: Editable?) {
- if (s == null || s.isEmpty()) return
-
- val str = s.toString()
- // 濡傛灉杈撳叆鐨勪笉鏄湁鏁堢殑灏忔暟鏍煎紡锛岃繘琛屽鐞�
- if (str.contains(".")) {
- val decimalIndex = str.indexOf(".")
- // 濡傛灉灏忔暟鐐瑰悗瓒呰繃涓や綅锛屾埅鍙栧埌涓や綅
- if (decimalIndex >= 0 && str.length - decimalIndex > 3) {
- s.delete(decimalIndex + 3, str.length)
- }
- }
- }
- }
- }
-
- private fun initListener() {
- // 璁剧疆鏀粯鏂瑰紡閫夋嫨鐩戝惉
- binding.newCardPaymentMethod.setOnCheckedChangeListener { group, checkedId ->
- // 鏍规嵁閫変腑鐨処D鑾峰彇鏀粯鏂瑰紡
- for (i in 0 until group.childCount) {
- val radioButton = group.getChildAt(i) as RadioButton
- if (radioButton.id == checkedId) {
- paymentMethod = radioButton.text.toString()
- paymentId = paymentMethodList[i].id
- break
- }
- }
- }
-
- // 璁剧疆寮�鍗℃寜閽偣鍑荤洃鍚�
- binding.newCardRegistBtn.setOnClickListener {
- if (cardPhysicalId.isEmpty()) {
- // 濡傛灉灏氭湭璇诲彇鍒板崱鐗╃悊ID锛屾樉绀篘FC璇诲崱鐣岄潰
- binding.nfcContainer.visibility = View.VISIBLE
- } else {
- // 宸茶鍙栧埌鍗$墿鐞咺D锛岃繘琛屽紑鍗℃搷浣�
- registerNewCard()
- }
- }
- }
-
- /**
- * 娉ㄥ唽鏂板崱
- */
- private fun registerNewCard() {
- // 鑾峰彇鍏呭�奸噾棰�
- val rechargeAmountStr = binding.newCardRechargeAmount.text.toString()
- val rechargeAmount = if (rechargeAmountStr.isEmpty()) 0.0 else rechargeAmountStr.toDouble()
-
- // 鑾峰彇宸ユ湰璐�
- val cardFeeStr = binding.newCardCardFee.text.toString()
- val cardFee = if (cardFeeStr.isEmpty()) 0 else cardFeeStr.toInt()
-
- val remark = binding.newCardRemark.text.toString()
-
- // 鏋勫缓璇锋眰鍙傛暟
- val params = HashMap<String, Any>()
- params["cardAddr"] = cardPhysicalId // 姘村崱鍦板潃锛堢墿鐞咺D锛�
- params["clientId"] = clientId // 鍐滄埛ID
- params["cardCost"] = cardFee // 璐崱閲戦锛堝伐鏈垂锛�(鍏�)
- params["amount"] = rechargeAmount // 鍏呭�奸噾棰�(鍏�)
- params["paymentId"] = paymentId // 鏀粯鏂瑰紡ID
- params["remarks"] = remark // 澶囨敞
- params["protocol"] = protocol // 鍗忚
- params["operator"] = BaseApplication.userId // 鎿嶄綔浜篒D
-
- // 鎵ц鍗$墖婵�娲籄PI璇锋眰
- ApiManager.getInstance().requestPostLoading(
- this,
- "terminal/card/termActiveCard",
- NewCardDataResult::class.java,
- params,
- object : SubscriberListener<BaseResponse<NewCardDataResult>>() {
- override fun onNext(response: BaseResponse<NewCardDataResult>) {
- if (response.success) {
- orderId = response.content?.orderNo.toString()
- // 淇濆瓨寮�鍗′俊鎭埌鏁版嵁搴�
- val cardRegistration = CardRegistrationBean(
- cardNumber = cardPhysicalId,
- userName = binding.newCardUserName.text.toString(),
- idCard = binding.newCardIdCard.text.toString(),
- clientId = clientId,
- cardFee = cardFee,
- remark = binding.newCardRemark.text.toString(),
- paymentMethod = paymentId.toLongOrNull()?.toInt() ?: 0,
- isReported = true,
- isCardWritten = false, // 鍒濆璁剧疆涓篺alse锛屽啓鍗℃垚鍔熷悗鍐嶆洿鏂颁负true
- operatorId = orderId,
-
- )
-
- // 浣跨敤鍗忕▼鍦ㄥ悗鍙扮嚎绋嬩腑淇濆瓨鏁版嵁
- lifecycleScope.launch {
- try {
- BaseDaoSingleton.getInstance(this@NewCard2Activity)
- .cardRegistrationDao().insert(cardRegistration)
- setResult(RESULT_OK)
- Intent(this@NewCard2Activity, NfcWreatActivity::class.java).apply {
- putExtra("cardType", USER_CARD_TYPE_1)
- putExtra("orderNumber", orderId)
- putExtra("cardAddr", cardPhysicalId)
- var userCard = UserCard()
- 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 =
- 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)
- putExtra("operationTypeCode", CardOperationType.OpenCard.code)
- putExtra("cardFee", cardFee)
-
- startActivityForResult(this, REQUEST_CODE_NFC_WRITE)
- }
- } catch (e: Exception) {
- CrashReport.postCatchedException(e)
- Toast.makeText(
- this@NewCard2Activity,
- "淇濆瓨寮�鍗′俊鎭け璐�: ${e.message}",
- Toast.LENGTH_SHORT
- ).show()
- }
- }
- } else {
- // 婵�娲诲け璐�
- Toast.makeText(
- this@NewCard2Activity,
- "寮�鍗″け璐�: ${response.msg}",
- Toast.LENGTH_SHORT
- ).show()
- }
- }
-
- override fun onError(e: Throwable?) {
- super.onError(e)
- // 璇锋眰寮傚父
- Toast.makeText(
- this@NewCard2Activity,
- "寮�鍗″け璐�: ${e?.message ?: "缃戠粶寮傚父"}",
- Toast.LENGTH_SHORT
- ).show()
- }
- }
- )
- }
-
- override fun onResume() {
- super.onResume()
- // 寮�鍚墠鍙拌皟搴︾郴缁燂紝浼樺厛澶勭悊NFC鏍囩
-
- }
-
- override fun onPause() {
- super.onPause()
- // 鍏抽棴鍓嶅彴璋冨害绯荤粺
-
- }
-
- override fun onNfcBack(intent: Intent) {
- if (!isReadCard) {
- val cardNumber = NfcReadHelper.getInstance(intent, this).getCardNumberNoClose()
- if (cardNumber.isNotEmpty()) {
- try {
- // 鍒涘缓瀵嗛挜鍒楄〃鐨勫壇鏈紝閬垮厤ConcurrentModificationException
- val keyList = ArrayList(NfcReadHelper.getInstance(intent, this).getKeyList())
-
- // 浣跨敤缇庡寲鐨勫姞杞藉姩鐢绘潵鏄剧ずNFC鎿嶄綔鐨勫姞杞界姸鎬�
- val nfcHelper = NfcWreatHelper.getInstance(intent, this)
- nfcHelper.setLoadingView(binding.loadingContainer, binding.nfcProgressWheel)
-
- // 寮傛淇敼瀵嗙爜
- nfcHelper.changePSAsync(
- keyList,
- false,
- true
- ) { success: Boolean, msg: String? ->
- if (success) {
- isReadCard = true
- // 淇濆瓨鍗$墿鐞咺D
- cardPhysicalId = cardNumber
- // 鏇存柊UI
- binding.newCardArerNumber.text = cardNumber
- // 闅愯棌NFC璇诲崱鐣岄潰
- binding.nfcContainer.visibility = View.GONE
- binding.centerScroll.visibility = View.VISIBLE
- binding.newCardRegistBtn.visibility = View.VISIBLE
- } else {
- // 瀵嗙爜淇敼澶辫触锛屽鐞嗛敊璇儏鍐�
- Toast.makeText(
- this@NewCard2Activity,
- "鍗$墖鍒濆鍖栧け璐ワ細$msg",
- Toast.LENGTH_LONG
- ).show()
- }
- }
- } catch (e: Exception) {
- // 澶勭悊寮傚父鎯呭喌
- CrashReport.postCatchedException(e)
- e.printStackTrace()
- }
- } else {
- Toast.makeText(
- this@NewCard2Activity,
- "鑾峰彇鍗″彿澶辫触",
- Toast.LENGTH_SHORT
- ).show()
- }
- } else {
- Toast.makeText(
- this@NewCard2Activity,
- "褰撳墠宸茶鍗★紝涓嶅彲鍐嶆璇诲崱",
- Toast.LENGTH_SHORT
- ).show()
- }
-
- }
-
- override fun onDestroy() {
- super.onDestroy()
- // 娓呯悊NFC宸ュ叿绫讳腑鐨凴xJava璁㈤槄锛岄槻姝㈠唴瀛樻硠婕�
- try {
- NfcReadHelper.getInstance(intent, this).clearDisposables()
- NfcWreatHelper.getInstance(intent, this).clearDisposables()
- // 纭繚鍋滄鍔ㄧ敾锛岄伩鍏嶅唴瀛樻硠婕�
- binding.nfcProgressWheel.stopSpinning()
- } catch (e: Exception) {
- e.printStackTrace()
- }
- }
-
- 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
diff --git a/generallibrary/src/main/java/com/dayu/general/activity/NewCardActivity.kt b/generallibrary/src/main/java/com/dayu/general/activity/NewCardActivity.kt
index 26af596..6979b1d 100644
--- a/generallibrary/src/main/java/com/dayu/general/activity/NewCardActivity.kt
+++ b/generallibrary/src/main/java/com/dayu/general/activity/NewCardActivity.kt
@@ -1,17 +1,599 @@
package com.dayu.general.activity
+import android.content.Intent
import android.os.Bundle
-import android.view.LayoutInflater
-import com.dayu.baselibrary.activity.BaseActivity
+import android.text.Editable
+import android.text.TextWatcher
+import android.util.TypedValue
+import android.view.View
+import android.widget.RadioButton
+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
+import com.dayu.general.bean.card.UserCard
+import com.dayu.general.bean.db.CardRegistrationBean
+import com.dayu.general.bean.net.ClientInfo
+import com.dayu.general.bean.net.NewCardDataResult
+import com.dayu.general.bean.net.PaymentMethod
+import com.dayu.general.dao.BaseDaoSingleton
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
+import com.tencent.bugly.crashreport.CrashReport
+import kotlinx.coroutines.launch
-class NewCardActivity:BaseActivity() {
- var binding:ActivityNewCardGeBinding? = null
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- binding= ActivityNewCardGeBinding.inflate(LayoutInflater.from(this))
- setContentView(binding?.root)
+/**
+ * Description: 鐢ㄦ埛寮�鍗$晫闈�(鍚屾淇敼鐧藉崱瀵嗙爜)
+ * Author: zuo
+ * Date: 2025/4/7
+ */
+class NewCardActivity : BaseNfcActivity() {
+
+ private lateinit var binding: ActivityNewCardGeBinding
+
+ // 鏀粯鏂瑰紡
+ private var paymentMethod: String = "鐜伴噾"
+
+ // 鏀粯鏂瑰紡ID
+ private var paymentId: String = ""
+
+ // 鏀粯鏂瑰紡鍒楄〃
+ private var paymentMethodList: List<PaymentMethod> = listOf()
+
+ // 鍗$墿鐞咺D
+ private var cardPhysicalId: String = ""
+
+ // 鐢ㄦ埛ID
+ private var userId: String = ""
+
+ // 瀹㈡埛ID
+ private var clientId: String = ""
+
+ private lateinit var clientInfo: ClientInfo
+
+ // 鏄惁宸茶鍗�
+ private var isReadCard: Boolean = false
+
+ private var orderId: String = ""
+
+ companion object {
+ private const val TAG = "NewCard2Activity"
+ private const val REQUEST_CODE_NFC_WRITE = 1001
}
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ binding = ActivityNewCardGeBinding.inflate(layoutInflater)
+ setContentView(binding.root)
+
+ // 鑾峰彇浼犻�掔殑clientId鍙傛暟
+ clientId = intent.getStringExtra("clientId") ?: ""
+
+ initView()
+
+ // 濡傛灉鏈塩lientId锛岃幏鍙栧鎴蜂俊鎭�
+ if (clientId.isNotEmpty()) {
+ getClientInfo(clientId)
+ }
+
+ // 鑾峰彇鏀粯鏂瑰紡
+ getPaymentMethods()
+ initListener()
+ }
+
+ private fun initView() {
+ // 鍒濆鍖栨爣棰樻爮杩斿洖鎸夐挳
+ binding.titleBar.setOnItemclickListner(ClickType_LEFT_IMAGE) {
+ finish()
+ }
+
+ // 鍒濆鍖朜FC璇诲崱瀹瑰櫒锛屽垵濮嬮殣钘�
+ binding.nfcContainer.visibility = View.VISIBLE
+
+ // 璁剧疆閲戦杈撳叆闄愬埗涓轰袱浣嶅皬鏁�
+ binding.newCardRechargeAmount.addTextChangedListener(createDecimalTextWatcher())
+ binding.newCardCardFee.addTextChangedListener(createDecimalTextWatcher())
+ }
+
+ /**
+ * 鑾峰彇瀹㈡埛璇︾粏淇℃伅
+ */
+ private fun getClientInfo(clientId: String) {
+ ApiManager.getInstance().requestGetLoading(
+ this,
+ "terminal/client/getTermOne/$clientId",
+ ClientInfo::class.java,
+ null,
+ object : SubscriberListener<BaseResponse<ClientInfo>>() {
+ override fun onNext(response: BaseResponse<ClientInfo>) {
+ if (response.success) {
+ clientInfo = response.content!!
+ if (clientInfo != null) {
+ // 鏄剧ず瀹㈡埛淇℃伅鍒扮晫闈�
+ displayClientInfo(clientInfo)
+ } else {
+ Toast.makeText(
+ this@NewCardActivity,
+ "鑾峰彇瀹㈡埛淇℃伅澶辫触: 杩斿洖鏁版嵁涓虹┖",
+ Toast.LENGTH_SHORT
+ ).show()
+ }
+ } else {
+ Toast.makeText(
+ this@NewCardActivity,
+ "鑾峰彇瀹㈡埛淇℃伅澶辫触: ${response.msg}",
+ Toast.LENGTH_SHORT
+ ).show()
+ }
+ }
+
+ override fun onError(e: Throwable?) {
+ super.onError(e)
+ Toast.makeText(
+ this@NewCardActivity,
+ "鑾峰彇瀹㈡埛淇℃伅澶辫触: ${e?.message ?: "缃戠粶寮傚父"}",
+ Toast.LENGTH_SHORT
+ ).show()
+ }
+ }
+ )
+ }
+
+ /**
+ * 鏄剧ず瀹㈡埛淇℃伅鍒扮晫闈�
+ */
+ private fun displayClientInfo(clientInfo: ClientInfo) {
+ // 淇濆瓨鐢ㄦ埛ID渚涘悗缁娇鐢�
+ userId = clientInfo.clientId
+
+ // 鏄剧ず鐢ㄦ埛鍩烘湰淇℃伅
+ binding.newCardUserName.text = clientInfo.name
+ binding.newCardIdCard.text = if (clientInfo.idCard.isBlank()) "鏃�" else clientInfo.idCard
+ binding.newCardFarmerCode.text = clientInfo.clientNum
+ }
+
+ /**
+ * 鑾峰彇鏀粯鏂瑰紡鍒楄〃
+ */
+ private fun getPaymentMethods() {
+ ApiManager.getInstance().requestGetLoading(
+ this,
+ "terminal/paymentmethod/get",
+ Any::class.java,
+ null,
+ object : SubscriberListener<BaseResponse<Any>>() {
+ override fun onNext(response: BaseResponse<Any>) {
+ if (response.success) {
+ 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@NewCardActivity,
+ "鑾峰彇鏀粯鏂瑰紡澶辫触锛氳繑鍥炴暟鎹负绌�",
+ 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@NewCardActivity,
+ "瑙f瀽鏀粯鏂瑰紡鏁版嵁澶辫触: ${e.message}",
+ Toast.LENGTH_SHORT
+ ).show()
+ }
+ } else {
+ Toast.makeText(
+ this@NewCardActivity,
+ "鑾峰彇鏀粯鏂瑰紡澶辫触: ${response.msg}",
+ Toast.LENGTH_SHORT
+ ).show()
+ }
+ }
+
+ override fun onError(e: Throwable?) {
+ super.onError(e)
+ android.util.Log.e("NewCard2Activity", "缃戠粶璇锋眰澶辫触", e)
+ Toast.makeText(
+ this@NewCardActivity,
+ "鑾峰彇鏀粯鏂瑰紡澶辫触: ${e?.message ?: "缃戠粶寮傚父"}",
+ Toast.LENGTH_SHORT
+ ).show()
+ }
+ }
+ )
+ }
+
+ /**
+ * 鏇存柊鏀粯鏂瑰紡RadioGroup
+ */
+ private fun updatePaymentMethodRadioGroup() {
+ // 娓呯┖鍘熸湁RadioButton
+ binding.newCardPaymentMethod.removeAllViews()
+
+ // 鍔ㄦ�佹坊鍔燫adioButton
+ paymentMethodList.forEachIndexed { index, method ->
+ val radioButton = RadioButton(this)
+ radioButton.id = View.generateViewId() // 鐢熸垚鍞竴ID
+ radioButton.layoutParams = android.widget.LinearLayout.LayoutParams(
+ 0,
+ resources.getDimensionPixelSize(R.dimen.dimen_40),
+ 1.0f
+ )
+
+ // 濡傛灉涓嶆槸鏈�鍚庝竴涓寜閽紝娣诲姞鍙宠竟璺�
+ if (index < paymentMethodList.size - 1) {
+ (radioButton.layoutParams as android.widget.LinearLayout.LayoutParams).rightMargin =
+ resources.getDimensionPixelSize(R.dimen.dimen_15)
+ }
+
+ radioButton.text = method.name
+ radioButton.background = resources.getDrawable(R.drawable.radio_selector)
+ radioButton.buttonDrawable = null
+ radioButton.gravity = android.view.Gravity.CENTER
+ radioButton.setTextColor(resources.getColorStateList(R.color.radio_button_text_color))
+ radioButton.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14f)
+
+ // 娣诲姞鍒癛adioGroup
+ binding.newCardPaymentMethod.addView(radioButton)
+
+ // 榛樿閫変腑绗竴涓�
+ if (index == 0) {
+ radioButton.isChecked = true
+ paymentMethod = method.name
+ paymentId = method.id
+ }
+ }
+ }
+
+ /**
+ * 鍒涘缓闄愬埗杈撳叆涓や綅灏忔暟鐨凾extWatcher
+ */
+ private fun createDecimalTextWatcher(): TextWatcher {
+ return object : TextWatcher {
+ override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
+ // 涓嶉渶瑕佸疄鐜�
+ }
+
+ override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
+ // 涓嶉渶瑕佸疄鐜�
+ }
+
+ override fun afterTextChanged(s: Editable?) {
+ if (s == null || s.isEmpty()) return
+
+ val str = s.toString()
+ // 濡傛灉杈撳叆鐨勪笉鏄湁鏁堢殑灏忔暟鏍煎紡锛岃繘琛屽鐞�
+ if (str.contains(".")) {
+ val decimalIndex = str.indexOf(".")
+ // 濡傛灉灏忔暟鐐瑰悗瓒呰繃涓や綅锛屾埅鍙栧埌涓や綅
+ if (decimalIndex >= 0 && str.length - decimalIndex > 3) {
+ s.delete(decimalIndex + 3, str.length)
+ }
+ }
+ }
+ }
+ }
+
+ private fun initListener() {
+ // 璁剧疆鏀粯鏂瑰紡閫夋嫨鐩戝惉
+ binding.newCardPaymentMethod.setOnCheckedChangeListener { group, checkedId ->
+ // 鏍规嵁閫変腑鐨処D鑾峰彇鏀粯鏂瑰紡
+ for (i in 0 until group.childCount) {
+ val radioButton = group.getChildAt(i) as RadioButton
+ if (radioButton.id == checkedId) {
+ paymentMethod = radioButton.text.toString()
+ paymentId = paymentMethodList[i].id
+ break
+ }
+ }
+ }
+
+ // 璁剧疆寮�鍗℃寜閽偣鍑荤洃鍚�
+ binding.newCardRegistBtn.setOnClickListener {
+ if (cardPhysicalId.isEmpty()) {
+ // 濡傛灉灏氭湭璇诲彇鍒板崱鐗╃悊ID锛屾樉绀篘FC璇诲崱鐣岄潰
+ binding.nfcContainer.visibility = View.VISIBLE
+ } else {
+ // 宸茶鍙栧埌鍗$墿鐞咺D锛岃繘琛屽紑鍗℃搷浣�
+ registerNewCard()
+ }
+ }
+ }
+
+ /**
+ * 娉ㄥ唽鏂板崱
+ */
+ private fun registerNewCard() {
+ // 鑾峰彇鍏呭�奸噾棰�
+ val rechargeAmountStr = binding.newCardRechargeAmount.text.toString()
+ val rechargeAmount = if (rechargeAmountStr.isEmpty()) 0.0 else rechargeAmountStr.toDouble()
+
+ // 鑾峰彇宸ユ湰璐�
+ val cardFeeStr = binding.newCardCardFee.text.toString()
+ val cardFee = if (cardFeeStr.isEmpty()) 0 else cardFeeStr.toInt()
+
+ val remark = binding.newCardRemark.text.toString()
+
+ // 鏋勫缓璇锋眰鍙傛暟
+ val params = HashMap<String, Any>()
+ params["cardAddr"] = cardPhysicalId // 姘村崱鍦板潃锛堢墿鐞咺D锛�
+ params["clientId"] = clientId // 鍐滄埛ID
+ params["cardCost"] = cardFee // 璐崱閲戦锛堝伐鏈垂锛�(鍏�)
+ params["amount"] = rechargeAmount // 鍏呭�奸噾棰�(鍏�)
+ params["paymentId"] = paymentId // 鏀粯鏂瑰紡ID
+ params["remarks"] = remark // 澶囨敞
+ params["protocol"] = protocol // 鍗忚
+ params["operator"] = BaseApplication.userId // 鎿嶄綔浜篒D
+
+ // 鎵ц鍗$墖婵�娲籄PI璇锋眰
+ ApiManager.getInstance().requestPostLoading(
+ this,
+ "terminal/card/termActiveCard",
+ NewCardDataResult::class.java,
+ params,
+ object : SubscriberListener<BaseResponse<NewCardDataResult>>() {
+ override fun onNext(response: BaseResponse<NewCardDataResult>) {
+ if (response.success) {
+ orderId = response.content?.orderNo.toString()
+ // 淇濆瓨寮�鍗′俊鎭埌鏁版嵁搴�
+ val cardRegistration = CardRegistrationBean(
+ cardNumber = cardPhysicalId,
+ userName = binding.newCardUserName.text.toString(),
+ idCard = binding.newCardIdCard.text.toString(),
+ clientId = clientId,
+ cardFee = cardFee,
+ remark = binding.newCardRemark.text.toString(),
+ paymentMethod = paymentId.toLongOrNull()?.toInt() ?: 0,
+ isReported = true,
+ isCardWritten = false, // 鍒濆璁剧疆涓篺alse锛屽啓鍗℃垚鍔熷悗鍐嶆洿鏂颁负true
+ operatorId = orderId,
+
+ )
+
+ // 浣跨敤鍗忕▼鍦ㄥ悗鍙扮嚎绋嬩腑淇濆瓨鏁版嵁
+ lifecycleScope.launch {
+ try {
+ BaseDaoSingleton.getInstance(this@NewCardActivity)
+ .cardRegistrationDao().insert(cardRegistration)
+ setResult(RESULT_OK)
+ Intent(this@NewCardActivity, NfcWreatActivity::class.java).apply {
+ putExtra("cardType", USER_CARD_TYPE_1)
+ putExtra("orderNumber", orderId)
+ putExtra("cardAddr", cardPhysicalId)
+ var userCard = UserCard()
+ 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 =
+ 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)
+ putExtra("operationTypeCode", CardOperationType.OpenCard.code)
+ putExtra("cardFee", cardFee)
+ putExtra("clientInfo",clientInfo)
+
+ startActivityForResult(this, REQUEST_CODE_NFC_WRITE)
+ }
+ } catch (e: Exception) {
+ CrashReport.postCatchedException(e)
+ Toast.makeText(
+ this@NewCardActivity,
+ "淇濆瓨寮�鍗′俊鎭け璐�: ${e.message}",
+ Toast.LENGTH_SHORT
+ ).show()
+ }
+ }
+ } else {
+ // 婵�娲诲け璐�
+ Toast.makeText(
+ this@NewCardActivity,
+ "寮�鍗″け璐�: ${response.msg}",
+ Toast.LENGTH_SHORT
+ ).show()
+ }
+ }
+
+ override fun onError(e: Throwable?) {
+ super.onError(e)
+ // 璇锋眰寮傚父
+ Toast.makeText(
+ this@NewCardActivity,
+ "寮�鍗″け璐�: ${e?.message ?: "缃戠粶寮傚父"}",
+ Toast.LENGTH_SHORT
+ ).show()
+ }
+ }
+ )
+ }
+
+ override fun onResume() {
+ super.onResume()
+ // 寮�鍚墠鍙拌皟搴︾郴缁燂紝浼樺厛澶勭悊NFC鏍囩
+
+ }
+
+ override fun onPause() {
+ super.onPause()
+ // 鍏抽棴鍓嶅彴璋冨害绯荤粺
+
+ }
+
+ override fun onNfcBack(intent: Intent) {
+ if (!isReadCard) {
+ val cardNumber = NfcReadHelper.getInstance(intent, this).getCardNumberNoClose()
+ if (cardNumber.isNotEmpty()) {
+ try {
+ // 鍒涘缓瀵嗛挜鍒楄〃鐨勫壇鏈紝閬垮厤ConcurrentModificationException
+ val keyList = ArrayList(NfcReadHelper.getInstance(intent, this).getKeyList())
+
+ // 浣跨敤缇庡寲鐨勫姞杞藉姩鐢绘潵鏄剧ずNFC鎿嶄綔鐨勫姞杞界姸鎬�
+ val nfcHelper = NfcWreatHelper.getInstance(intent, this)
+ nfcHelper.setLoadingView(binding.loadingContainer, binding.nfcProgressWheel)
+
+ // 寮傛淇敼瀵嗙爜
+ nfcHelper.changePSAsync(
+ keyList,
+ false,
+ true
+ ) { success: Boolean, msg: String? ->
+ if (success) {
+ isReadCard = true
+ // 淇濆瓨鍗$墿鐞咺D
+ cardPhysicalId = cardNumber
+ // 鏇存柊UI
+ binding.newCardArerNumber.text = cardNumber
+ // 闅愯棌NFC璇诲崱鐣岄潰
+ binding.nfcContainer.visibility = View.GONE
+ binding.centerScroll.visibility = View.VISIBLE
+ binding.newCardRegistBtn.visibility = View.VISIBLE
+ } else {
+ // 瀵嗙爜淇敼澶辫触锛屽鐞嗛敊璇儏鍐�
+ Toast.makeText(
+ this@NewCardActivity,
+ "鍗$墖鍒濆鍖栧け璐ワ細$msg",
+ Toast.LENGTH_LONG
+ ).show()
+ }
+ }
+ } catch (e: Exception) {
+ // 澶勭悊寮傚父鎯呭喌
+ CrashReport.postCatchedException(e)
+ e.printStackTrace()
+ }
+ } else {
+ Toast.makeText(
+ this@NewCardActivity,
+ "鑾峰彇鍗″彿澶辫触",
+ Toast.LENGTH_SHORT
+ ).show()
+ }
+ } else {
+ Toast.makeText(
+ this@NewCardActivity,
+ "褰撳墠宸茶鍗★紝涓嶅彲鍐嶆璇诲崱",
+ Toast.LENGTH_SHORT
+ ).show()
+ }
+
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ // 娓呯悊NFC宸ュ叿绫讳腑鐨凴xJava璁㈤槄锛岄槻姝㈠唴瀛樻硠婕�
+ try {
+ NfcReadHelper.getInstance(intent, this).clearDisposables()
+ NfcWreatHelper.getInstance(intent, this).clearDisposables()
+ // 纭繚鍋滄鍔ㄧ敾锛岄伩鍏嶅唴瀛樻硠婕�
+ binding.nfcProgressWheel.stopSpinning()
+ } catch (e: Exception) {
+ e.printStackTrace()
+ }
+ }
+
+ 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
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 fbe415c..ab3ae13 100644
--- a/generallibrary/src/main/java/com/dayu/general/activity/NfcWreatActivity.kt
+++ b/generallibrary/src/main/java/com/dayu/general/activity/NfcWreatActivity.kt
@@ -14,6 +14,7 @@
import com.dayu.general.bean.card.DebugCard
import com.dayu.general.bean.card.UserCard
import com.dayu.general.bean.net.CardInfoResult
+import com.dayu.general.bean.net.ClientInfo
import com.dayu.general.dao.BaseDaoSingleton
import com.dayu.general.databinding.ActivityNfcWriteGeBinding
import com.dayu.general.net.ApiManager
@@ -100,6 +101,8 @@
private var projectNumber: String = ""
private var cardInfo: CardInfoResult? = null
+
+ private var clientInfo: ClientInfo? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@@ -120,6 +123,7 @@
orderNumber = intent?.getStringExtra("orderNumber") ?: ""
operationType = CardOperationType.fromCode(operationTypeCode)
cardInfo = intent?.getSerializableExtra("cardInfo") as? CardInfoResult
+ clientInfo = intent?.getSerializableExtra("clientInfo") as? ClientInfo
// 鑾峰彇鍏呭�肩浉鍏抽噾棰�
rechargeAmount = intent?.getDoubleExtra("rechargeAmount", 0.0) ?: 0.0
@@ -681,6 +685,10 @@
putExtra("cardInfo", it)
}
+ // 浼犻�掑鎴蜂俊鎭璞�
+ clientInfo?.let {
+ putExtra("clientInfo", it)
+ }
startActivity(this)
}
diff --git a/generallibrary/src/main/java/com/dayu/general/activity/SearchUserListActivity.kt b/generallibrary/src/main/java/com/dayu/general/activity/SearchUserListActivity.kt
index a4282a2..b47b11b 100644
--- a/generallibrary/src/main/java/com/dayu/general/activity/SearchUserListActivity.kt
+++ b/generallibrary/src/main/java/com/dayu/general/activity/SearchUserListActivity.kt
@@ -91,7 +91,7 @@
userAdapter?.setOnItemClickListener { user ->
// 澶勭悊鐢ㄦ埛鐐瑰嚮浜嬩欢
// 浼犻�掔敤鎴蜂俊鎭埌寮�鍗$晫闈�
- val intent = Intent(this, NewCard2Activity::class.java)
+ val intent = Intent(this, NewCardActivity::class.java)
intent.putExtra("clientId", user.clientId)
startActivity(intent)
}
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 6ceaf69..30f37a4 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
@@ -1,5 +1,7 @@
package com.dayu.general.bean.net
+import java.io.Serializable
+
// 鏀粯鏂瑰紡鏁版嵁绫�
data class PaymentMethod(
val id: String,
@@ -30,7 +32,7 @@
}
// 鐢ㄦ埛淇℃伅鏁版嵁绫�
-data class ClientInfo(
+data class ClientInfo (
val clientId: String,
val clientNum: String,
val name: String,
@@ -41,4 +43,4 @@
val address: String,
val cardCount: Int,
val operateDt: String
-)
+) : Serializable
--
Gitblit v1.8.0