From dc1ab1a73f979940ed7d631418f44ca309d077c0 Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期四, 22 二月 2024 16:24:56 +0800
Subject: [PATCH] 读卡时检验设备是否注册

---
 app/src/main/java/com/dayu/recharge/activity/NFCWreatActivity.java |  144 +++++++++++++++++-------------------------------
 1 files changed, 51 insertions(+), 93 deletions(-)

diff --git a/app/src/main/java/com/dayu/recharge/activity/NFCWreatActivity.java b/app/src/main/java/com/dayu/recharge/activity/NFCWreatActivity.java
index eef5996..7c5a5f4 100644
--- a/app/src/main/java/com/dayu/recharge/activity/NFCWreatActivity.java
+++ b/app/src/main/java/com/dayu/recharge/activity/NFCWreatActivity.java
@@ -2,14 +2,12 @@
 
 import android.content.Intent;
 import android.os.Bundle;
-import android.os.Handler;
-import android.os.Message;
 import android.text.TextUtils;
+import android.util.Log;
 import android.view.LayoutInflater;
 import android.widget.Toast;
 
 import com.dayu.recharge.MyApplication;
-
 import com.dayu.recharge.R;
 import com.dayu.recharge.card.CleanCard;
 import com.dayu.recharge.card.CleanUserCard;
@@ -31,7 +29,6 @@
 import com.dayu.recharge.socketBean.BalanceSelecteRequestBean;
 import com.dayu.recharge.socketBean.RechargeRequestBean;
 import com.dayu.recharge.tools.BcdUtil;
-import com.dayu.recharge.tools.HexUtil;
 import com.dayu.recharge.tools.NFCWriteHelper;
 import com.dayu.recharge.tools.NfcReadHelper;
 import com.dayu.recharge.tools.WriteCardUtils;
@@ -40,6 +37,7 @@
 import com.dayu.recharge.utils.DateUtil;
 import com.dayu.recharge.utils.DeviceNumberUtils;
 import com.dayu.recharge.utils.MornyUtil;
+import com.dayu.recharge.utils.MyCommon;
 import com.dayu.recharge.utils.SocketUtil;
 import com.dayu.recharge.utils.TipUtil;
 import com.tencent.bugly.crashreport.CrashReport;
@@ -72,7 +70,7 @@
     boolean configPowerFlag = false;
 
     UserCardBean userCardBean;
-
+    UserCard olduserCard;
 
     String morny;
     String userName;
@@ -112,7 +110,6 @@
         try {
             binding = ActivityWriteTextBinding.inflate(LayoutInflater.from(this));
             setContentView(binding.getRoot());
-            initView();
             nfcWreatActivity = this;
             getData();
             baseApp = (MyApplication) getApplication();
@@ -120,31 +117,6 @@
             e.printStackTrace();
             CrashReport.postCatchedException(e);
         }
-    }
-
-    private void initView() {
-        handler = new Handler(new Handler.Callback() {
-            @Override
-            public boolean handleMessage(Message msg) {
-                switch (msg.what) {
-
-                    case HAS_USER://鍒ゆ柇宸插啓鍏ョ敤鎴�
-                        binding.textView.setText("璇ュ崱宸茬粡鍐欏叆鐢ㄦ埛淇℃伅锛岃鏇存崲鍗$墖");
-                        binding.textView.setTextColor(getResources().getColor(R.color.red));
-                        stopAnim();
-                        break;
-                    case NO_USER://娌℃湁鍐欒繃鐢ㄦ埛缁х画淇濆瓨
-                        saveData();
-                        break;
-                    default:
-                        stopAnim();
-                        TipUtil.show(NFCWreatActivity.this, "鍗$墖璇诲彇澶辫触");
-                        break;
-
-                }
-                return false;
-            }
-        });
     }
 
 
@@ -215,37 +187,23 @@
      * 妫�娴嬫槸鍚︽槸鐢ㄦ埛鍗★紝鍋囧鏄敤鎴峰崱鐨勮瘽闇�瑕佹娴嬪崱鐗囨槸鍚﹀凡缁忓紑杩囨埛锛屽亣濡傚凡寮�鎴峰垯鎶ラ敊涓嶈兘鍐嶅啓鍗″亣濡傛槸鐢ㄦ埛鍗¢渶瑕�
      */
     private void checkHasUser() {
-        try {
-            NfcReadHelper.getInstence(intent)
-                    .getData(1, 0, new NfcReadHelper.NFCCallByteback() {
-                        @Override
-                        public void callBack(byte[] data) {
-                            Message message = new Message();
-                            String type = HexUtil.byteToHex(data[0]).toUpperCase();
-                            switch (type) {
-                                case "A1":
-                                case "A8":
-                                case "A2":
-                                    message.what = HAS_USER;
-                                    break;
-                                default:
-                                    message.what = NO_USER;
-                                    break;
-                            }
-                            handler.sendMessage(message);
-                        }
 
-                        @Override
-                        public void error(int code) {
-                            Message message = new Message();
-                            message.what = code;
-                            handler.sendMessage(message);
-                        }
-                    });
-        } catch (Exception e) {
-            e.printStackTrace();
-            CrashReport.postCatchedException(e);
+        String cardType = NfcReadHelper.getInstence(intent, this).getCradType();
+        Log.i("NFCWreatActivity", "cardType=" + cardType);
+        if (cardType.equals(MyCommon.USER_CARD_TYPE_1) ||
+                cardType.equals(MyCommon.USER_CARD_TYPE_2) ||
+                cardType.equals(MyCommon.USER_CARD_TYPE_3)
+        ) {
+            binding.textView.setText("璇ュ崱宸茬粡鍐欏叆鐢ㄦ埛淇℃伅锛岃鏇存崲鍗$墖");
+            binding.textView.setTextColor(getResources().getColor(R.color.red));
+        } else if (cardType.equals("-1")) {
+            TipUtil.show(NFCWreatActivity.this, "璇峰嬁绉诲姩鍗$墖锛岃鍗″け璐ヨ閲嶈瘯锛侊紒");
+        } else {
+            Log.i("NFCWreatActivity", "olduserCard!=null  saveData");
+            saveData();
         }
+
+        stopAnim();
     }
 
 
@@ -258,7 +216,8 @@
                     || configureDeviceRegistrationCrad != null
                     || configurationPowerCard != null) {
                 if (userCard != null && TextUtils.isEmpty(morny)) {
-                    userFlag = WriteCardUtils.setUser(intent, userCard);
+
+                    userFlag = WriteCardUtils.setUser(intent, userCard, this);
                 }
                 if (cleanCard != null) {
                     setClean(intent, cleanCard);
@@ -290,11 +249,9 @@
                             //鐢ㄦ埛鍗�
                             startDetailActivity(userCardBean.getUserName(), "鍚敤");
                         } else if (!TextUtils.isEmpty(morny)) {
-                            NFCWreatActivity.this.finish();
-                            TipUtil.show("鍏呭�兼垚鍔�");
+                            TipUtil.show(NFCWreatActivity.this, "鍏呭�兼垚鍔�", () -> NFCWreatActivity.this.finish());
                         } else {
-                            NFCWreatActivity.this.finish();
-                            TipUtil.show("鍐欏崱鎴愬姛");
+                            TipUtil.show(NFCWreatActivity.this, "鍐欏崱鎴愬姛", () -> NFCWreatActivity.this.finish());
                         }
 
                     } catch (Exception e) {
@@ -302,14 +259,10 @@
                         CrashReport.postCatchedException(e);
                     }
                 } else {
-                    TipUtil.show("鍐欏崱澶辫触");
+                    TipUtil.show(NFCWreatActivity.this, "鍐欏崱澶辫触");
                 }
                 stopAnim();
-            }
-//            else if (!TextUtils.isEmpty(morny)) {
-//
-//            }
-            else if (userCard == null && userCardBean != null) {
+            } else if (userCard == null && userCardBean != null) {
                 //琛ュ崱閫昏緫
                 selectBalance(userCardBean.getInitPeasantCode());
             } else {
@@ -328,6 +281,7 @@
         try {
             this.intent = intent;
             startAnim();
+            Log.i("NFCWreatActivity", "isUser:" + isUser);
             if (isUser) {
                 checkHasUser();
             } else if (isRecharge) {
@@ -428,7 +382,7 @@
 
                             rechargeBean.setSerial(adminData.getSerial());
                             userCard.setRechargeDate(Calendar.getInstance());
-                            rechargeBean.setBalance(MornyUtil.changeF2Y(balance + MornyUtil.changeY2F(morny)) + "");
+                            rechargeBean.setBalance(MornyUtil.changeF2Y(balance));
                             rechargeBean.setInitPeasantCode(initPeasantCode);
                             rechargeBean.setOrderID(orderId);
                             try {
@@ -439,7 +393,7 @@
                             userCard.setRechargeTimes(userCard.getRechargeTimes() + 1);
                         } else if ("01".equalsIgnoreCase(state)) {
                             userCard.setState("01");
-                            userFlag = WriteCardUtils.setUser(intent, userCard);
+                            userFlag = WriteCardUtils.setUser(intent, userCard, NFCWreatActivity.this);
                             NFCWreatActivity.this.finish();
                             TipUtil.show("鍏呭�兼姤鏂囬敊璇�-绂佺敤");
                         } else if ("02".equalsIgnoreCase(state)) {
@@ -475,12 +429,12 @@
 
     //寰�鍗″唴鍐欏厖鍊煎悗鐨勬暟鎹�
     private void rechargeWrratCard() {
-        UserCard userCardold = NfcReadHelper.getInstence(intent).getUserCardData();
+        UserCard userCardold = NfcReadHelper.getInstence(intent, this).getUserCardData();
         if (userCardold != null) {
             //鍒ゆ柇鏄惁鍏呭�肩殑鏄竴涓崱
             if (userCard.getInitPeasantCode().equals(userCardold.getInitPeasantCode())) {
                 userCard.setState("00");
-                userFlag = WriteCardUtils.setUser(intent, userCard);
+                userFlag = WriteCardUtils.setUser(intent, userCard, this);
                 //   鎵撳嵃鐩稿叧
                 if (userFlag) {
                     setPrinterData(rechargeBean);
@@ -497,7 +451,7 @@
     }
 
     private void setmanageCard(Intent intent, final ManageCard manageCard) {
-        manageCardFlag = NFCWriteHelper.getInstence(intent).writeData(manageCard.toZeroByte(), 1, 0);
+        manageCardFlag = NFCWriteHelper.getInstence(intent, this).writeData(manageCard.toZeroByte(), 1, 0);
     }
 
     /**
@@ -507,7 +461,7 @@
      * @param clearOrInitCard
      */
     private void setClean(Intent intent, final CleanCard clearOrInitCard) {
-        cleanFlag = NFCWriteHelper.getInstence(intent).writeData(clearOrInitCard.toByte(), 1, 0);
+        cleanFlag = NFCWriteHelper.getInstence(intent, this).writeData(clearOrInitCard.toByte(), 1, 0);
     }
 
 
@@ -518,7 +472,7 @@
      * @param registeredCard
      */
     private void setRegisteredCard(Intent intent, RegisteredCard registeredCard) {
-        registeredFlag = NFCWriteHelper.getInstence(intent).writeData(registeredCard.toByte(), 1, 0);
+        registeredFlag = NFCWriteHelper.getInstence(intent, this).writeData(registeredCard.toByte(), 1, 0);
     }
 
     /**
@@ -528,7 +482,7 @@
      * @param cleanUserCard
      */
     private void setCleanUserCard(Intent intent, CleanUserCard cleanUserCard) {
-        cleanUserCardFlag = NFCWriteHelper.getInstence(intent).writeData(cleanUserCard.toByte(), 1, 0);
+        cleanUserCardFlag = NFCWriteHelper.getInstence(intent, this).writeData(cleanUserCard.toByte(), 1, 0);
     }
 
     /**
@@ -539,15 +493,15 @@
      */
     private void setDomainCard(Intent intent, DomainCard domainCard) {
         try {
-            domainCrdFlag = NFCWriteHelper.getInstence(intent).writeData(domainCard.getZeroByte(), 1, 0);
+            domainCrdFlag = NFCWriteHelper.getInstence(intent, this).writeData(domainCard.getZeroByte(), 1, 0);
             if (!domainCrdFlag) {
                 return;
             }
-            domainCrdFlag = NFCWriteHelper.getInstence(intent).writeData(domainCard.getOneByte(), 1, 1);
+            domainCrdFlag = NFCWriteHelper.getInstence(intent, this).writeData(domainCard.getOneByte(), 1, 1);
             if (!domainCrdFlag) {
                 return;
             }
-            domainCrdFlag = NFCWriteHelper.getInstence(intent).writeData(domainCard.getTwoByte(), 1, 2);
+            domainCrdFlag = NFCWriteHelper.getInstence(intent, this).writeData(domainCard.getTwoByte(), 1, 2);
         } catch (Exception e) {
             domainCrdFlag = false;
             throw new RuntimeException(e);
@@ -555,17 +509,17 @@
     }
 
     private void setTestCard(Intent intent, TestCard testCard) {
-        testCardFlag = NFCWriteHelper.getInstence(intent).writeData(testCard.toByte(), 1, 0);
+        testCardFlag = NFCWriteHelper.getInstence(intent, this).writeData(testCard.toByte(), 1, 0);
     }
 
 
     private void setConfigDeviceRegiest(Intent intent, ConfigureDeviceRegistrationCrad configureDeviceRegistrationCrad) {
-        configDeviceRegiestFlag = NFCWriteHelper.getInstence(intent).writeData(configureDeviceRegistrationCrad.toByte(), 1, 0);
+        configDeviceRegiestFlag = NFCWriteHelper.getInstence(intent, this).writeData(configureDeviceRegistrationCrad.toByte(), 1, 0);
     }
 
     private void setConfigurationPower(Intent intent, ConfigurationPowerCard configurationPowerCard) {
         try {
-            configPowerFlag = NFCWriteHelper.getInstence(intent).writeData(configurationPowerCard.toByte(), 1, 0);
+            configPowerFlag = NFCWriteHelper.getInstence(intent, this).writeData(configurationPowerCard.toByte(), 1, 0);
         } catch (Exception e) {
             configPowerFlag = false;
             throw new RuntimeException(e);
@@ -610,16 +564,13 @@
                 @Override
                 public void onSocketResponse(SocketData readData) {
                     if (CRC8.isCRC8(readData.getOriginDataBytes())) {
-
                         StringBuffer stateText = null;
-
                         try {
                             stateText = new StringBuffer();
                             String state = BcdUtil.bcdToStr(readData.getBodyBytes()[2]);  //BCD鐮�00鍚敤 01绂佺敤 02闅跺睘淇℃伅涓嶇 03鏃犳鍗′俊鎭� 04鍏跺畠s
                             if (userCard == null) {
                                 userCard = new UserCard();
                                 userCard.setRechargeTimes(0);
-
                                 ElectricPriceBean electricPriceBean = baseDao.electricPriceDao().findFirst();
                                 if (electricPriceBean != null) {
                                     userCard.setElectricityPrice(electricPriceBean.getPrice());
@@ -645,18 +596,21 @@
                                 userCard.setBalance(balance);
                                 userCard.setState("00");
                                 //琛ュ崱閫昏緫
-                                userFlag = WriteCardUtils.setUser(intent, userCard);
+                                userFlag = WriteCardUtils.setUser(intent, userCard, NFCWreatActivity.this);
                                 if (userFlag) {
-                                    NFCWreatActivity.this.finish();
-                                    TipUtil.show(NFCWreatActivity.this, "琛ュ崱鎴愬姛");
+                                    TipUtil.show(NFCWreatActivity.this, "琛ュ崱鎴愬姛", new TipUtil.TipListener() {
+                                        @Override
+                                        public void onCancle() {
+                                            NFCWreatActivity.this.finish();
+                                        }
+                                    });
                                 }
                                 return;
                             } else if ("01".equals(state)) {
                                 stateText.append("绂佺敤");
                                 userCard.setState("01");
                                 userCard.setBalance(balance);
-                                userFlag = WriteCardUtils.setUser(intent, userCard);
-
+                                userFlag = WriteCardUtils.setUser(intent, userCard, NFCWreatActivity.this);
                                 startDetailActivity(name, stateText.toString());
 
                             } else if ("02".equals(state)) {
@@ -692,4 +646,8 @@
 
     }
 
+    protected void onDestroy() {
+        super.onDestroy();
+        nfcWreatActivity = null;
+    }
 }
\ No newline at end of file

--
Gitblit v1.8.0