From 1e2d09f0009c16ac36f199e1723bbe31dc335657 Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期二, 13 五月 2025 17:54:09 +0800
Subject: [PATCH] feat(generallibrary): 优化开卡流程和界面
---
generallibrary/src/main/java/com/dayu/general/bean/net/SearchCardResult.kt | 3
generallibrary/src/main/java/com/dayu/general/activity/NewCard2Activity.kt | 99 +++++++++++++++++--
generallibrary/src/main/java/com/dayu/general/activity/SearchUserListActivity.kt | 5
generallibrary/src/main/res/layout/activity_new_card_1_ge.xml | 119 ++++++++++++-----------
generallibrary/src/main/java/com/dayu/general/bean/net/SearchUserResult.kt | 5
generallibrary/src/main/cpp/general-native-lib.cpp | 38 +++---
6 files changed, 172 insertions(+), 97 deletions(-)
diff --git a/generallibrary/src/main/cpp/general-native-lib.cpp b/generallibrary/src/main/cpp/general-native-lib.cpp
index e961a69..b5254cc 100644
--- a/generallibrary/src/main/cpp/general-native-lib.cpp
+++ b/generallibrary/src/main/cpp/general-native-lib.cpp
@@ -96,19 +96,19 @@
return nullptr;
}
- __android_log_print(ANDROID_LOG_INFO, "GeBaseHelper", "Decrypting sector %d", sector);
- __android_log_print(ANDROID_LOG_INFO, "GeBaseHelper", "Encrypted data: %02X %02X %02X %02X %02X %02X",
- encrypted_data[0], encrypted_data[1], encrypted_data[2],
- encrypted_data[3], encrypted_data[4], encrypted_data[5]);
- __android_log_print(ANDROID_LOG_INFO, "GeBaseHelper", "Using XOR key: %02X %02X %02X %02X %02X %02X",
- XOR_KEYS[sector][0], XOR_KEYS[sector][1], XOR_KEYS[sector][2],
- XOR_KEYS[sector][3], XOR_KEYS[sector][4], XOR_KEYS[sector][5]);
+// __android_log_print(ANDROID_LOG_INFO, "GeBaseHelper", "Decrypting sector %d", sector);
+// __android_log_print(ANDROID_LOG_INFO, "GeBaseHelper", "Encrypted data: %02X %02X %02X %02X %02X %02X",
+// encrypted_data[0], encrypted_data[1], encrypted_data[2],
+// encrypted_data[3], encrypted_data[4], encrypted_data[5]);
+// __android_log_print(ANDROID_LOG_INFO, "GeBaseHelper", "Using XOR key: %02X %02X %02X %02X %02X %02X",
+// XOR_KEYS[sector][0], XOR_KEYS[sector][1], XOR_KEYS[sector][2],
+// XOR_KEYS[sector][3], XOR_KEYS[sector][4], XOR_KEYS[sector][5]);
unsigned char decrypted[6];
for (int i = 0; i < 6; i++) {
decrypted[i] = encrypted_data[i] ^ XOR_KEYS[sector][i];
- __android_log_print(ANDROID_LOG_INFO, "GeBaseHelper", "Byte %d: %02X ^ %02X = %02X",
- i, encrypted_data[i], XOR_KEYS[sector][i], decrypted[i]);
+// __android_log_print(ANDROID_LOG_INFO, "GeBaseHelper", "Byte %d: %02X ^ %02X = %02X",
+// i, encrypted_data[i], XOR_KEYS[sector][i], decrypted[i]);
}
std::string result;
@@ -119,7 +119,7 @@
result += hex;
}
- __android_log_print(ANDROID_LOG_INFO, "GeBaseHelper", "Decrypted result: %s", result.c_str());
+// __android_log_print(ANDROID_LOG_INFO, "GeBaseHelper", "Decrypted result: %s", result.c_str());
return env->NewStringUTF(result.c_str());
}
@@ -187,7 +187,7 @@
jobject packageInfoObject = env->CallObjectMethod(packageManagerObject, getPackageInfoId,
packNameString, 64);
if (!packageInfoObject) {
- __android_log_print(ANDROID_LOG_ERROR, "M1Card", "Failed to get PackageInfo");
+// __android_log_print(ANDROID_LOG_ERROR, "M1Card", "Failed to get PackageInfo");
return env->NewStringUTF("");
}
@@ -195,7 +195,7 @@
jfieldID signaturefieldID = env->GetFieldID(packageInfoClass, "signatures",
"[Landroid/content/pm/Signature;");
if (!signaturefieldID) {
- __android_log_print(ANDROID_LOG_ERROR, "M1Card", "Failed to get signature field ID");
+// __android_log_print(ANDROID_LOG_ERROR, "M1Card", "Failed to get signature field ID");
return env->NewStringUTF("");
}
@@ -203,28 +203,28 @@
jobjectArray signatureArray = (jobjectArray) env->GetObjectField(packageInfoObject,
signaturefieldID);
if (!signatureArray || env->GetArrayLength(signatureArray) == 0) {
- __android_log_print(ANDROID_LOG_ERROR, "M1Card", "No signatures found");
+// __android_log_print(ANDROID_LOG_ERROR, "M1Card", "No signatures found");
return env->NewStringUTF("");
}
// 鑾峰彇绗竴涓鍚嶅璞�
jobject signatureObject = env->GetObjectArrayElement(signatureArray, 0);
if (!signatureObject) {
- __android_log_print(ANDROID_LOG_ERROR, "M1Card", "Failed to get signature object");
+// __android_log_print(ANDROID_LOG_ERROR, "M1Card", "Failed to get signature object");
return env->NewStringUTF("");
}
// 鑾峰彇绛惧悕瀛楃涓�
jstring signatureString = (jstring) env->CallObjectMethod(signatureObject, signToStringId);
if (!signatureString) {
- __android_log_print(ANDROID_LOG_ERROR, "M1Card", "Failed to get signature string");
+// __android_log_print(ANDROID_LOG_ERROR, "M1Card", "Failed to get signature string");
return env->NewStringUTF("");
}
// 鑾峰彇绛惧悕瀛楃涓茬殑UTF-8瀛楃
const char *signStrng = env->GetStringUTFChars(signatureString, 0);
if (!signStrng) {
- __android_log_print(ANDROID_LOG_ERROR, "M1Card", "Failed to get signature UTF chars");
+// __android_log_print(ANDROID_LOG_ERROR, "M1Card", "Failed to get signature UTF chars");
return env->NewStringUTF("");
}
@@ -240,11 +240,11 @@
// 瑙e瘑骞惰浆鎹㈡瘡涓墖鍖哄瘑閽�
for (size_t i = 0; i < numKeys; i++) {
- __android_log_print(ANDROID_LOG_DEBUG, "M1Card", "澶勭悊鎵囧尯 %zu 鐨勫瘑閽�", i);
+// __android_log_print(ANDROID_LOG_DEBUG, "M1Card", "澶勭悊鎵囧尯 %zu 鐨勫瘑閽�", i);
// 纭繚涓嶄細瓒婄晫璁块棶
if (i * 12 + 6 > sizeof(ENCRYPTED_SECTOR_KEYS)) {
- __android_log_print(ANDROID_LOG_ERROR, "M1Card", "Index out of bounds");
+// __android_log_print(ANDROID_LOG_ERROR, "M1Card", "Index out of bounds");
break;
}
@@ -252,7 +252,7 @@
jstring decrypted_str = decrypt_key(env, ENCRYPTED_SECTOR_KEYS + (i * 12), 6);
if (!decrypted_str) {
- __android_log_print(ANDROID_LOG_ERROR, "M1Card", "Failed to decrypt key for sector %zu", i);
+// __android_log_print(ANDROID_LOG_ERROR, "M1Card", "Failed to decrypt key for sector %zu", i);
continue;
}
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 2ebe743..6e574c3 100644
--- a/generallibrary/src/main/java/com/dayu/general/activity/NewCard2Activity.kt
+++ b/generallibrary/src/main/java/com/dayu/general/activity/NewCard2Activity.kt
@@ -47,6 +47,9 @@
// 鐢ㄦ埛ID
private var userId: String = ""
+
+ // 瀹㈡埛ID
+ private var clientId: String = ""
companion object {
private const val TAG = "NewCard2Activity"
@@ -68,18 +71,40 @@
val pageSize: Any?,
val pageTotal: Any?
)
+
+ // 鐢ㄦ埛淇℃伅鏁版嵁绫�
+ data class ClientInfo(
+ val clientId: String,
+ val clientNum: String,
+ val name: String,
+ val districtNum: String,
+ val phone: String,
+ val idCard: String,
+ val villageName: String,
+ val address: String,
+ val cardCount: Int,
+ val operateDt: String
+ )
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityNewCard1GeBinding.inflate(layoutInflater)
setContentView(binding.root)
+ // 鑾峰彇浼犻�掔殑clientId鍙傛暟
+ clientId = intent.getStringExtra("clientId") ?: ""
+
initView()
+
+ // 濡傛灉鏈塩lientId锛岃幏鍙栧鎴蜂俊鎭�
+ if (clientId.isNotEmpty()) {
+ getClientInfo(clientId)
+ }
+
// 鑾峰彇鏀粯鏂瑰紡
getPaymentMethods()
initListener()
}
-
private fun initView() {
// 鍒濆鍖栨爣棰樻爮杩斿洖鎸夐挳
@@ -90,21 +115,66 @@
// 鍒濆鍖朜FC璇诲崱瀹瑰櫒锛屽垵濮嬮殣钘�
binding.nfcContainer.visibility = View.VISIBLE
- // 浠嶪ntent涓幏鍙栫敤鎴蜂俊鎭紙濡傛灉鏈夛級
- val userName = intent.getStringExtra("userName") ?: ""
- val rawIdCard = intent.getStringExtra("idCard")
- val idCard = if (rawIdCard.isNullOrBlank()) "鏃�" else rawIdCard
- val farmerCode = intent.getStringExtra("farmerCode") ?: ""
- userId = intent.getStringExtra("userId") ?: ""
-
- // 璁剧疆鐢ㄦ埛淇℃伅
- binding.newCardUserName.text = userName
- binding.newCardIdCard.text = idCard
- binding.newCardFarmerCode.text = farmerCode
-
// 璁剧疆閲戦杈撳叆闄愬埗涓轰袱浣嶅皬鏁�
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) {
+ val 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
}
/**
@@ -244,6 +314,9 @@
}
}
+ /**
+ * 娉ㄥ唽鏂板崱
+ */
private fun registerNewCard() {
// 鑾峰彇鍏呭�奸噾棰�
val rechargeAmountStr = binding.newCardRechargeAmount.text.toString()
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 b66c4df..2b39bc4 100644
--- a/generallibrary/src/main/java/com/dayu/general/activity/SearchUserListActivity.kt
+++ b/generallibrary/src/main/java/com/dayu/general/activity/SearchUserListActivity.kt
@@ -86,10 +86,7 @@
// 澶勭悊鐢ㄦ埛鐐瑰嚮浜嬩欢
// 浼犻�掔敤鎴蜂俊鎭埌寮�鍗$晫闈�
val intent = Intent(this, NewCard2Activity::class.java)
- intent.putExtra("userName", user.name)
- intent.putExtra("idCard", user.idCard)
- intent.putExtra("farmerCode", user.clientNum)
- intent.putExtra("userId", user.id)
+ intent.putExtra("clientId", user.clientId)
startActivity(intent)
}
diff --git a/generallibrary/src/main/java/com/dayu/general/bean/net/SearchCardResult.kt b/generallibrary/src/main/java/com/dayu/general/bean/net/SearchCardResult.kt
index 8c3bdde..314b237 100644
--- a/generallibrary/src/main/java/com/dayu/general/bean/net/SearchCardResult.kt
+++ b/generallibrary/src/main/java/com/dayu/general/bean/net/SearchCardResult.kt
@@ -24,6 +24,7 @@
val idCard: String? = null, // 韬唤璇佸彿
val money: String? = null, // 鍗′綑棰�
val phone: String? = null, // 鐢佃瘽鍙风爜
- val stateName: String? = null // 鐘舵�佸悕绉�
+ val stateName: String? = null, // 鐘舵�佸悕绉�
+ val clientId: String? = null // 瀹㈡埛ID
)
}
\ No newline at end of file
diff --git a/generallibrary/src/main/java/com/dayu/general/bean/net/SearchUserResult.kt b/generallibrary/src/main/java/com/dayu/general/bean/net/SearchUserResult.kt
index a3ba94c..21f6186 100644
--- a/generallibrary/src/main/java/com/dayu/general/bean/net/SearchUserResult.kt
+++ b/generallibrary/src/main/java/com/dayu/general/bean/net/SearchUserResult.kt
@@ -17,7 +17,7 @@
/**
* 鐢ㄦ埛淇℃伅
*/
- data class UserInfo (
+ data class UserInfo(
val address: String? = null, // 鍦板潃
val cardCount: Int? = null, // 鍗℃暟閲�
val clientNum: String? = null, // 瀹㈡埛缂栧彿
@@ -25,6 +25,7 @@
val idCard: String? = null, // 韬唤璇�
val name: String? = null, // 濮撳悕
val operateDt: String? = null, // 鎿嶄綔鏃ユ湡
- val phone: String? = null // 鐢佃瘽
+ val phone: String? = null, // 鐢佃瘽
+ val clientId: String? = null // 瀹㈡埛ID
)
}
\ No newline at end of file
diff --git a/generallibrary/src/main/res/layout/activity_new_card_1_ge.xml b/generallibrary/src/main/res/layout/activity_new_card_1_ge.xml
index 4567eec..00120ac 100644
--- a/generallibrary/src/main/res/layout/activity_new_card_1_ge.xml
+++ b/generallibrary/src/main/res/layout/activity_new_card_1_ge.xml
@@ -24,7 +24,7 @@
android:layout_marginTop="24dp"
android:layout_marginEnd="16dp"
android:layout_marginBottom="24dp"
- android:visibility="visible"
+ android:visibility="gone"
app:cardBackgroundColor="@android:color/white"
app:cardCornerRadius="12dp"
app:cardElevation="4dp"
@@ -85,8 +85,8 @@
android:layout_height="0dp"
android:fillViewport="true"
android:scrollbars="none"
- android:visibility="gone"
- app:layout_constraintBottom_toBottomOf="parent"
+ android:visibility="visible"
+ app:layout_constraintBottom_toTopOf="@+id/newCard_registBtn"
app:layout_constraintTop_toBottomOf="@+id/titleBar">
<LinearLayout
@@ -236,7 +236,51 @@
android:textColor="#333333"
android:textSize="18sp"
android:textStyle="bold" />
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginBottom="12dp"
+ android:gravity="center_vertical"
+ android:orientation="horizontal">
+ <TextView
+ android:layout_width="105dp"
+ android:layout_height="wrap_content"
+ android:text="宸ユ湰璐癸細"
+ android:textColor="#666666"
+ android:textSize="@dimen/new_card_size" />
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:background="@drawable/edit_text_bg_selector"
+ android:orientation="horizontal"
+ android:gravity="center_vertical"
+ android:paddingStart="10dp"
+ android:paddingEnd="10dp"
+ android:paddingTop="8dp"
+ android:paddingBottom="8dp">
+
+ <EditText
+ android:id="@+id/newCard_cardFee"
+ android:layout_width="0dp"
+ android:layout_weight="1"
+ android:layout_height="wrap_content"
+ android:background="@null"
+ android:hint="璇疯緭鍏ュ伐鏈垂(閫夊~)"
+ android:inputType="numberDecimal"
+ android:textColor="#333333"
+ android:textColorHint="#BBBBBB"
+ android:textSize="@dimen/new_card_size" />
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="鍏�"
+ android:textColor="#666666"
+ android:textSize="@dimen/new_card_size" />
+ </LinearLayout>
+ </LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
@@ -283,51 +327,7 @@
</LinearLayout>
</LinearLayout>
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginBottom="12dp"
- android:gravity="center_vertical"
- android:orientation="horizontal">
- <TextView
- android:layout_width="105dp"
- android:layout_height="wrap_content"
- android:text="宸ユ湰璐癸細"
- android:textColor="#666666"
- android:textSize="@dimen/new_card_size" />
-
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:background="@drawable/edit_text_bg_selector"
- android:orientation="horizontal"
- android:gravity="center_vertical"
- android:paddingStart="10dp"
- android:paddingEnd="10dp"
- android:paddingTop="8dp"
- android:paddingBottom="8dp">
-
- <EditText
- android:id="@+id/newCard_cardFee"
- android:layout_width="0dp"
- android:layout_weight="1"
- android:layout_height="wrap_content"
- android:background="@null"
- android:hint="璇疯緭鍏ュ伐鏈垂(閫夊~)"
- android:inputType="numberDecimal"
- android:textColor="#333333"
- android:textColorHint="#BBBBBB"
- android:textSize="@dimen/new_card_size" />
-
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="鍏�"
- android:textColor="#666666"
- android:textSize="@dimen/new_card_size" />
- </LinearLayout>
- </LinearLayout>
<LinearLayout
android:layout_width="match_parent"
@@ -397,18 +397,21 @@
</RadioGroup>
</LinearLayout>
</androidx.cardview.widget.CardView>
- <TextView
- android:id="@+id/newCard_registBtn"
- android:layout_width="match_parent"
- android:layout_height="56dp"
- android:layout_marginTop="15dp"
- android:background="@color/bottom_color"
- android:visibility="visible"
- android:gravity="center"
- android:text="纭寮�鍗�"
- android:textColor="#FFFFFF"
- android:textSize="16sp" />
</LinearLayout>
</ScrollView>
+
+ <TextView
+ android:id="@+id/newCard_registBtn"
+ android:layout_width="match_parent"
+ android:layout_height="56dp"
+ android:background="@color/bottom_color"
+ android:gravity="center"
+ android:text="纭寮�鍗�"
+ android:textColor="#FFFFFF"
+ android:textSize="16sp"
+ android:visibility="visible"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
--
Gitblit v1.8.0