From d1573513f0eada6a915c2163ce6c84451c8c1070 Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期四, 13 六月 2024 15:06:05 +0800
Subject: [PATCH] 1.修复河南版本域名卡结构不同问题 2.修复齐河版本最终购水日期的bug

---
 henanlibrary/src/main/java/com/dayu/henanlibrary/card/DomainCard.java                   |  197 ++++++++++++++----
 henanlibrary/src/main/java/com/dayu/henanlibrary/dbBean/DomainBean.java                 |    4 
 henanlibrary/src/main/java/com/dayu/henanlibrary/activity/NFCWreatActivity.java         |   20 +
 henanlibrary/src/main/java/com/dayu/henanlibrary/activity/PassWordActivity.java         |    4 
 qihealonelibrary/src/main/java/com/dayu/qihealonelibrary/card/UserCard.java             |   12 
 henanlibrary/src/main/java/com/dayu/henanlibrary/activity/ReadCardAcitivy.java          |   17 +
 henanlibrary/src/main/java/com/dayu/henanlibrary/view/DomaindDialog.java                |  108 ++++++++++
 henanlibrary/src/main/res/layout/domain_dialog.xml                                      |  104 ++++++++++
 qihealonelibrary/src/main/java/com/dayu/qihealonelibrary/activity/PassWordActivity.java |   51 ++--
 app/build.gradle                                                                        |    4 
 baselibrary/src/main/java/com/dayu/baselibrary/tools/HexUtil.java                       |   23 ++
 henanlibrary/src/main/java/com/dayu/henanlibrary/activity/SysActivity.java              |   19 -
 12 files changed, 450 insertions(+), 113 deletions(-)

diff --git a/app/build.gradle b/app/build.gradle
index 9e070ee..94d0b6d 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -16,8 +16,8 @@
         applicationId "com.dayu.recharge"
         minSdk 23
         targetSdk 26
-        versionCode 22
-        versionName "2.2"
+        versionCode 24
+        versionName "2.4"
         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
 
 //        ndk {
diff --git a/baselibrary/src/main/java/com/dayu/baselibrary/tools/HexUtil.java b/baselibrary/src/main/java/com/dayu/baselibrary/tools/HexUtil.java
index 19f3ca7..0cde97f 100644
--- a/baselibrary/src/main/java/com/dayu/baselibrary/tools/HexUtil.java
+++ b/baselibrary/src/main/java/com/dayu/baselibrary/tools/HexUtil.java
@@ -58,6 +58,29 @@
         return ((data & 0xF0) >> 4) * 10 + ((data & 0x0F));
     }
 
+
+    public static byte[] getIntToBCD(int number) {
+        // 鑾峰彇鏁存暟鐨勫瓧绗︿覆琛ㄧず褰㈠紡
+        String numberStr = Integer.toString(number);
+
+        // 鍒涘缓涓�涓瓧鑺傛暟缁勪互瀛樺偍BCD琛ㄧず
+        int len = numberStr.length();
+        byte[] bcd = new byte[(len + 1) / 2];
+
+        int j = 0;
+        // 濡傛灉鏁板瓧鐨勯暱搴︽槸濂囨暟锛岄渶瑕佸湪鍓嶉潰娣诲姞涓�涓�0
+        if (len % 2 != 0) {
+            numberStr = "0" + numberStr; // 鍏堟坊鍔犲墠瀵奸浂
+            len++;
+        }
+
+        // 灏嗘瘡涓�瀵规暟瀛楄浆鎹负涓�涓瓧鑺�
+        for (int i = 0; i < len; i += 2) {
+            bcd[j++] = (byte) (((numberStr.charAt(i) - '0') << 4) | (numberStr.charAt(i + 1) - '0'));
+        }
+
+        return bcd;
+    }
     /**
      * short10杩涘埗杞�16杩涘埗 浣庝綅鍦ㄥ墠楂樹綅鍦ㄥ悗
      *
diff --git a/henanlibrary/src/main/java/com/dayu/henanlibrary/activity/NFCWreatActivity.java b/henanlibrary/src/main/java/com/dayu/henanlibrary/activity/NFCWreatActivity.java
index f098f97..5f11fca 100644
--- a/henanlibrary/src/main/java/com/dayu/henanlibrary/activity/NFCWreatActivity.java
+++ b/henanlibrary/src/main/java/com/dayu/henanlibrary/activity/NFCWreatActivity.java
@@ -204,9 +204,13 @@
                 cleanUserCard = (CleanUserCard) this.getIntent().getSerializableExtra("cleanUserCard");
                 binding.cardData.setText("鍒朵綔鍒犻櫎鍏ㄩ儴鐢ㄦ埛鍗�");
             }
-            if (this.getIntent().hasExtra("domainCard")) {
-                domainCard = (DomainCard) this.getIntent().getSerializableExtra("domainCard");
-                binding.cardData.setText("鍒朵綔璁剧疆鍩熷悕鍗�");
+            if (this.getIntent().hasExtra("domainCard_xinxiang")) {
+                domainCard = (DomainCard) this.getIntent().getSerializableExtra("domainCard_xinxiang");
+                binding.cardData.setText("鍒朵綔璁剧疆鏂颁埂鍩熷悕鍗�");
+            }
+            if (this.getIntent().hasExtra("domainCard_luyi")) {
+                domainCard = (DomainCard) this.getIntent().getSerializableExtra("domainCard_luyi");
+                binding.cardData.setText("鍒朵綔璁剧疆鏂颁埂鍩熷悕鍗�");
             }
             if (this.getIntent().hasExtra("testCard")) {
                 testCard = (TestCard) this.getIntent().getSerializableExtra("testCard");
@@ -558,19 +562,19 @@
      * 璁剧疆鍩熷悕鍗�
      *
      * @param intent
-     * @param domainCard
+     * @param domainXinXiangCard
      */
-    private void setDomainCard(Intent intent, DomainCard domainCard) {
+    private void setDomainCard(Intent intent, DomainCard domainXinXiangCard) {
         try {
-            domainCrdFlag = NFCWriteHelper.getInstence(intent, this).writeData(domainCard.getZeroByte(), 1, 0);
+            domainCrdFlag = NFCWriteHelper.getInstence(intent, this).writeData(domainXinXiangCard.getZeroByte(), 1, 0);
             if (!domainCrdFlag) {
                 return;
             }
-            domainCrdFlag = NFCWriteHelper.getInstence(intent, this).writeData(domainCard.getOneByte(), 1, 1);
+            domainCrdFlag = NFCWriteHelper.getInstence(intent, this).writeData(domainXinXiangCard.getOneByte(), 1, 1);
             if (!domainCrdFlag) {
                 return;
             }
-            domainCrdFlag = NFCWriteHelper.getInstence(intent, this).writeData(domainCard.getTwoByte(), 1, 2);
+            domainCrdFlag = NFCWriteHelper.getInstence(intent, this).writeData(domainXinXiangCard.getTwoByte(), 1, 2);
         } catch (Exception e) {
             domainCrdFlag = false;
             throw new RuntimeException(e);
diff --git a/henanlibrary/src/main/java/com/dayu/henanlibrary/activity/PassWordActivity.java b/henanlibrary/src/main/java/com/dayu/henanlibrary/activity/PassWordActivity.java
index b19c539..2fb1d5b 100644
--- a/henanlibrary/src/main/java/com/dayu/henanlibrary/activity/PassWordActivity.java
+++ b/henanlibrary/src/main/java/com/dayu/henanlibrary/activity/PassWordActivity.java
@@ -32,8 +32,8 @@
 
                 if (!TextUtils.isEmpty(pswBinding.pswNew.getText().toString()) && !TextUtils.isEmpty(pswBinding.pswOld.getText().toString()) && !TextUtils.isEmpty(pswBinding.pswNewAgin.getText().toString())) {
                     if ((passWordBean != null
-                            && (passWordBean.getPassWord().equalsIgnoreCase(WSMD5.getMD5Str(pswBinding.pswOld.getText().toString())))
-                            || (WSMD5.getMD5Str(pswBinding.pswOld.getText().toString()).equals("8af357996269a1b52b182a839150097d"))&& passWordBean == null)) {
+                            && (passWordBean.getPassWord().equalsIgnoreCase(WSMD5.getMD5Str(pswBinding.pswOld.getText().toString()))))
+                            || (WSMD5.getMD5Str(pswBinding.pswOld.getText().toString()).equals("e10adc3949ba59abbe56e057f20f883e") && passWordBean == null)) {
                         if (passWordBean == null) {
                             passWordBean = new PassWordBean();
                         }
diff --git a/henanlibrary/src/main/java/com/dayu/henanlibrary/activity/ReadCardAcitivy.java b/henanlibrary/src/main/java/com/dayu/henanlibrary/activity/ReadCardAcitivy.java
index ed57dca..ee8176a 100644
--- a/henanlibrary/src/main/java/com/dayu/henanlibrary/activity/ReadCardAcitivy.java
+++ b/henanlibrary/src/main/java/com/dayu/henanlibrary/activity/ReadCardAcitivy.java
@@ -131,9 +131,20 @@
                                     break;
                                 case CardCommon.DOMAIN_CARD_TYPE:
                                     viweGone(false);
-                                    redCardBinding.readCardTypeTV.setText("褰撳墠涓鸿缃煙鍚嶅崱");
-                                    DomainCard domainCard = DomainCard.toBean(data);
-                                    redCardBinding.readCardDataTV.setText("搴忓彿锛�" + domainCard.getDomainNumber() + "\n" + "鍩熷悕锛�" + domainCard.getDomainName() + "\n" + "绔彛鍙凤細" + domainCard.getPort());
+                                    DomainCard domainXinXiangCard = DomainCard.toBean(data);
+                                    if(domainXinXiangCard.getType()==0){
+                                        redCardBinding.readCardTypeTV.setText("褰撳墠涓烘柊涔″煙鍚嶅崱");
+                                    }else {
+                                        redCardBinding.readCardTypeTV.setText("褰撳墠涓洪箍閭戝煙鍚嶅崱");
+                                    }
+                                    StringBuilder builder = new StringBuilder();
+                                    if (domainXinXiangCard.getType() == 0) {
+                                        builder.append("搴忓彿锛�" + domainXinXiangCard.getDomainNumber() + "\n");
+                                    }
+                                    builder.append("鍩熷悕锛�" + domainXinXiangCard.getDomainName());
+                                    builder.append("\n" + "绔彛鍙凤細" + domainXinXiangCard.getPort());
+
+                                    redCardBinding.readCardDataTV.setText(builder.toString());
                                     stopAnim();
                                     break;
                                 case CardCommon.TEST_CARD_TYPE:
diff --git a/henanlibrary/src/main/java/com/dayu/henanlibrary/activity/SysActivity.java b/henanlibrary/src/main/java/com/dayu/henanlibrary/activity/SysActivity.java
index c0d5b04..91198cd 100644
--- a/henanlibrary/src/main/java/com/dayu/henanlibrary/activity/SysActivity.java
+++ b/henanlibrary/src/main/java/com/dayu/henanlibrary/activity/SysActivity.java
@@ -9,13 +9,12 @@
 import com.dayu.henanlibrary.card.CleanUserCard;
 import com.dayu.henanlibrary.card.ConfigurationPowerCard;
 import com.dayu.henanlibrary.card.ConfigureDeviceRegistrationCrad;
-import com.dayu.henanlibrary.card.DomainCard;
 import com.dayu.henanlibrary.card.ManageCard;
 import com.dayu.henanlibrary.card.RegisteredCard;
 import com.dayu.henanlibrary.card.TestCard;
 import com.dayu.henanlibrary.databinding.ActivityAdminHnBinding;
-import com.dayu.henanlibrary.dbBean.DomainBean;
 import com.dayu.henanlibrary.dbBean.PowerBean;
+import com.dayu.henanlibrary.view.DomaindDialog;
 
 /**
  * Copyright (C), 2023,
@@ -69,20 +68,8 @@
         });
 //        璁剧疆鍩熷悕鍗�
         adminBinding.adminDomain.setOnClickListener(v -> {
-            Intent intent = new Intent(SysActivity.this, NFCWreatActivity.class);
-            DomainBean domainBean = baseDao.domainPortDao().findFirst();
-            DomainCard domainCard = new DomainCard();
-            if (domainBean != null) {
-                domainCard.setDomainNumber(domainBean.getDomainNumber());
-                domainCard.setDomainName(domainBean.getDomain());
-                domainCard.setPort(domainBean.getPort());
-            } else {
-                domainCard.setDomainNumber("1");
-                domainCard.setDomainName("newreceive.hnsjgg.com");
-                domainCard.setPort(9999);
-            }
-            intent.putExtra("domainCard", domainCard);
-            startActivity(intent);
+            DomaindDialog domaindDialog=new DomaindDialog(SysActivity.this);
+            domaindDialog.show();
         });
         adminBinding.adminTest.setOnClickListener(v -> {
             Intent intent = new Intent(SysActivity.this, NFCWreatActivity.class);
diff --git a/henanlibrary/src/main/java/com/dayu/henanlibrary/card/DomainCard.java b/henanlibrary/src/main/java/com/dayu/henanlibrary/card/DomainCard.java
index b686627..977ad1b 100644
--- a/henanlibrary/src/main/java/com/dayu/henanlibrary/card/DomainCard.java
+++ b/henanlibrary/src/main/java/com/dayu/henanlibrary/card/DomainCard.java
@@ -1,5 +1,7 @@
 package com.dayu.henanlibrary.card;
 
+import android.text.TextUtils;
+
 import com.dayu.baselibrary.tools.BcdUtil;
 import com.dayu.baselibrary.tools.HexUtil;
 import com.dayu.henanlibrary.utils.CardCommon;
@@ -26,6 +28,16 @@
     //绔彛鍙蜂负5涓瓧鑺傦紝涓嶈冻5浣嶉珮浣嶈ˉ0銆傜鍙e彿涓庡煙鍚嶄箣闂寸敤鈥�,鈥濋殧寮�銆傜鍙e彿鏈�鍚庝互鈥�#鈥濈粨鏉�
     public String domainName;//鍩熷悕
     public int port;//绔彛
+
+    public int type;//鍩熷悕鍗℃柊涔1鍚庢湁01==0锛岄箍閭戞病鏈�01==1
+
+    public int getType() {
+        return type;
+    }
+
+    public void setType(int type) {
+        this.type = type;
+    }
 
     public String getDomainName() {
         return domainName;
@@ -71,34 +83,80 @@
 
     public static DomainCard toBean(List<byte[]> data) {
         try {
-            DomainCard domainCard = new DomainCard();
+            DomainCard domainXinXiangCard = new DomainCard();
             String domainNumber = BcdUtil.bcdToStr(data.get(0)[1]);
-            domainCard.domainNumber = domainNumber;
-            int domainLength = HexUtil.get16to10(HexUtil.byteToHex(data.get(0)[2]));
-            byte[] domainData = new byte[domainLength + 7];
-            int index = 0;
-            for (int i = 0; i < 3; i++) {
-                int jIndex;
-                if (i == 0) {
-                    jIndex = 3;
-                } else {
-                    jIndex = 0;
-                }
-                for (int j = jIndex; j < 15; j++) {
-                    if (index < domainData.length) {
-                        domainData[index] = data.get(i)[j];
-                        index++;
+            if ("00".equals(domainNumber)||"01".equals(domainNumber)||"02".equals(domainNumber)){//鍋囧搴忓彿灏忎簬绛変簬2灏辫涓烘槸鏂颁埂鐨�
+                domainXinXiangCard.setType(0);
+                domainXinXiangCard.domainNumber = domainNumber;
+                int domainLength = HexUtil.get16to10(HexUtil.byteToHex(data.get(0)[2]));
+                byte[] domainData = new byte[domainLength + 7];
+                int index = 0;
+                for (int i = 0; i < 3; i++) {
+                    int jIndex;
+                    if (i == 0) {
+                        jIndex = 3;
+                    } else {
+                        jIndex = 0;
                     }
+                    for (int j = jIndex; j < 15; j++) {
+                        if (index < domainData.length) {
+                            domainData[index] = data.get(i)[j];
+                            index++;
+                        }
+                    }
+                }
+                String domainStr = new String(domainData, StandardCharsets.US_ASCII);
+                if (!TextUtils.isEmpty(domainStr)){
+                    try {
+                        String[] parts = domainStr.split("#")[0].split(",");
+                        if (parts.length >= 2) {
+                            String domainName = parts[0];
+                            String port = parts[1].replace("#", "");
+                            domainXinXiangCard.setDomainName(domainName);
+                            domainXinXiangCard.setPort(Integer.valueOf(port));
+                        }
+                    } catch (NumberFormatException e) {
+                        e.printStackTrace();
+                    }
+                }
 
+            }else {
+                domainXinXiangCard.setType(1);
+                int domainLength = HexUtil.get16to10(HexUtil.byteToHex(data.get(0)[1]));
+                byte[] domainData = new byte[domainLength + 7];
+                int index = 0;
+                for (int i = 0; i < 3; i++) {
+                    int jIndex;
+                    if (i == 0) {
+                        jIndex = 2;
+                    } else {
+                        jIndex = 0;
+                    }
+                    for (int j = jIndex; j < 15; j++) {
+                        if (index < domainData.length) {
+                            domainData[index] = data.get(i)[j];
+                            index++;
+                        }
+                    }
+                }
+                String domainStr = new String(domainData, StandardCharsets.US_ASCII);
+
+                if (!TextUtils.isEmpty(domainStr)){
+                    try {
+                        String[] parts = domainStr.split("#")[0].split(",");
+                        if (parts.length >= 2) {
+                            String domainName = parts[0];
+                            String port = parts[1].replace("#", "");
+                            domainXinXiangCard.setDomainName(domainName);
+                            domainXinXiangCard.setPort(Integer.valueOf(port));
+                        }
+                    } catch (NumberFormatException e) {
+                        e.printStackTrace();
+                    }
                 }
             }
-            String domainStr = new String(domainData, StandardCharsets.US_ASCII);
-            String domainName = domainStr.split(",")[0];
-            String port = domainStr.split(",")[1].replace("#", "");
-            domainCard.setDomainName(domainName);
-            domainCard.setPort(Integer.valueOf(port));
 
-            return domainCard;
+            return domainXinXiangCard;
         } catch (Exception e) {
             e.printStackTrace();
             CrashReport.postCatchedException(e);
@@ -114,24 +172,45 @@
         public byte[] toByte() {
             byte[] data = new byte[16];
             data[0] = HexUtil.hexToByte(cardType);
-            if (domainNumber != null) {
-                byte[] domainNumbers = BcdUtil.strToBcd(domainNumber);
-                data[1] = domainNumbers[0];
-            }
-            domainLength = domainName.length();
-            data[2] = HexUtil.hexToByte(HexUtil.get10to16(domainLength));
-            String portStr = String.valueOf(port);
-            int lenght = portStr.length();
-            for (int i = 0; i < 5 - lenght; i++) {
-                portStr = "0" + portStr;
-            }
-            String ascii = IDN.toASCII(domainName + "," + portStr + "#");
-            asciiByte = ascii.getBytes();
-            if (asciiByte.length < 12) {
-                System.arraycopy(asciiByte, 0, data, 3, asciiByte.length);
+//            鍩熷悕鍗℃柊涔1鍚庢湁01==0锛岄箍閭戞病鏈�01==1
+            if (type == 0) {
+                if (domainNumber != null) {
+                    byte[] domainNumbers = BcdUtil.strToBcd(domainNumber);
+                    data[1] = domainNumbers[0];
+                }
+                domainLength = domainName.length();
+                data[2] = HexUtil.hexToByte(HexUtil.get10to16(domainLength));
+                String portStr = String.valueOf(port);
+                int lenght = portStr.length();
+                for (int i = 0; i < 5 - lenght; i++) {
+                    portStr = "0" + portStr;
+                }
+                String ascii = IDN.toASCII(domainName + "," + portStr + "#");
+                asciiByte = ascii.getBytes();
+                if (asciiByte.length < 12) {
+                    System.arraycopy(asciiByte, 0, data, 3, asciiByte.length);
+                } else {
+                    System.arraycopy(asciiByte, 0, data, 3, 12);
+                }
             } else {
-                System.arraycopy(asciiByte, 0, data, 3, 12);
+                data[1] = HexUtil.hexToByte(HexUtil.get10to16(domainLength));
+                String portStr = String.valueOf(port);
+                int lenght = portStr.length();
+                for (int i = 0; i < 5 - lenght; i++) {
+                    portStr = "0" + portStr;
+                }
+                String ascii = IDN.toASCII(domainName + "," + portStr + "#");
+                asciiByte = ascii.getBytes();
+                if (asciiByte.length < 13) {
+                    System.arraycopy(asciiByte, 0, data, 1, asciiByte.length);
+                } else {
+                    System.arraycopy(asciiByte, 0, data, 1, 13);
+                }
+
+
+
             }
+
             data[15] = getByteSum(data);
             return data;
         }
@@ -145,13 +224,24 @@
 
         public byte[] toBytes() {
             byte[] data = new byte[16];
-            if (asciiByte.length > 12) {
-                if (asciiByte.length - 12 < 15) {
-                    System.arraycopy(asciiByte, 12, data, 0, asciiByte.length - 12);
-                } else {
-                    System.arraycopy(asciiByte, 12, data, 0, 15);
+            if (type==0){
+                if (asciiByte.length > 12) {
+                    if (asciiByte.length - 12 < 15) {
+                        System.arraycopy(asciiByte, 12, data, 0, asciiByte.length - 12);
+                    } else {
+                        System.arraycopy(asciiByte, 12, data, 0, 15);
+                    }
+                }
+            }else {
+                if (asciiByte.length > 13) {
+                    if (asciiByte.length - 13 < 15) {
+                        System.arraycopy(asciiByte, 13, data, 0, asciiByte.length - 12);
+                    } else {
+                        System.arraycopy(asciiByte, 13, data, 0, 15);
+                    }
                 }
             }
+
             data[15] = getByteSum(data);
             return data;
         }
@@ -165,13 +255,24 @@
     public class Two extends BaseCard {
         public byte[] toBytes() {
             byte[] data = new byte[16];
-            if (asciiByte.length > (12 + 15)) {
-                if (asciiByte.length - (12 + 15) < 15) {
-                    System.arraycopy(asciiByte, 12, data, 0, asciiByte.length - (12 + 15));
-                } else {
-                    System.arraycopy(asciiByte, 12, data, 0, 15);
+            if (type==0){
+                if (asciiByte.length > (12 + 15)) {
+                    if (asciiByte.length - (12 + 15) < 15) {
+                        System.arraycopy(asciiByte, 12 + 15, data, 0, asciiByte.length - (12 + 15));
+                    } else {
+                        System.arraycopy(asciiByte, 12 + 15, data, 0, 15);
+                    }
+                }
+            }else {
+                if (asciiByte.length > (13 + 15)) {
+                    if (asciiByte.length - (13 + 15) < 15) {
+                        System.arraycopy(asciiByte, 13 + 15, data, 0, asciiByte.length - (12 + 15));
+                    } else {
+                        System.arraycopy(asciiByte, 13 + 15, data, 0, 15);
+                    }
                 }
             }
+
             data[15] = getByteSum(data);
             return data;
         }
diff --git a/henanlibrary/src/main/java/com/dayu/henanlibrary/dbBean/DomainBean.java b/henanlibrary/src/main/java/com/dayu/henanlibrary/dbBean/DomainBean.java
index dc9073b..85829b9 100644
--- a/henanlibrary/src/main/java/com/dayu/henanlibrary/dbBean/DomainBean.java
+++ b/henanlibrary/src/main/java/com/dayu/henanlibrary/dbBean/DomainBean.java
@@ -3,6 +3,8 @@
 import androidx.room.Entity;
 import androidx.room.PrimaryKey;
 
+import java.io.Serializable;
+
 /**
  * Created by Android Studio.
  * author: zuo
@@ -11,7 +13,7 @@
  * 澶囨敞锛� 鍩熷悕鍜岀鍙e彿鐩稿叧
  */
 @Entity
-public class DomainBean {
+public class DomainBean implements Serializable {
     @PrimaryKey(autoGenerate = true)
     public long id;
 
diff --git a/henanlibrary/src/main/java/com/dayu/henanlibrary/view/DomaindDialog.java b/henanlibrary/src/main/java/com/dayu/henanlibrary/view/DomaindDialog.java
new file mode 100644
index 0000000..6e33bb1
--- /dev/null
+++ b/henanlibrary/src/main/java/com/dayu/henanlibrary/view/DomaindDialog.java
@@ -0,0 +1,108 @@
+package com.dayu.henanlibrary.view;
+
+import static android.view.Gravity.CENTER;
+
+import android.app.Dialog;
+import android.content.Intent;
+import android.view.ViewGroup;
+import android.view.WindowManager;
+import android.widget.RadioGroup;
+import android.widget.TextView;
+
+import com.dayu.baselibrary.utils.ToastUtil;
+import com.dayu.henanlibrary.R;
+import com.dayu.henanlibrary.activity.HNBaseActivity;
+import com.dayu.henanlibrary.activity.NFCWreatActivity;
+import com.dayu.henanlibrary.card.DomainCard;
+import com.dayu.henanlibrary.dbBean.DomainBean;
+
+/**
+ * author: zuo
+ * Date: 2024-06-07
+ * Time: 10:44
+ * 澶囨敞锛氶�夋嫨鍩熷悕鍗$被鍨� 鍩熷悕鍗℃柊涔1鍚庢湁01锛岄箍閭戞病鏈�01锛屽崱缁撴瀯涓嶅悓
+ */
+public class DomaindDialog extends Dialog {
+
+    HNBaseActivity mContext;
+
+    boolean ischose = false;
+
+
+    int type;
+
+
+    public DomaindDialog(HNBaseActivity context) {
+        super(context, com.dayu.baselibrary.R.style.ws_pay_showSelfDialog);
+        mContext = context;
+        initView();
+    }
+
+    private void initView() {
+        getWindow().setGravity(CENTER);
+        setContentView(R.layout.domain_dialog);
+        setCanceledOnTouchOutside(false);
+        RadioGroup radioGroup = findViewById(R.id.radioLibrary);
+
+        radioGroup.setOnCheckedChangeListener((group, checkedId) -> {
+            ischose = true;
+            // 褰撻�変腑鐨凴adioButton鍙戠敓鍙樺寲鏃惰皟鐢�
+            if (checkedId == R.id.xinxiang) {
+                type = 0;
+            } else if (checkedId == R.id.luyi) {// 澶勭悊閫変腑Option 2鐨勯�昏緫
+                type = 1;
+            }
+        });
+        TextView okBtn = findViewById(R.id.ok);
+        okBtn.setOnClickListener(v -> {
+            if (ischose) {
+                Intent intent = new Intent(mContext, NFCWreatActivity.class);
+                DomainBean domainBean = mContext.baseDao.domainPortDao().findFirst();
+                DomainCard domainCard = new DomainCard();
+                if (domainBean != null) {
+                    domainCard.setDomainNumber(domainBean.getDomainNumber());
+                    domainCard.setDomainName(domainBean.getDomain());
+                    domainCard.setPort(domainBean.getPort());
+                } else {
+                    ToastUtil.showLong("褰撳墠鏈缃煙鍚嶄俊鎭紝宸蹭娇鐢ㄦ渤鍗楃渷骞冲彴榛樿鍩熷悕涓庣鍙e彿");
+                    domainCard.setDomainNumber("1");
+                    domainCard.setDomainName("newreceive.hnsjgg.com");
+                    domainCard.setPort(9999);
+                }
+                //鍩熷悕鍗℃柊涔1鍚庢湁01锛岄箍閭戞病鏈�01
+                if (type == 0) {
+                    domainCard.setType(0);
+                    intent.putExtra("domainCard_xinxiang", domainCard);
+                } else {
+                    domainCard.setType(1);
+                    intent.putExtra("domainCard_luyi", domainCard);
+                }
+
+                mContext.startActivity(intent);
+                DomaindDialog.this.dismiss();
+            }
+        });
+
+
+    }
+
+    @Override
+    public void show() {
+
+        super.show();
+        /**
+         * 璁剧疆瀹藉害鍏ㄥ睆锛岃璁剧疆鍦╯how鐨勫悗闈�
+         */
+        WindowManager.LayoutParams layoutParams = getWindow().getAttributes();
+        layoutParams.gravity = CENTER;
+        layoutParams.width = ViewGroup.LayoutParams.MATCH_PARENT;
+        layoutParams.height = ViewGroup.LayoutParams.MATCH_PARENT;
+        getWindow().getDecorView().setPadding(0, 0, 0, 0);
+        getWindow().setAttributes(layoutParams);
+    }
+
+
+    public interface libraryBack {
+        void listener(int type);
+    }
+}
\ No newline at end of file
diff --git a/henanlibrary/src/main/res/layout/domain_dialog.xml b/henanlibrary/src/main/res/layout/domain_dialog.xml
new file mode 100644
index 0000000..e478dd7
--- /dev/null
+++ b/henanlibrary/src/main/res/layout/domain_dialog.xml
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="#40000000"
+    android:gravity="center"
+    android:orientation="vertical">
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_margin="@dimen/dialog_bg_margin"
+        android:background="@drawable/base_bg_dialog_top_stroke"
+        android:gravity="center"
+        android:orientation="vertical">
+
+        <TextView
+            android:layout_width="300dp"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="20dp"
+            android:gravity="center"
+            android:text="閫夋嫨鍩熷悕鍗$被鍨�"
+            android:textColor="@color/dialog_btn"
+            android:textSize="23sp"
+            android:textStyle="bold" />
+
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="2px"
+            android:layout_marginTop="20dp"
+            android:background="@color/line_bg" />
+
+        <RadioGroup
+            android:id="@+id/radioLibrary"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content">
+
+
+            <RadioButton
+                android:id="@+id/xinxiang"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="50dp"
+                android:layout_marginTop="25dp"
+                android:layout_marginRight="50dp"
+                android:background="@drawable/radio_select"
+                android:button="@null"
+                android:gravity="center"
+                android:padding="6dp"
+                android:text="鏂颁埂鍩熷悕鍗�"
+                android:textColor="@drawable/radio_text_select"
+                android:textSize="20sp" />
+
+            <RadioButton
+                android:id="@+id/luyi"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="50dp"
+                android:layout_marginTop="25dp"
+                android:layout_marginRight="50dp"
+                android:background="@drawable/radio_select"
+                android:button="@null"
+                android:gravity="center"
+                android:padding="6dp"
+                android:text="楣块倯鍩熷悕鍗�"
+                android:textColor="@drawable/radio_text_select"
+                android:textSize="20sp" />
+        </RadioGroup>
+
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="2px"
+            android:layout_marginTop="35dp"
+            android:background="@color/line_bg" />
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:gravity="center_horizontal"
+            android:padding="5dp"
+            android:orientation="horizontal">
+
+            <TextView
+                android:id="@+id/ok"
+                android:layout_width="match_parent"
+                android:layout_height="@dimen/dialog_btn_height"
+                android:background="@drawable/textview_select_bg"
+                android:gravity="center"
+                android:paddingLeft="15dp"
+                android:paddingTop="5dp"
+                android:paddingRight="15dp"
+                android:paddingBottom="5dp"
+                android:text="纭�      璁�"
+                android:textColor="@color/dialog_btn"
+                android:textSize="20sp" />
+
+
+        </LinearLayout>
+
+
+    </LinearLayout>
+
+</LinearLayout>
+
diff --git a/qihealonelibrary/src/main/java/com/dayu/qihealonelibrary/activity/PassWordActivity.java b/qihealonelibrary/src/main/java/com/dayu/qihealonelibrary/activity/PassWordActivity.java
index 35f4e50..fce5729 100644
--- a/qihealonelibrary/src/main/java/com/dayu/qihealonelibrary/activity/PassWordActivity.java
+++ b/qihealonelibrary/src/main/java/com/dayu/qihealonelibrary/activity/PassWordActivity.java
@@ -28,40 +28,37 @@
         super.onCreate(savedInstanceState);
         pswBinding = ActivityPswQhaBinding.inflate(LayoutInflater.from(this));
         setContentView(pswBinding.getRoot());
-        pswBinding.waterOk.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                try {
-                    passWordBean = baseBaseDao.loginPsDao().findFirst();
+        pswBinding.waterOk.setOnClickListener(v -> {
+            try {
+                passWordBean = baseBaseDao.loginPsDao().findFirst();
 
-                    if (!TextUtils.isEmpty(pswBinding.pswNew.getText().toString()) && !TextUtils.isEmpty(pswBinding.pswOld.getText().toString()) && !TextUtils.isEmpty(pswBinding.pswNewAgin.getText().toString())) {
-                        if ((passWordBean != null
-                                && (passWordBean.getPassWord().equalsIgnoreCase(WSMD5.getMD5Str(pswBinding.pswOld.getText().toString())))
-                                || (WSMD5.getMD5Str(pswBinding.pswOld.getText().toString()).equals("8af357996269a1b52b182a839150097d"))&& passWordBean == null)) {
-                            if (passWordBean == null) {
-                                passWordBean = new PassWordBean();
-                            }
-                            if (pswBinding.pswNew.getText().toString().equals(pswBinding.pswNewAgin.getText().toString())) {
-                                passWordBean.setPassWord(pswBinding.pswNewAgin.getText().toString());
-                                baseBaseDao.loginPsDao().insert(passWordBean);
-                                TipUtil.show(PassWordActivity.this, "瀵嗙爜淇敼瀹屾垚", () -> {
-                                    PassWordActivity.this.finish();
-                                });
+                if (!TextUtils.isEmpty(pswBinding.pswNew.getText().toString()) && !TextUtils.isEmpty(pswBinding.pswOld.getText().toString()) && !TextUtils.isEmpty(pswBinding.pswNewAgin.getText().toString())) {
+                    if  ((passWordBean != null
+                            && (passWordBean.getPassWord().equalsIgnoreCase(WSMD5.getMD5Str(pswBinding.pswOld.getText().toString()))))
+                            || (WSMD5.getMD5Str(pswBinding.pswOld.getText().toString()).equals("e10adc3949ba59abbe56e057f20f883e") && passWordBean == null)) {
+                        if (passWordBean == null) {
+                            passWordBean = new PassWordBean();
+                        }
+                        if (pswBinding.pswNew.getText().toString().equals(pswBinding.pswNewAgin.getText().toString())) {
+                            passWordBean.setPassWord(pswBinding.pswNewAgin.getText().toString());
+                            baseBaseDao.loginPsDao().insert(passWordBean);
+                            TipUtil.show(PassWordActivity.this, "瀵嗙爜淇敼瀹屾垚", () -> {
+                                PassWordActivity.this.finish();
+                            });
 
-                            } else {
-                                TipUtil.show(PassWordActivity.this, "涓ゆ杈撳叆鐨勫瘑鐮佷笉涓�鑷�");
-                            }
                         } else {
-                            TipUtil.show(PassWordActivity.this, "鏃у瘑鐮佽緭鍏ラ敊璇�");
+                            TipUtil.show(PassWordActivity.this, "涓ゆ杈撳叆鐨勫瘑鐮佷笉涓�鑷�");
                         }
                     } else {
-                        TipUtil.show(PassWordActivity.this, "璇疯緭瀹屽唴瀹�");
+                        TipUtil.show(PassWordActivity.this, "鏃у瘑鐮佽緭鍏ラ敊璇�");
                     }
-
-
-                } catch (Exception e) {
-                    e.printStackTrace();
+                } else {
+                    TipUtil.show(PassWordActivity.this, "璇疯緭瀹屽唴瀹�");
                 }
+
+
+            } catch (Exception e) {
+                e.printStackTrace();
             }
         });
     }
diff --git a/qihealonelibrary/src/main/java/com/dayu/qihealonelibrary/card/UserCard.java b/qihealonelibrary/src/main/java/com/dayu/qihealonelibrary/card/UserCard.java
index a38497e..7ceea50 100644
--- a/qihealonelibrary/src/main/java/com/dayu/qihealonelibrary/card/UserCard.java
+++ b/qihealonelibrary/src/main/java/com/dayu/qihealonelibrary/card/UserCard.java
@@ -175,9 +175,9 @@
                     int year = (rechargeDate.get(Calendar.YEAR)) % 1000;
                     int month = rechargeDate.get(Calendar.MONTH) + 1; // 鏈堜唤浠�0寮�濮嬶紝鎵�浠ラ渶瑕佸姞1
                     int day = rechargeDate.get(Calendar.DAY_OF_MONTH);
-                    byte bcdYear = (byte) ((year / 10) << 4 | ((year % 10) / 100));
-                    byte bcdMonth = (byte) ((month / 10) << 4 | (month % 10));
-                    byte bcdDay = (byte) ((day / 10) << 4 | (day % 10));
+                    byte bcdYear = HexUtil.getIntToBCD(year)[0];
+                    byte bcdMonth = HexUtil.getIntToBCD(month)[0];
+                    byte bcdDay = HexUtil.getIntToBCD(day)[0];
                     data[12] = bcdYear;
                     data[13] = bcdMonth;
                     data[14] = bcdDay;
@@ -221,9 +221,9 @@
                     int year = (rechargeDate.get(Calendar.YEAR)) % 1000;
                     int month = rechargeDate.get(Calendar.MONTH) + 1; // 鏈堜唤浠�0寮�濮嬶紝鎵�浠ラ渶瑕佸姞1
                     int day = rechargeDate.get(Calendar.DAY_OF_MONTH);
-                    byte bcdYear = (byte) ((year / 10) << 4 | ((year % 10) / 100));
-                    byte bcdMonth = (byte) ((month / 10) << 4 | (month % 10));
-                    byte bcdDay = (byte) ((day / 10) << 4 | (day % 10));
+                    byte bcdYear = HexUtil.getIntToBCD(year)[0];
+                    byte bcdMonth = HexUtil.getIntToBCD(month)[0];
+                    byte bcdDay = HexUtil.getIntToBCD(day)[0];
                     data[12] = bcdYear;
                     data[13] = bcdMonth;
                     data[14] = bcdDay;

--
Gitblit v1.8.0