From c3edd4a3122b711bc6a0bfef56b6ff6bf5ae03e2 Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期二, 13 五月 2025 09:09:23 +0800
Subject: [PATCH] feat(generallibrary): 优化用户开卡流程并添加支付方式功能

---
 generallibrary/src/main/java/com/dayu/general/tool/NfcWreatHelper.kt               |   18 +
 generallibrary/src/main/java/com/dayu/general/tool/GeBaseHelper.kt                 |   32 +-
 generallibrary/src/main/res/layout/fragment_card.xml                               |   47 ---
 generallibrary/src/main/res/drawable/shape_status_bg.xml                           |    6 
 generallibrary/src/main/res/values/dimens.xml                                      |    8 
 generallibrary/src/main/res/drawable/shape_click_tip_bg.xml                        |    9 
 baselibrary/src/main/java/com/dayu/baselibrary/tools/nfc/NativeNfcWriteHelper.java |  129 ++++++++++-
 README.md                                                                          |    5 
 baselibrary/src/main/java/com/dayu/baselibrary/tools/nfc/NfcWriteAdapter.java      |   10 
 generallibrary/src/main/java/com/dayu/general/activity/NewCard2Activity.kt         |  205 +++++++++++++++---
 generallibrary/src/main/java/com/dayu/general/activity/SearchUserListActivity.kt   |    2 
 generallibrary/src/main/res/drawable/xiaoka.xml                                    |    9 
 generallibrary/src/main/res/layout/activity_new_card_1_ge.xml                      |  110 ++++-----
 generallibrary/src/main/cpp/general-native-lib.cpp                                 |   27 +-
 generallibrary/src/main/res/drawable/guashi.xml                                    |   24 ++
 15 files changed, 461 insertions(+), 180 deletions(-)

diff --git a/README.md b/README.md
index 5b607f1..f276ded 100644
--- a/README.md
+++ b/README.md
@@ -366,6 +366,11 @@
    - 鏁忔劅鏁版嵁闇�瑕佸姞瀵嗗瓨鍌�
    - 娉ㄦ剰鐢ㄦ埛鏁版嵁鐨勫畨鍏ㄥ鐞�
 
+4. 寮傚父澶勭悊
+   - 鎵�鏈塼ry catch鍧椾腑蹇呴』浣跨敤`CrashReport.postCatchedException(e)`涓婃姤寮傚父
+   - 纭繚寮傚父淇℃伅琚纭褰曞拰涓婃姤
+   - 閬垮厤寮傚父淇℃伅娉勯湶鏁忔劅鏁版嵁
+
 ## 璐$尞鎸囧崡
 
 1. Fork 椤圭洰
diff --git a/baselibrary/src/main/java/com/dayu/baselibrary/tools/nfc/NativeNfcWriteHelper.java b/baselibrary/src/main/java/com/dayu/baselibrary/tools/nfc/NativeNfcWriteHelper.java
index 22349c3..ba9a494 100644
--- a/baselibrary/src/main/java/com/dayu/baselibrary/tools/nfc/NativeNfcWriteHelper.java
+++ b/baselibrary/src/main/java/com/dayu/baselibrary/tools/nfc/NativeNfcWriteHelper.java
@@ -12,6 +12,7 @@
 import com.tencent.bugly.crashreport.CrashReport;
 
 import java.io.IOException;
+import java.util.List;
 
 /**
  * author: zuo
@@ -249,12 +250,120 @@
     /**
      * 淇敼瀵嗙爜
      *
-     * @param a 涔﹀啓鐨勬墖鍖�
-     *          //     * @param callback 杩斿洖鐩戝惉
+     * @param         涔﹀啓鐨勬墖鍖�
+     * @param passWord 瀵嗙爜
+     * @return
+     */
+    public boolean changePasword( List<byte[]> passWord, boolean isConnect, boolean isClose, NFCCallBack callBack) {
+        if (passWord == null || passWord.size()!=16) {
+            if (callBack != null) {
+                callBack.isSusses(false, "瀵嗙爜鏁扮粍涓虹┖鎴栭暱搴︿笉涓�16");
+            }
+            return false;
+        }
+        try {
+            MifareClassic mfc = MifareClassic.get(tag);
+            if (mfc == null) {
+                if (callBack != null) {
+                    callBack.isSusses(false, "鑾峰彇MifareClassic瀹炰緥澶辫触");
+                }
+                return false;
+            }
+
+            try {
+                // 杩炴帴NFC
+                if (isConnect) {
+                    mfc.connect();
+                }
+                for (int i = 0; i < passWord.size(); i++) {
+                    byte [] passWordItem = passWord.get(i);
+                    // 楠岃瘉鎵囧尯瀵嗙爜
+                    boolean isAuthenticated = false;
+
+                    // 灏濊瘯浣跨敤榛樿瀵嗛挜楠岃瘉
+                    if (mfc.authenticateSectorWithKeyA(i, defauleKey)) {
+                        isAuthenticated = true;
+                    } else if (mfc.authenticateSectorWithKeyA(i, listA_PS.get(i))) {
+                        continue;
+                    }
+                    if (!isAuthenticated) {
+                        if (callBack != null) {
+                            callBack.isSusses(false, "鎵囧尯" + i + "瀵嗙爜楠岃瘉澶辫触");
+                        }
+                        return false;
+                    }
+
+                    // 鍑嗗鏁版嵁
+                    byte[] data = new byte[16];
+
+                    if (passWordItem.length == 16) {
+                        // 濡傛灉鏄畬鏁寸殑16瀛楄妭鏁版嵁锛岀洿鎺ヤ娇鐢�
+                        System.arraycopy(passWordItem, 0, data, 0, 16);
+                    } else if (passWordItem.length == 6) {
+                        // 濡傛灉鍙槸6瀛楄妭瀵嗛挜锛屾瀯寤哄畬鏁寸殑鎺у埗鍧�
+                        // 灏嗗瘑鐮佽浆鎹负keyA
+                        System.arraycopy(passWordItem, 0, data, 0, 6);
+                        // 杈撳叆鎺у埗浣�
+                        data[6] = (byte) 0xFF;
+                        data[7] = (byte) 0x07;
+                        data[8] = (byte) 0x80;
+                        data[9] = (byte) 0x69;
+                        // 灏嗗瘑鐮佷綔涓篕eyB
+                        System.arraycopy(passWordItem, 0, data, 10, 6);
+                    } else {
+                        if (callBack != null) {
+                            callBack.isSusses(false, "鎵囧尯" + i + "瀵嗙爜闀垮害涓嶆纭紝搴斾负6瀛楄妭鎴�16瀛楄妭");
+                        }
+                        return false;
+                    }
+
+                    // 鑾峰彇鍐欏叆浣嶇疆
+                    int bIndex = mfc.sectorToBlock(i);
+                    int bCount = mfc.getBlockCountInSector(i);
+
+                    try {
+                        // 鍐欏埌鎵囧尯鐨勬渶鍚庝竴涓潡(鎺у埗鍧�)
+                        mfc.writeBlock(bIndex + bCount - 1, data);
+                    } catch (IOException e) {
+                        if (callBack != null) {
+                            callBack.isSusses(false, "鎵囧尯" + i + "鍐欏叆鎺у埗鍧楀け璐�: " + e.getMessage());
+                        }
+                        return false;
+                    }
+                }
+
+                if (callBack != null) {
+                    callBack.isSusses(true, "鎵�鏈夋墖鍖哄瘑鐮佷慨鏀规垚鍔�");
+                }
+                return true;
+            } finally {
+                try {
+                    if (isClose) {
+                        mfc.close();
+                    }
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            CrashReport.postCatchedException(e);
+            if (callBack != null) {
+                callBack.isSusses(false, "淇敼瀵嗙爜鏃跺彂鐢熷紓甯�: " + e.getMessage());
+            }
+        }
+        return false;
+    }
+
+    /**
+     * 淇敼瀵嗙爜
+     *
+     * @param a  鎵囧尯
+     * @param mfc MifareClassic瀹炰緥
+     * @return
      */
     @Override
     public boolean changePasword(int a, MifareClassic mfc) {
-
         byte[] data = new byte[16];
         if (null != mfc) {
             try {
@@ -277,26 +386,20 @@
                 int bCount = mfc.getBlockCountInSector(a);
                 //鍐欏埌鎵囧尯鐨勬渶鍚庝竴涓潡
                 mfc.writeBlock(bIndex + bCount - 1, data);
+
                 return true;
             } catch (Exception e) {
                 e.printStackTrace();
+                CrashReport.postCatchedException(e);
+
                 return false;
             }
         }
+
         return false;
     }
 
 
-    public boolean changePasword(int a,byte[] passWord, MifareClassic mfc) {
-        try {
-
-
-        } catch (Exception e) {
-            e.printStackTrace();
-            CrashReport.postCatchedException(e);
-        }
-        return false;
-    }
 
     /**
      * 鍒濆鍖栧崱
diff --git a/baselibrary/src/main/java/com/dayu/baselibrary/tools/nfc/NfcWriteAdapter.java b/baselibrary/src/main/java/com/dayu/baselibrary/tools/nfc/NfcWriteAdapter.java
index d10fedc..14e1e19 100644
--- a/baselibrary/src/main/java/com/dayu/baselibrary/tools/nfc/NfcWriteAdapter.java
+++ b/baselibrary/src/main/java/com/dayu/baselibrary/tools/nfc/NfcWriteAdapter.java
@@ -8,6 +8,8 @@
 import com.dayu.baselibrary.bean.BaseUserCardCard;
 import com.dayu.baselibrary.utils.ModelUtils;
 
+import java.util.List;
+
 /**
  * author: zuo
  * Date: 2024-09-26
@@ -79,4 +81,12 @@
         }
         return false;
     }
+
+    public boolean changePasword( List<byte[]> passWord, boolean isConnect, boolean isClose, NFCCallBack callBack) {
+        switch (BaseNfcActivity.adapterType) {
+            case ModelUtils.defaultType:
+                return nativeNfcWriteHelper.changePasword(passWord,isConnect, isClose,callBack);
+        }
+        return false;
+    }
 }
diff --git a/generallibrary/src/main/cpp/general-native-lib.cpp b/generallibrary/src/main/cpp/general-native-lib.cpp
index cf264e2..e961a69 100644
--- a/generallibrary/src/main/cpp/general-native-lib.cpp
+++ b/generallibrary/src/main/cpp/general-native-lib.cpp
@@ -39,7 +39,8 @@
     0x8E, 0x93, 0xB5, 0x44, 0x8D, 0x42, 0x22, 0x84, 0x95, 0x33, 0x22, 0x93,
     0x42, 0x82, 0xA3, 0x35, 0x91, 0x33, 0x13, 0x93, 0x71, 0x21, 0x01, 0x71,
     0x37, 0x9F, 0xA6, 0x68, 0x92, 0x86, 0x46, 0x72, 0x43, 0x62, 0x12, 0x52,
-    0x5D, 0x85, 0x93, 0x86, 0x82, 0x46, 0x31, 0x86, 0x57, 0x48, 0x16, 0x88,
+    // 鎵囧尯14瀵嗙爜 (鍩轰簬鎵囧尯13鐨刋OR瀵嗛挜閲嶆柊璁$畻涓�27562CCFE9F7)
+    0x5D, 0xE5, 0x93, 0x86, 0x82, 0x46, 0x31, 0x86, 0x57, 0x48, 0x16, 0x88,
     0x97, 0x73, 0xB5, 0x47, 0x95, 0x55, 0x36, 0x69, 0x49, 0x58, 0x18, 0x6A,
     0xEA, 0x46, 0x84, 0x93, 0x82, 0x19, 0x29, 0x91, 0x31, 0x1C, 0x0C, 0x7D
 };
@@ -95,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;
@@ -118,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());
 }
 
@@ -239,7 +240,7 @@
 
         // 瑙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)) {
@@ -251,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 dbaf55e..2ebe743 100644
--- a/generallibrary/src/main/java/com/dayu/general/activity/NewCard2Activity.kt
+++ b/generallibrary/src/main/java/com/dayu/general/activity/NewCard2Activity.kt
@@ -5,9 +5,11 @@
 import android.text.Editable
 import android.text.TextWatcher
 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.tools.nfc.NFCCallBack
 import com.dayu.baselibrary.view.TitleBar.ClickType_LEFT_IMAGE
 import com.dayu.general.BaseApplication
 import com.dayu.general.R
@@ -17,7 +19,10 @@
 import com.dayu.general.net.ApiManager
 import com.dayu.general.net.BaseResponse
 import com.dayu.general.tool.NfcReadHelper
+import com.dayu.general.tool.NfcWreatHelper
+import com.tencent.bugly.crashreport.CrashReport
 import kotlinx.coroutines.launch
+import android.util.TypedValue
 
 /**
  * Description: 鐢ㄦ埛寮�鍗$晫闈�(鍚屾淇敼鐧藉崱瀵嗙爜)
@@ -30,6 +35,12 @@
 
     // 鏀粯鏂瑰紡
     private var paymentMethod: String = "鐜伴噾"
+    
+    // 鏀粯鏂瑰紡ID
+    private var paymentId: Long = 0
+
+    // 鏀粯鏂瑰紡鍒楄〃
+    private var paymentMethodList: List<PaymentMethod> = listOf()
 
     // 鍗$墿鐞咺D
     private var cardPhysicalId: String = ""
@@ -41,12 +52,31 @@
         private const val TAG = "NewCard2Activity"
     }
 
+    // 鏀粯鏂瑰紡鏁版嵁绫�
+    data class PaymentMethod(
+        val id: Long,
+        val name: String,
+        val remarks: String,
+        val deleted: Int
+    )
+
+    // 鏀粯鏂瑰紡鎺ュ彛杩斿洖鏁版嵁绫�
+    data class PaymentMethodResponse(
+        val itemTotal: Any?,
+        val obj: List<PaymentMethod>,
+        val pageCurr: Any?,
+        val pageSize: Any?,
+        val pageTotal: Any?
+    )
+
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         binding = ActivityNewCard1GeBinding.inflate(layoutInflater)
         setContentView(binding.root)
 
         initView()
+        // 鑾峰彇鏀粯鏂瑰紡
+        getPaymentMethods()
         initListener()
     }
 
@@ -75,6 +105,88 @@
         // 璁剧疆閲戦杈撳叆闄愬埗涓轰袱浣嶅皬鏁�
         binding.newCardRechargeAmount.addTextChangedListener(createDecimalTextWatcher())
         binding.newCardCardFee.addTextChangedListener(createDecimalTextWatcher())
+    }
+
+    /**
+     * 鑾峰彇鏀粯鏂瑰紡鍒楄〃
+     */
+    private fun getPaymentMethods() {
+        ApiManager.getInstance().requestGetLoading(
+            this,
+            "sell/paymentmethod/get",
+            PaymentMethodResponse::class.java,
+            null,
+            object : SubscriberListener<BaseResponse<PaymentMethodResponse>>() {
+                override fun onNext(response: BaseResponse<PaymentMethodResponse>) {
+                    if (response.success) {
+                        // 鑾峰彇鏀粯鏂瑰紡鍒楄〃
+                        val paymentMethods = response.content?.obj ?: listOf()
+                        if (paymentMethods.isNotEmpty()) {
+                            paymentMethodList = paymentMethods
+                            // 鏇存柊鏀粯鏂瑰紡鏄剧ず
+                            updatePaymentMethodRadioGroup()
+                        }
+                    } 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()
+                }
+            }
+        )
+    }
+
+    /**
+     * 鏇存柊鏀粯鏂瑰紡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
+            }
+        }
     }
 
     /**
@@ -109,11 +221,14 @@
     private fun initListener() {
         // 璁剧疆鏀粯鏂瑰紡閫夋嫨鐩戝惉
         binding.newCardPaymentMethod.setOnCheckedChangeListener { group, checkedId ->
-            paymentMethod = when (checkedId) {
-                R.id.newCard_cashPayment -> "鐜伴噾"
-                R.id.newCard_posPayment -> "POS鏈�"
-                R.id.newCard_bankTransfer -> "閾惰杞处"
-                else -> "鐜伴噾"
+            // 鏍规嵁閫変腑鐨処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
+                }
             }
         }
 
@@ -142,14 +257,6 @@
         val formattedRechargeAmount = String.format("%.2f", rechargeAmount)
         val formattedCardFee = String.format("%.2f", cardFee)
 
-        // 鑾峰彇鏀粯鏂瑰紡ID
-        val paymentId = when (paymentMethod) {
-            "鐜伴噾" -> 1
-            "POS鏈�" -> 2
-            "閾惰杞处" -> 3
-            else -> 1
-        }
-
         val remark = binding.newCardRemark.text.toString()
 
         // 鏋勫缓璇锋眰鍙傛暟
@@ -158,7 +265,7 @@
         params["clientNum"] = binding.newCardFarmerCode.text.toString() // 鍐滄埛缂栧彿
         params["cardCost"] = (cardFee * 100).toInt() // 璐崱閲戦锛堝伐鏈垂锛夎浆涓哄垎
         params["amount"] = (rechargeAmount * 100).toInt() // 鍏呭�奸噾棰濊浆涓哄垎
-        params["paymentId"] = paymentId // 鏀粯鏂瑰紡
+        params["paymentId"] = paymentId // 鏀粯鏂瑰紡ID
         params["remarks"] = remark // 澶囨敞
         params["operator"] = BaseApplication.userId // 鎿嶄綔浜篒D
 
@@ -179,20 +286,30 @@
                             farmerCode = binding.newCardFarmerCode.text.toString(),
                             cardFee = cardFee,
                             remark = binding.newCardRemark.text.toString(),
-                            paymentMethod = paymentId,
+                            paymentMethod = paymentId.toInt(),
                             isReported = true,
                             isCardWritten = true
                         )
-                        
+
                         // 浣跨敤鍗忕▼鍦ㄥ悗鍙扮嚎绋嬩腑淇濆瓨鏁版嵁
                         lifecycleScope.launch {
                             try {
-                                BaseDaoSingleton.getInstance(this@NewCard2Activity).cardRegistrationDao().insert(cardRegistration)
-                                Toast.makeText(this@NewCard2Activity, "寮�鍗℃垚鍔�", Toast.LENGTH_SHORT).show()
+                                BaseDaoSingleton.getInstance(this@NewCard2Activity)
+                                    .cardRegistrationDao().insert(cardRegistration)
+                                Toast.makeText(
+                                    this@NewCard2Activity,
+                                    "寮�鍗℃垚鍔�",
+                                    Toast.LENGTH_SHORT
+                                ).show()
                                 setResult(RESULT_OK)
                                 finish()
                             } catch (e: Exception) {
-                                Toast.makeText(this@NewCard2Activity, "淇濆瓨寮�鍗′俊鎭け璐�: ${e.message}", Toast.LENGTH_SHORT).show()
+                                CrashReport.postCatchedException(e)
+                                Toast.makeText(
+                                    this@NewCard2Activity,
+                                    "淇濆瓨寮�鍗′俊鎭け璐�: ${e.message}",
+                                    Toast.LENGTH_SHORT
+                                ).show()
                             }
                         }
                     } else {
@@ -231,23 +348,45 @@
     }
 
     override fun onNfcBack(intent: Intent) {
-        var cardNumber = NfcReadHelper.getInstance(intent, this).getCardNumber()
+        var cardNumber = NfcReadHelper.getInstance(intent, this).getCardNumberNoClose()
         if (!cardNumber.isEmpty()) {
-            // 淇濆瓨鍗$墿鐞咺D
-            cardPhysicalId = cardNumber
-            // 鏇存柊UI
-            binding.newCardArerNumber.text = cardNumber
-            // 闅愯棌NFC璇诲崱鐣岄潰
-            binding.nfcContainer.visibility = View.GONE
-            binding.centerScroll.visibility = View.VISIBLE
-            binding.newCardRegistBtn.visibility = View.VISIBLE
+            try {
+                // 鍒涘缓瀵嗛挜鍒楄〃鐨勫壇鏈紝閬垮厤ConcurrentModificationException
+                val keyList = ArrayList(NfcReadHelper.getInstance(intent, this).getKeyList())
+
+                NfcWreatHelper.getInstance(intent, this).changePS(keyList, false, true, object :
+                    NFCCallBack {
+
+                    override fun isSusses(flag: Boolean, msg: String?) {
+                        if (flag) {
+                            // 淇濆瓨鍗$墿鐞咺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()
+            }
         }
     }
-
-
-
-
-
 
 
 }
\ No newline at end of file
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 9f9311c..b66c4df 100644
--- a/generallibrary/src/main/java/com/dayu/general/activity/SearchUserListActivity.kt
+++ b/generallibrary/src/main/java/com/dayu/general/activity/SearchUserListActivity.kt
@@ -160,7 +160,7 @@
         // 浣跨敤姝g‘鐨勭被鍨嬪弬鏁�
         ApiManager.getInstance().requestGetLoading(
             this,
-            "sell/client/get",
+            "terminal/client/getTermClients",
             SearchUserResult::class.java,
             map,
             object : SubscriberListener<BaseResponse<SearchUserResult>>() {
diff --git a/generallibrary/src/main/java/com/dayu/general/tool/GeBaseHelper.kt b/generallibrary/src/main/java/com/dayu/general/tool/GeBaseHelper.kt
index c2d4b5d..c007a9b 100644
--- a/generallibrary/src/main/java/com/dayu/general/tool/GeBaseHelper.kt
+++ b/generallibrary/src/main/java/com/dayu/general/tool/GeBaseHelper.kt
@@ -19,27 +19,29 @@
     private external fun getM1SectorKeySecure(context: Context, sectorIndex: Int): String
 
     init {
-        try {
-            // 鑾峰彇鎵�鏈夋墖鍖哄瘑閽�
-            val allKeys: String = getM1SectorKeySecure(context, 0)
-            if (allKeys.isNotEmpty()) {
-                val keys: Array<String> = allKeys.split(",").dropLastWhile { it.isEmpty() }.toTypedArray()
-                for (i in keys.indices) {
-                    val key = keys[i]
-                    if (key.isNotEmpty()) {
-                        listA_PS.add(HexUtil.hexToByteArray(key))
+        if(listA_PS.isEmpty()){
+            try {
+                // 鑾峰彇鎵�鏈夋墖鍖哄瘑閽�
+                val allKeys: String = getM1SectorKeySecure(context, 0)
+                if (allKeys.isNotEmpty()) {
+                    val keys: Array<String> = allKeys.split(",").dropLastWhile { it.isEmpty() }.toTypedArray()
+                    for (i in keys.indices) {
+                        val key = keys[i]
+                        if (key.isNotEmpty()) {
+                            listA_PS.add(HexUtil.hexToByteArray(key))
+                        }
                     }
                 }
+                defauleKey = HexUtil.hexToByteArray("FFFFFFFFFFFF")
+            } catch (e: Exception) {
+                e.printStackTrace()
+                // 璁剧疆榛樿瀵嗛挜
+                defauleKey = HexUtil.hexToByteArray("FFFFFFFFFFFF")
             }
-            defauleKey = HexUtil.hexToByteArray("FFFFFFFFFFFF")
-        } catch (e: Exception) {
-            e.printStackTrace()
-            // 璁剧疆榛樿瀵嗛挜
-            defauleKey = HexUtil.hexToByteArray("FFFFFFFFFFFF")
         }
     }
 
     fun getKeyList(): List<ByteArray> {
-        return listKeyA
+        return listA_PS
     }
 }
\ No newline at end of file
diff --git a/generallibrary/src/main/java/com/dayu/general/tool/NfcWreatHelper.kt b/generallibrary/src/main/java/com/dayu/general/tool/NfcWreatHelper.kt
index 4c5b085..0a6e18c 100644
--- a/generallibrary/src/main/java/com/dayu/general/tool/NfcWreatHelper.kt
+++ b/generallibrary/src/main/java/com/dayu/general/tool/NfcWreatHelper.kt
@@ -6,7 +6,8 @@
 import com.dayu.baselibrary.tools.nfc.NfcWriteAdapter
 import com.dayu.general.bean.card.UserCard
 
-class NfcWreatHelper private constructor(intent: Intent, activity: Activity) : GeBaseHelper(activity) {
+class NfcWreatHelper private constructor(intent: Intent, activity: Activity) :
+    GeBaseHelper(activity) {
 
     private val adapter: NfcWriteAdapter = NfcWriteAdapter(intent, activity)
 
@@ -35,9 +36,9 @@
      * @param b   涔﹀啓鐨勫潡(浠�0寮�濮嬫暟)
      * @param
      */
-    fun writeData(str: ByteArray?, a: Int, b: Int,callBack: NFCCallBack): Boolean {
+    fun writeData(str: ByteArray?, a: Int, b: Int, callBack: NFCCallBack): Boolean {
         try {
-            return adapter.writeData(str, a, b,false,callBack)
+            return adapter.writeData(str, a, b, false, callBack)
         } catch (e: Exception) {
             e.printStackTrace()
         }
@@ -52,7 +53,16 @@
      */
     fun writeUserData(userCard: UserCard): Boolean {
         try {
-            return adapter.writeUserData(userCard,7)
+            return adapter.writeUserData(userCard, 7)
+        } catch (e: java.lang.Exception) {
+            e.printStackTrace()
+        }
+        return false
+    }
+
+    fun changePS( ps: List<ByteArray>, isConnect: Boolean, isClose: Boolean,nfcCallBack: NFCCallBack): Boolean {
+        try {
+            return adapter.changePasword( ps, isConnect, isClose,nfcCallBack)
         } catch (e: java.lang.Exception) {
             e.printStackTrace()
         }
diff --git a/generallibrary/src/main/res/drawable/guashi.xml b/generallibrary/src/main/res/drawable/guashi.xml
new file mode 100644
index 0000000..5837549
--- /dev/null
+++ b/generallibrary/src/main/res/drawable/guashi.xml
@@ -0,0 +1,24 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="200dp"
+    android:height="200dp"
+    android:viewportWidth="1024"
+    android:viewportHeight="1024">
+  <path
+      android:pathData="M343.9,215m0,29.4l0,6.4q0,29.4 -29.4,29.4l-71.7,0q-29.4,0 -29.4,-29.4l0,-6.4q0,-29.4 29.4,-29.4l71.7,0q29.4,0 29.4,29.4Z"
+      android:fillColor="#009ad6"/>
+  <path
+      android:pathData="M834.1,759.5m0,32.4l0,0.4q0,32.4 -32.4,32.4l-46.1,0q-32.4,0 -32.4,-32.4l0,-0.4q0,-32.4 32.4,-32.4l46.1,0q32.4,0 32.4,32.4Z"
+      android:fillColor="#009ad6"/>
+  <path
+      android:pathData="M113.5,377.2m0,-30.7l0,-3.8q0,-30.7 30.7,-30.7l726.2,0q30.7,0 30.7,30.7l0,3.8q0,30.7 -30.7,30.7l-726.2,0q-30.7,0 -30.7,-30.7Z"
+      android:fillColor="#009ad6"/>
+  <path
+      android:pathData="M505.6,867.8H175.4A93,93 0,0 1,85.3 771.8V203.1a93,93 0,0 1,89.6 -96h660.5a93,93 0,0 1,89.6 96v272.2a32.4,32.4 0,0 1,-64.9 0V203.1a28.6,28.6 0,0 0,-24.7 -32.4H175.4a28.6,28.6 0,0 0,-24.3 30.7v570.5a28.6,28.6 0,0 0,24.3 30.7h330.2a32.9,32.9 0,0 1,0 65.3z"
+      android:fillColor="#009ad6"/>
+  <path
+      android:pathData="M887.5,922.9h-218a51.2,51.2 0,0 1,-50.8 -50.8v-160a50.8,50.8 0,0 1,50.8 -50.8h218a50.8,50.8 0,0 1,51.2 50.8v160a51.2,51.2 0,0 1,-51.2 50.8zM682.7,857.6h189V725.3H682.7z"
+      android:fillColor="#009ad6"/>
+  <path
+      android:pathData="M845.7,689.5a32.9,32.9 0,0 1,-32.9 -32.9c0,-58 -19.2,-58 -34.1,-58s-34.6,0 -34.6,58a32.9,32.9 0,1 1,-65.3 0c0,-77.2 37.1,-123.3 99.8,-123.3 37.1,0 99.4,15.8 99.4,123.3a32.9,32.9 0,0 1,-32.4 32.9z"
+      android:fillColor="#009ad6"/>
+</vector>
diff --git a/generallibrary/src/main/res/drawable/shape_click_tip_bg.xml b/generallibrary/src/main/res/drawable/shape_click_tip_bg.xml
new file mode 100644
index 0000000..e09c653
--- /dev/null
+++ b/generallibrary/src/main/res/drawable/shape_click_tip_bg.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <corners android:radius="10dp" />
+    <stroke 
+        android:width="1dp"
+        android:color="@color/colorPrimary" />
+    <solid android:color="#EEFFFFFF" />
+</shape> 
\ No newline at end of file
diff --git a/generallibrary/src/main/res/drawable/shape_status_bg.xml b/generallibrary/src/main/res/drawable/shape_status_bg.xml
new file mode 100644
index 0000000..811ca2a
--- /dev/null
+++ b/generallibrary/src/main/res/drawable/shape_status_bg.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <corners android:radius="12dp" />
+    <solid android:color="@color/colorPrimary" />
+</shape> 
\ No newline at end of file
diff --git a/generallibrary/src/main/res/drawable/xiaoka.xml b/generallibrary/src/main/res/drawable/xiaoka.xml
new file mode 100644
index 0000000..988c5be
--- /dev/null
+++ b/generallibrary/src/main/res/drawable/xiaoka.xml
@@ -0,0 +1,9 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="200dp"
+    android:height="200dp"
+    android:viewportWidth="1024"
+    android:viewportHeight="1024">
+  <path
+      android:pathData="M532.5,726L196.6,726c-2,-2.6 -3.6,-6.7 -3.1,-10.8L193.5,466.4h599L792.6,409.6h-599L193.5,280.6c-0.5,-4.1 1,-8.2 3.1,-10.8h612.9c2,2.6 3.6,6.7 3.1,10.8v218.1c0.5,15.4 13.3,28.2 29.2,27.6 16.4,0.5 29.2,-12.3 29.2,-27.6L870.9,280.6c0,-36.9 -25.6,-69.1 -61.4,-69.1L196.6,211.5c-35.8,0 -61.4,32.3 -61.4,69.1v434.7c0,36.9 25.6,69.1 61.4,69.1L532.5,784.4c15.9,0 28.7,-12.8 29.2,-29.2 -0.5,-15.4 -13.3,-28.7 -29.2,-29.2zM890.4,575.5l-34.8,-34.8 -104.4,104.4 -104.4,-104.4 -34.8,34.8 104.4,104.4 -104.4,104.4 34.8,34.8 104.4,-104.4 104.4,104.4 34.8,-34.8 -104.4,-104.4 104.4,-104.4z"
+      android:fillColor="#009ad6"/>
+</vector>
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 adba47f..4567eec 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="gone"
+        android:visibility="visible"
         app:cardBackgroundColor="@android:color/white"
         app:cardCornerRadius="12dp"
         app:cardElevation="4dp"
@@ -54,9 +54,10 @@
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:gravity="center"
-                android:text="锛堝皢鑾峰彇鐗╃悊鍗″崱鍙凤級"
-                android:textColor="#999999"
+                android:text="灏嗚繘琛屽垵濮嬪寲鍗$墖\n鑰楁椂杈冮暱璇蜂笉瑕佺Щ鍔ㄥ崱鐗�"
+                android:textColor="@color/base_blue_bg"
                 android:textSize="18sp"
+                android:layout_marginTop="20dp"
                 android:textStyle="bold" />
 
             <ImageView
@@ -84,7 +85,7 @@
         android:layout_height="0dp"
         android:fillViewport="true"
         android:scrollbars="none"
-        android:visibility="visible"
+        android:visibility="gone"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintTop_toBottomOf="@+id/titleBar">
 
@@ -246,24 +247,38 @@
                         <TextView
                             android:layout_width="105dp"
                             android:layout_height="wrap_content"
-                            android:text="宸ユ湰璐癸細"
+                            android:text="鍏呭�奸噾棰濓細"
                             android:textColor="#666666"
                             android:textSize="@dimen/new_card_size" />
 
                         <LinearLayout
                             android:layout_width="match_parent"
                             android:layout_height="wrap_content"
-                            android:background="#FFFFFF"
-                            android:orientation="vertical">
+                            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_rechargeAmount"
-                                android:layout_width="match_parent"
+                                android:layout_width="0dp"
+                                android:layout_weight="1"
                                 android:layout_height="wrap_content"
                                 android:background="@null"
-                                android:hint="璇疯緭鍏ュ伐鏈垂(閫夊~)"
+                                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>
@@ -278,28 +293,41 @@
                         <TextView
                             android:layout_width="105dp"
                             android:layout_height="wrap_content"
-                            android:text="鍏呭�奸噾棰濓細"
+                            android:text="宸ユ湰璐癸細"
                             android:textColor="#666666"
                             android:textSize="@dimen/new_card_size" />
 
                         <LinearLayout
                             android:layout_width="match_parent"
                             android:layout_height="wrap_content"
-                            android:background="#FFFFFF"
-                            android:orientation="vertical">
+                            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="match_parent"
+                                android:layout_width="0dp"
+                                android:layout_weight="1"
                                 android:layout_height="wrap_content"
                                 android:background="@null"
-                                android:hint="璇疯緭鍏ュ厖鍊奸噾棰�(閫夊~)"
+                                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"
@@ -318,8 +346,12 @@
                         <LinearLayout
                             android:layout_width="match_parent"
                             android:layout_height="wrap_content"
-                            android:background="#FFFFFF"
-                            android:orientation="vertical">
+                            android:background="@drawable/edit_text_bg_selector"
+                            android:orientation="vertical"
+                            android:paddingStart="10dp"
+                            android:paddingEnd="10dp"
+                            android:paddingTop="8dp"
+                            android:paddingBottom="8dp">
 
                             <EditText
                                 android:id="@+id/newCard_remark"
@@ -328,6 +360,7 @@
                                 android:background="@null"
                                 android:hint="璇疯緭鍏ュ娉�(閫夊~)"
                                 android:textColor="#333333"
+                                android:textColorHint="#BBBBBB"
                                 android:textSize="@dimen/new_card_size" />
                         </LinearLayout>
                     </LinearLayout>
@@ -360,48 +393,7 @@
                         android:layout_width="match_parent"
                         android:layout_height="wrap_content"
                         android:orientation="horizontal">
-
-                        <RadioButton
-                            android:id="@+id/newCard_cashPayment"
-                            android:layout_width="0dp"
-                            android:layout_height="40dp"
-                            android:layout_marginRight="15dp"
-                            android:layout_weight="1"
-                            android:background="@drawable/radio_selector"
-                            android:button="@null"
-                            android:checked="true"
-                            android:gravity="center"
-
-                            android:text="鐜伴噾"
-                            android:textColor="@color/radio_button_text_color"
-                            android:textSize="@dimen/new_card_size" />
-
-                        <RadioButton
-                            android:id="@+id/newCard_posPayment"
-                            android:layout_width="0dp"
-                            android:layout_height="40dp"
-                            android:layout_marginRight="15dp"
-                            android:layout_weight="1"
-                            android:background="@drawable/radio_selector"
-                            android:button="@null"
-                            android:gravity="center"
-
-                            android:text="POS鏈�"
-                            android:textColor="@color/radio_button_text_color"
-                            android:textSize="@dimen/new_card_size" />
-
-                        <RadioButton
-                            android:id="@+id/newCard_bankTransfer"
-                            android:layout_width="0dp"
-                            android:layout_height="40dp"
-                            android:layout_weight="1"
-                            android:background="@drawable/radio_selector"
-                            android:button="@null"
-                            android:gravity="center"
-
-                            android:text="閾惰杞处"
-                            android:textColor="@color/radio_button_text_color"
-                            android:textSize="@dimen/new_card_size" />
+                        <!-- 鍔ㄦ�佹坊鍔燫adioButton锛岀Щ闄ゅ浐瀹氱殑RadioButton -->
                     </RadioGroup>
                 </LinearLayout>
             </androidx.cardview.widget.CardView>
diff --git a/generallibrary/src/main/res/layout/fragment_card.xml b/generallibrary/src/main/res/layout/fragment_card.xml
index 70eef09..9323298 100644
--- a/generallibrary/src/main/res/layout/fragment_card.xml
+++ b/generallibrary/src/main/res/layout/fragment_card.xml
@@ -173,7 +173,7 @@
                     <ImageView
                         android:layout_width="55dp"
                         android:layout_height="55dp"
-                        android:src="@drawable/home_report" />
+                        android:src="@drawable/guashi" />
 
                     <TextView
                         android:layout_width="wrap_content"
@@ -264,14 +264,14 @@
                     <ImageView
                         android:layout_width="55dp"
                         android:layout_height="55dp"
-                        android:src="@drawable/chongzheng" />
+                        android:src="@drawable/xiaoka" />
 
                     <TextView
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
                         android:layout_marginTop="6dp"
                         android:gravity="center"
-                        android:text="鍐叉"
+                        android:text="閿�鍗�"
                         android:textColor="@color/text_selecter_color"
                         android:textSize="14sp" />
                 </LinearLayout>
@@ -316,48 +316,11 @@
                 </LinearLayout>
             </androidx.cardview.widget.CardView>
 
-            <androidx.cardview.widget.CardView
-                android:id="@+id/home_rewrite"
-                android:layout_width="0dp"
-                android:layout_height="wrap_content"
-                android:layout_marginStart="6dp"
-                android:layout_marginTop="16dp"
-                android:layout_marginEnd="6dp"
-                android:clickable="true"
-                android:focusable="true"
-                android:foreground="?android:attr/selectableItemBackground"
-                app:cardCornerRadius="10dp"
-                app:cardElevation="3dp"
-                app:layout_constraintEnd_toStartOf="@+id/home_manage"
-                app:layout_constraintStart_toStartOf="parent"
-                app:layout_constraintTop_toBottomOf="@+id/home_reverse">
 
-                <LinearLayout
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:gravity="center"
-                    android:orientation="vertical"
-                    android:padding="12dp">
-
-                    <ImageView
-                        android:layout_width="55dp"
-                        android:layout_height="55dp"
-                        android:src="@drawable/fanxie" />
-
-                    <TextView
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:layout_marginTop="6dp"
-                        android:gravity="center"
-                        android:text="鍙嶅啓"
-                        android:textColor="@color/text_selecter_color"
-                        android:textSize="14sp" />
-                </LinearLayout>
-            </androidx.cardview.widget.CardView>
 
             <androidx.cardview.widget.CardView
                 android:id="@+id/home_manage"
-                android:layout_width="0dp"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_marginStart="6dp"
                 android:layout_marginTop="16dp"
@@ -370,7 +333,7 @@
                 app:cardElevation="3dp"
                 app:layout_constraintBottom_toBottomOf="parent"
                 app:layout_constraintEnd_toEndOf="parent"
-                app:layout_constraintStart_toEndOf="@+id/home_rewrite"
+
                 app:layout_constraintTop_toBottomOf="@+id/home_deduction"
                 app:layout_constraintVertical_bias="0.0">
 
diff --git a/generallibrary/src/main/res/values/dimens.xml b/generallibrary/src/main/res/values/dimens.xml
index 73a870b..b4f7b71 100644
--- a/generallibrary/src/main/res/values/dimens.xml
+++ b/generallibrary/src/main/res/values/dimens.xml
@@ -2,5 +2,13 @@
 <resources>
 
     <dimen name="title_text_size">20sp</dimen>
+    <dimen name="dimen_40">40dp</dimen>
+    <dimen name="dimen_15">15dp</dimen>
+    <dimen name="new_card_size">14sp</dimen>
+    
+    <!-- 杈撳叆妗嗙浉鍏� -->
+    <dimen name="input_padding_horizontal">12dp</dimen>
+    <dimen name="input_padding_vertical">10dp</dimen>
+    <dimen name="input_corner_radius">8dp</dimen>
 
 </resources>
\ No newline at end of file

--
Gitblit v1.8.0