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):重构开卡成功界面并移除未使用的开卡界面
---
generallibrary/src/main/java/com/dayu/general/activity/ManagerReadActivity.kt | 347 +++++++++++++++++++++++++++++++++++++++++----------------
1 files changed, 250 insertions(+), 97 deletions(-)
diff --git a/generallibrary/src/main/java/com/dayu/general/activity/ManagerReadActivity.kt b/generallibrary/src/main/java/com/dayu/general/activity/ManagerReadActivity.kt
index a90feb8..b5a79ff 100644
--- a/generallibrary/src/main/java/com/dayu/general/activity/ManagerReadActivity.kt
+++ b/generallibrary/src/main/java/com/dayu/general/activity/ManagerReadActivity.kt
@@ -5,6 +5,7 @@
import android.text.Editable
import android.text.TextWatcher
import android.view.View
+import android.widget.Toast
import androidx.databinding.DataBindingUtil
import com.dayu.baselibrary.net.subscribers.SubscriberListener
import com.dayu.baselibrary.utils.BaseCommon
@@ -15,8 +16,10 @@
import com.dayu.general.model.CardInfoModel
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
import com.dayu.general.tool.NfcReadHelper
+import com.dayu.general.tool.NfcWreatHelper
class ManagerReadActivity : BaseNfcActivity() {
@@ -48,18 +51,34 @@
CardCommon.CLEAN_CARD_TYPE -> binding.titleBar.setCenterText("鍒朵綔娓呴浂鍗�")
else -> binding.titleBar.setCenterText("璇诲崱")
}
-
+
binding.titleBar.setOnItemclickListner(ClickType_LEFT_IMAGE) { this.finish() }
-
+
// 鏍规嵁鍗$被鍨嬭缃緭鍏ユ鍙鎬�
when (cardType) {
CardCommon.REGION_CARD -> {
- // 鍖哄煙琛ㄥ彿鍗★細鏄剧ず鍖哄煙鍙疯緭鍏ユ
+ // 鍖哄煙琛ㄥ彿鍗★細鏄剧ず鍖哄煙鍙峰拰椤圭洰鍙疯緭鍏ユ
binding.regionNumberLayout.visibility = View.VISIBLE
+ binding.projectNumberLayout.visibility = View.VISIBLE
+
// 涓哄尯鍩熷彿杈撳叆妗嗘坊鍔犺緭鍏ラ獙璇�
binding.regionNumberEt.addTextChangedListener(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 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?) {
val text = s.toString()
if (text.length > 12) {
@@ -68,35 +87,96 @@
}
}
})
+
+ // 涓洪」鐩彿杈撳叆妗嗘坊鍔犺緭鍏ラ獙璇侊紙鑼冨洿1-255锛�
+ binding.projectNumberEt.addTextChangedListener(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?) {
+ val text = s.toString()
+ if (text.isNotEmpty()) {
+ try {
+ val number = text.toInt()
+ if (number > 255) {
+ binding.projectNumberEt.setText("255")
+ binding.projectNumberEt.setSelection(3)
+ } else if (number < 1 && text.length > 1) {
+ binding.projectNumberEt.setText("1")
+ binding.projectNumberEt.setSelection(1)
+ }
+ } catch (e: NumberFormatException) {
+ // 濡傛灉杈撳叆鐨勪笉鏄暟瀛楋紝娓呯┖
+ binding.projectNumberEt.setText("")
+ }
+ }
+ }
+ })
}
+
CardCommon.CHECK_CARD,
CardCommon.DEBUG_CARD,
CardCommon.CLEAN_CARD_TYPE -> {
- // 妫�鏌ュ崱銆佽皟璇曞崱銆佹竻闆跺崱锛氶殣钘忓尯鍩熷彿杈撳叆妗嗭紝鍙樉绀哄崱鍦板潃鍜屽娉�
+ // 妫�鏌ュ崱銆佽皟璇曞崱銆佹竻闆跺崱锛氶殣钘忓尯鍩熷彿鍜岄」鐩彿杈撳叆妗嗭紝鍙樉绀哄崱鍦板潃鍜屽娉�
binding.regionNumberLayout.visibility = View.GONE
+ binding.projectNumberLayout.visibility = View.GONE
}
+
else -> {
- // 鍏朵粬鍗$被鍨嬶細闅愯棌鍖哄煙鍙疯緭鍏ユ
+ // 鍏朵粬鍗$被鍨嬶細闅愯棌鍖哄煙鍙峰拰椤圭洰鍙疯緭鍏ユ
binding.regionNumberLayout.visibility = View.GONE
+ binding.projectNumberLayout.visibility = View.GONE
}
}
-
+
binding.btnNext.setOnClickListener {
- if (viewModel.cardNumber.value.isNullOrEmpty()) {
+ if (viewModel.cardNumber.get().isNullOrEmpty()) {
ToastUtil.show("璇峰厛璇诲彇鍗″彿")
} else if (cardType == CardCommon.REGION_CARD) {
- // 鍖哄煙琛ㄥ彿鍗¢渶瑕侀獙璇佸尯鍩熷彿
- val regionNumber = viewModel.regionNumber.value
+ // 鍖哄煙琛ㄥ彿鍗¢渶瑕侀獙璇佸尯鍩熷彿鍜岄」鐩彿
+ val regionNumber = viewModel.regionNumber.get()
+ val projectNumber = viewModel.projectNumber.get()
+
if (regionNumber.isNullOrEmpty()) {
ToastUtil.show("璇疯緭鍏ュ尯鍩熷彿")
} else if (regionNumber.length != 12) {
ToastUtil.show("鍖哄煙鍙峰繀椤讳负12浣嶆暟瀛�")
+ } else if (projectNumber.isNullOrEmpty()) {
+ ToastUtil.show("璇疯緭鍏ラ」鐩彿")
} else {
- postCardData(cardType, viewModel.cardNumber.value!!, getRemark(), regionNumber)
+ try {
+ val projectNum = projectNumber.toInt()
+ if (projectNum < 1 || projectNum > 255) {
+ ToastUtil.show("椤圭洰鍙峰繀椤诲湪1-255鑼冨洿鍐�")
+ } else {
+ postCardData(
+ cardType,
+ viewModel.cardNumber.get()!!,
+ getRemark(),
+ regionNumber,
+ projectNumber
+ )
+ }
+ } catch (e: NumberFormatException) {
+ ToastUtil.show("椤圭洰鍙峰繀椤讳负鏁板瓧")
+ }
}
} else {
- // 鍏朵粬鍗$被鍨嬶紙鍖呮嫭璋冭瘯鍗°�佹鏌ュ崱銆佹竻闆跺崱锛変笉闇�瑕佸尯鍩熷彿
- postCardData(cardType, viewModel.cardNumber.value!!, getRemark())
+ // 鍏朵粬鍗$被鍨嬶紙鍖呮嫭璋冭瘯鍗°�佹鏌ュ崱銆佹竻闆跺崱锛変笉闇�瑕佸尯鍩熷彿鍜岄」鐩彿
+ postCardData(cardType, viewModel.cardNumber.get()!!, getRemark())
}
}
}
@@ -115,98 +195,171 @@
/**
* 鑾峰彇澶囨敞淇℃伅
*/
- fun getRemark(): String = viewModel.remark.value ?: ""
+ fun getRemark(): String = viewModel.remark.get() ?: ""
override fun onNfcBack(intent: Intent) {
- // 澶勭悊NFC璇诲彇缁撴灉
- NfcReadHelper.getInstance(intent, this).getCardNumber().let { cardNumber ->
- if (cardNumber.isNotEmpty() && !cardNumber.contains(BaseCommon.CARD_TYPE_ERROR2)) {
- binding.btnNext.visibility = View.VISIBLE
- binding.dataLayout.visibility = View.VISIBLE
- binding.scrollReadCard.visibility = View.GONE
- setCardNumber(cardNumber)
- } else if (cardNumber.contains(BaseCommon.CARD_TYPE_ERROR2)) {
- ToastUtil.show("褰撳墠鍗″瘑鐮侀敊璇紝涓嶆槸鏈叕鍙稿崱")
- }
- }
- }
-
-
-private fun bytesToHexString(bytes: ByteArray?): String? {
- if (bytes == null || bytes.isEmpty()) return null
- val sb = StringBuilder()
- for (b in bytes) {
- sb.append(String.format("%02X", b))
- }
- return sb.toString()
-}
-
-
-/**
- * 鎻愪氦鏁版嵁 - 涓嶅甫鍖哄煙鍙风殑鐗堟湰
- */
-fun postCardData(cardType: String, cardAddr: String, remark: String) {
- postCardData(cardType, cardAddr, remark, null)
-}
-
-/**
- * 鎻愪氦鏁版嵁 - 甯﹀尯鍩熷彿鐨勭増鏈�
- */
-fun postCardData(cardType: String, cardAddr: String, remark: String, regionNumber: String?) {
-
- val map = mutableMapOf<String, Any>()
-
- if (cardAddr.isNotEmpty()) {
- map["cardAddr"] = cardAddr
- }
-
- if (cardType.isNotEmpty()) {
-// map["cardType"] = cardType
- map["cardType"] = "5"
- }
- if (remark.isNotEmpty()) {
- map["remarks"] = remark
- }
-
- // 濡傛灉鏄尯鍩熻〃鍙峰崱骞朵笖鏈夊尯鍩熷彿锛屾坊鍔犲埌璇锋眰鍙傛暟涓�
- if (cardType == CardCommon.REGION_CARD && !regionNumber.isNullOrEmpty()) {
- map["regionNumber"] = regionNumber
- }
-
- // 浣跨敤姝g‘鐨勭被鍨嬪弬鏁�
- ApiManager.getInstance().requestPostLoading(
- this,
- "/sell/card/create_manager_card",
- String::class.java,
- map,
- object : SubscriberListener<BaseResponse<String>>() {
- override fun onNext(t: BaseResponse<String>) {
- if (t.success) {
- var intent = Intent(this@ManagerReadActivity, NfcWreatActivity::class.java).apply {
- putExtra("cardAddr", cardAddr)
- putExtra("orderId", t.content)
- putExtra("cardType", cardType)
- if (cardType == CardCommon.REGION_CARD && !regionNumber.isNullOrEmpty()) {
- putExtra("regionNumber", regionNumber)
- }
+ val cardNumber = NfcReadHelper.getInstance(intent, this).getCardNumberNoClose()
+ if (cardNumber.isNotEmpty()) {
+ val keyList = ArrayList(NfcReadHelper.getInstance(intent, this).getKeyList())
+ val nfcHelper = NfcWreatHelper.getInstance(intent, this)
+ nfcHelper.setLoadingView(binding.loadingContainer, binding.nfcProgressWheel)
+ // 寮傛淇敼瀵嗙爜
+ nfcHelper.changePSAsync(
+ keyList,
+ false, // 淇敼涓簍rue锛岀‘淇濆缓绔婲FC杩炴帴
+ true
+ ) { success: Boolean, msg: String? ->
+ if (success) {
+ // 闅愯棌NFC璇诲崱鐣岄潰
+ if (cardNumber.isNotEmpty() && !cardNumber.contains(BaseCommon.CARD_TYPE_ERROR2)) {
+ binding.btnNext.visibility = View.VISIBLE
+ binding.dataLayout.visibility = View.VISIBLE
+ binding.scrollReadCard.visibility = View.GONE
+ setCardNumber(cardNumber)
+ } else if (cardNumber.contains(BaseCommon.CARD_TYPE_ERROR2)) {
+ ToastUtil.show("褰撳墠鍗″瘑鐮侀敊璇紝涓嶆槸鏈叕鍙稿崱")
}
- this@ManagerReadActivity.finish()
- startActivity(intent)
} else {
- // 澶勭悊鎼滅储澶辫触鐨勬儏鍐�
- ToastUtil.show(t.msg)
+ // 瀵嗙爜淇敼澶辫触锛屽鐞嗛敊璇儏鍐�
+ Toast.makeText(
+ this@ManagerReadActivity,
+ "鍗$墖鍒濆鍖栧け璐ワ細$msg",
+ Toast.LENGTH_LONG
+ ).show()
}
}
-
- override fun onError(e: Throwable?) {
- super.onError(e)
- ToastUtil.show("鎼滅储澶辫触: ${e?.message ?: "鏈煡閿欒"}")
- }
}
- )
+ }
-}
+ private fun bytesToHexString(bytes: ByteArray?): String? {
+ if (bytes == null || bytes.isEmpty()) return null
+ val sb = StringBuilder()
+ for (b in bytes) {
+ sb.append(String.format("%02X", b))
+ }
+ return sb.toString()
+ }
+
+
+ /**
+ * 鎻愪氦鏁版嵁 - 涓嶅甫鍖哄煙鍙风殑鐗堟湰
+ */
+ fun postCardData(cardType: String, cardAddr: String, remark: String) {
+ postCardData(cardType, cardAddr, remark, null, null)
+ }
+
+ /**
+ * 鎻愪氦鏁版嵁 - 甯﹀尯鍩熷彿鐨勭増鏈�
+ */
+ fun postCardData(cardType: String, cardAddr: String, remark: String, regionNumber: String?) {
+ postCardData(cardType, cardAddr, remark, regionNumber, null)
+ }
+
+ /**
+ * 鎻愪氦鏁版嵁 - 瀹屾暣鐗堟湰锛屾敮鎸佸尯鍩熷彿鍜岄」鐩彿
+ */
+ fun postCardData(
+ cardType: String,
+ cardAddr: String,
+ remark: String,
+ regionNumber: String?,
+ projectNumber: String?
+ ) {
+
+ val map = mutableMapOf<String, Any>()
+
+ if (cardAddr.isNotEmpty()) {
+ map["cardAddr"] = cardAddr
+ }
+
+ if (cardType.isNotEmpty()) {
+ // 鏍规嵁鍗$被鍨嬭缃搴旂殑鏁板瓧缂栧彿
+ val cardTypeNumber = when (cardType) {
+ CardCommon.REGION_CARD -> "2" // 璁剧疆鍖哄煙琛ㄥ彿鍗�
+ CardCommon.ELECTRIC_PRICE_CARD -> "3" // 鍙栨暟鍗�
+ CardCommon.CHECK_CARD -> "4" // 妫�鏌ュ崱
+ CardCommon.DEBUG_CARD -> "5" // 娴嬭瘯鍗�
+ CardCommon.CLEAN_CARD_TYPE -> "6" // 娓呴浂鍗�
+ CardCommon.IP_CARD -> "7" // IP璁剧疆鍗�
+ CardCommon.AREA_CARD -> "8" // 鍩熷悕璁剧疆鍗★紙鍖哄煙璁剧疆鍗★級
+ CardCommon.GPS_CARD -> "9" // GPS鍗�
+ CardCommon.VALVE_TIME_CARD -> "10" // 鏃堕棿閰嶇疆鍗★紙閰嶇疆寮�鍏抽榾鏃堕棿锛�
+ else -> "5" // 榛樿鍊�
+ }
+ map["cardType"] = cardTypeNumber
+ }
+ if (remark.isNotEmpty()) {
+ map["remarks"] = remark
+ }
+
+ // 濡傛灉鏄尯鍩熻〃鍙峰崱骞朵笖鏈夊尯鍩熷彿锛屾坊鍔犲埌璇锋眰鍙傛暟涓�
+ if (cardType == CardCommon.REGION_CARD && !regionNumber.isNullOrEmpty()) {
+ map["regionNumber"] = regionNumber
+ }
+
+ // 濡傛灉鏄尯鍩熻〃鍙峰崱骞朵笖鏈夐」鐩彿锛屾坊鍔犲埌璇锋眰鍙傛暟涓�
+ if (cardType == CardCommon.REGION_CARD && !projectNumber.isNullOrEmpty()) {
+ map["projectNumber"] = projectNumber
+ }
+ map["protocol"] = protocol
+ map["securityCode"] = "A0B1C289"
+
+ // 浣跨敤姝g‘鐨勭被鍨嬪弬鏁�
+ ApiManager.getInstance().requestPostLoading(
+ this,
+ "terminal/card/createManagementCard",
+ String::class.java,
+ map,
+ object : SubscriberListener<BaseResponse<String>>() {
+ override fun onNext(t: BaseResponse<String>) {
+ if (t.success) {
+ var intent =
+ Intent(this@ManagerReadActivity, NfcWreatActivity::class.java).apply {
+ putExtra("cardAddr", cardAddr)
+ putExtra("orderNumber", t.content)
+ putExtra("cardType", cardType)
+
+ // 鏍规嵁鍗$被鍨嬭缃搷浣滅被鍨嬩唬鐮�
+ val operationTypeCode = when (cardType) {
+ CardCommon.REGION_CARD -> 100 // 鍖哄煙琛ㄥ彿鍗℃搷浣滅被鍨�
+ CardCommon.CHECK_CARD -> 101 // 妫�鏌ュ崱鎿嶄綔绫诲瀷
+ CardCommon.DEBUG_CARD -> 102 // 璋冭瘯鍗℃搷浣滅被鍨�
+ CardCommon.CLEAN_CARD_TYPE -> 103 // 娓呴浂鍗℃搷浣滅被鍨�
+ CardCommon.IP_CARD -> 104 // IP璁剧疆鍗℃搷浣滅被鍨�
+ CardCommon.AREA_CARD -> 105 // 鍩熷悕璁剧疆鍗℃搷浣滅被鍨�
+ CardCommon.GPS_CARD -> 106 // GPS鍗℃搷浣滅被鍨�
+ CardCommon.VALVE_TIME_CARD -> 107 // 鏃堕棿閰嶇疆鍗℃搷浣滅被鍨�
+ CardCommon.ELECTRIC_PRICE_CARD -> 108 // 鍙栨暟鍗℃搷浣滅被鍨�
+ else -> -1
+ }
+ putExtra("operationTypeCode", operationTypeCode)
+
+ // 浼犻�掑尯鍩熷彿鍜岄」鐩彿锛堜粎褰撴槸鍖哄煙琛ㄥ彿鍗℃椂锛�
+ if (cardType == CardCommon.REGION_CARD && !regionNumber.isNullOrEmpty()) {
+ putExtra("regionNumber", regionNumber)
+ }
+ if (cardType == CardCommon.REGION_CARD && !projectNumber.isNullOrEmpty()) {
+ putExtra("projectNumber", projectNumber)
+ }
+ }
+ this@ManagerReadActivity.finish()
+ startActivity(intent)
+ } else {
+ // 澶勭悊鎼滅储澶辫触鐨勬儏鍐�
+ ToastUtil.show(t.msg)
+ }
+ }
+
+ override fun onError(e: Throwable?) {
+ super.onError(e)
+ ToastUtil.show("鎺ュ彛璋冨彇澶辫触: ${e?.message ?: "鏈煡閿欒"}")
+ }
+ }
+ )
+
+
+ }
}
\ No newline at end of file
--
Gitblit v1.8.0