From 9450bcb197c2de53982368d5c2059b31abed3b87 Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期五, 09 八月 2024 17:40:29 +0800
Subject: [PATCH] 齐河联网版程序除补卡相关逻辑

---
 qiheonlinelibrary/src/main/res/layout/qihe_line_iten_card.xml                                   |  184 +
 qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/CardSearchActivity.java     |  216 ++
 qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/bean/CardInfoResult.java             |  137 +
 baselibrary/src/main/java/com/dayu/baselibrary/utils/MornyUtil.java                             |   38 
 qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/dbBean/RechargeBean.java             |  187 +
 qiheonlinelibrary/src/main/res/layout/activity_red_card_qhl.xml                                 |  173 +
 qiheonlinelibrary/src/main/AndroidManifest.xml                                                  |   12 
 baselibrary/src/main/java/com/dayu/baselibrary/view/TipDialog.java                              |    3 
 baselibrary/src/main/res/layout/confirm_dialog.xml                                              |   16 
 qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/ReadCardAcitivy.java        |  105 
 qiheonlinelibrary/src/main/res/layout/activity_recharge_qhl.xml                                 |  378 ++-
 baselibrary/src/main/res/layout/edt_dialog.xml                                                  |   14 
 qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/bean/UserListResult.java             |  118 +
 qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/dao/RechargeDao.java                 |    8 
 qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/BaseResponse.java                |   17 
 baselibrary/src/main/java/com/dayu/baselibrary/business/BusinessProvider.java                   |   27 
 qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/adapter/CardAdapter.java             |  121 +
 qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/dbBean/UserCardBean.java             |  137 
 qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/Constants.java                   |    2 
 qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/utils/ExcelUtil.java                 |    2 
 qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/bean/CardInfoListResult.java         |  165 +
 qiheonlinelibrary/src/main/res/layout/dialog_chose_type.xml                                     |  105 +
 qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/RSAUtile.java                    |   55 
 qiheonlinelibrary/src/main/res/layout/activity_new_card_qhl.xml                                 |   29 
 baselibrary/src/main/java/com/dayu/baselibrary/view/EdtDialog.java                              |   23 
 qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/UserSearchActivity.java     |  131 +
 qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/card/RegionCard.java                 |   50 
 qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/MyActivity.java             |   30 
 qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/dao/QHOnLineAppDatabase.java         |    3 
 qiheonlinelibrary/src/main/res/layout/activity_user_search_qhl.xml                              |   37 
 app/src/main/res/layout/activity_login.xml                                                      |    4 
 baselibrary/src/main/res/layout/password_dialog.xml                                             |   13 
 qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/bean/AddUserResult.java              |   22 
 qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/progress/NetLoadingDialog.java   |    8 
 baselibrary/src/main/res/drawable/cursor_drawable.xml                                           |    6 
 qiheonlinelibrary/src/main/res/layout/activity_card_search_qhl.xml                              |   37 
 qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/bean/RechargeResult.java             |   71 
 baselibrary/src/main/java/com/dayu/baselibrary/view/ConfirmDialog.java                          |   17 
 qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/card/UserCard.java                   |  201 +
 qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/adapter/UserSearchAdapter.java       |  111 +
 qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/bean/PricePlanResult.java            |  166 +
 baselibrary/src/main/java/com/dayu/baselibrary/BaseApplication.java                             |    2 
 qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/view/ChooseReplacementDialog.java    |   85 
 qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/RechargeDetailActivity.java |    2 
 qiheonlinelibrary/src/main/res/layout/qihe_line_item_user.xml                                   |  139 +
 baselibrary/src/main/java/com/dayu/baselibrary/business/StartLoginNavigotor.java                |   14 
 qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/view/UserSearchDialog.java           |   89 
 qiheonlinelibrary/src/main/res/layout/dialog_replace_price.xml                                  |   78 
 baselibrary/src/main/java/com/dayu/baselibrary/utils/DeviceUtils.java                           |   47 
 qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/adapter/RechargeAdapter.java         |    2 
 qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/bean/OpenCardResult.java             |   31 
 qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/bean/LoginResult.java                |   56 
 app/src/main/java/com/dayu/recharge/activity/LoginActivity.java                                 |   99 
 qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/MyIntercepterApplication.java    |   13 
 qiheonlinelibrary/src/main/res/layout/activity_my_qhl.xml                                       |   20 
 qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/view/ReplacementPriceDialog.java     |  149 +
 qiheonlinelibrary/src/main/res/layout/activity_admin_qhl.xml                                    |   11 
 qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/SysActivity.java            |   16 
 qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/ApiManager.java                  |   37 
 qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/NewCardActivity.java        |  141 +
 qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/ApiService.java                  |    3 
 qiheonlinelibrary/src/main/res/layout/dialog_search_user.xml                                    |   75 
 qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/QHOnLineApplication.java             |  115 +
 qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/dao/QHOnlineBaseDaoSingleton.java    |    2 
 qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/utils/NFCWreatUtils.java             |  141 +
 henanlibrary/src/main/java/com/dayu/henanlibrary/activity/HomeActivity.java                     |   36 
 qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/NFCWreatActivity.java       |  441 ++--
 app/src/main/java/com/dayu/recharge/MyApplication.java                                          |   17 
 /dev/null                                                                                       |   38 
 qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/BaseActivity.java           |    6 
 qiheonlinelibrary/src/main/cpp/qiheonline-native-lib.cpp                                        |    2 
 baselibrary/src/main/java/com/dayu/baselibrary/utils/BaseCommon.java                            |   15 
 qihealonelibrary/src/main/java/com/dayu/qihealonelibrary/activity/NFCWreatActivity.java         |    3 
 qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/RechargeActivity.java       |  249 +
 qiheonlinelibrary/src/main/res/layout/activity_home_qhl.xml                                     |   35 
 qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/HomeActivity.java           |  101 
 qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/tools/BaseNFCHelper.java             |    2 
 qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/bean/ReplaceCardResult.java          |   70 
 78 files changed, 4,493 insertions(+), 1,068 deletions(-)

diff --git a/app/src/main/java/com/dayu/recharge/MyApplication.java b/app/src/main/java/com/dayu/recharge/MyApplication.java
index f145459..61d0747 100644
--- a/app/src/main/java/com/dayu/recharge/MyApplication.java
+++ b/app/src/main/java/com/dayu/recharge/MyApplication.java
@@ -1,9 +1,14 @@
 package com.dayu.recharge;
 
+import android.app.Activity;
 import android.app.Application;
+import android.content.Context;
+import android.content.Intent;
 import android.text.TextUtils;
 
 import com.dayu.baselibrary.BaseApplication;
+import com.dayu.baselibrary.business.BusinessProvider;
+import com.dayu.baselibrary.business.StartLoginNavigotor;
 import com.dayu.baselibrary.dao.BaseDaoSingleton;
 import com.dayu.baselibrary.dbbean.LibraryBean;
 import com.dayu.baselibrary.utils.BaseCommon;
@@ -12,11 +17,12 @@
 import com.dayu.henanlibrary.dbBean.AdminDataBean;
 import com.dayu.qihealonelibrary.QHAloneApplication;
 import com.dayu.qiheonlinelibrary.QHOnLineApplication;
+import com.dayu.recharge.activity.LoginActivity;
 import com.tencent.bugly.crashreport.CrashReport;
 
 import java.io.File;
 
-public class MyApplication extends Application {
+public class MyApplication extends Application implements StartLoginNavigotor {
     public static String TAG = "MyApplication";
 
     //褰撳墠鍔犺浇鐨刲ibrary妯″潡   //0锛氭渤鍗楃増鏈紝1榻愭渤鍗曟満鐗�
@@ -59,7 +65,8 @@
                         QHAloneApplication.getInstance().application = this;
                         break;
                     case BaseCommon.QHOnLineLibrary:
-                        QHOnLineApplication.getInstance().application = this;
+                        QHOnLineApplication.getInstance(this);
+                        BusinessProvider.getInstance(this);
                 }
             }
         } catch (Exception e) {
@@ -77,4 +84,10 @@
     }
 
 
+    @Override
+    public void navigateToLogin(Context context) {
+        Intent intent = new Intent(context, LoginActivity.class);
+        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
+        context.startActivity(intent);
+    }
 }
diff --git a/app/src/main/java/com/dayu/recharge/activity/LoginActivity.java b/app/src/main/java/com/dayu/recharge/activity/LoginActivity.java
index 230959b..7b46a21 100644
--- a/app/src/main/java/com/dayu/recharge/activity/LoginActivity.java
+++ b/app/src/main/java/com/dayu/recharge/activity/LoginActivity.java
@@ -6,7 +6,9 @@
 import android.os.Bundle;
 import android.text.TextUtils;
 import android.util.Log;
+import android.view.KeyEvent;
 import android.view.LayoutInflater;
+import android.view.View;
 import android.widget.Toast;
 
 import androidx.annotation.NonNull;
@@ -22,6 +24,9 @@
 import com.dayu.henanlibrary.dao.HNBaseDaoSingleton;
 
 import com.dayu.qihealonelibrary.activity.HomeActivity;
+import com.dayu.qiheonlinelibrary.QHOnLineApplication;
+import com.dayu.qiheonlinelibrary.dao.QHOnLineAppDatabase;
+import com.dayu.qiheonlinelibrary.dao.QHOnlineBaseDaoSingleton;
 import com.dayu.recharge.MyApplication;
 import com.dayu.recharge.databinding.ActivityLoginBinding;
 import com.hjq.permissions.OnPermissionCallback;
@@ -42,7 +47,7 @@
 
     ActivityLoginBinding binding;
     PassWordBean passWordBean;
-//    com.dayu.qihealonelibrary.dbBean.PassWordBean
+    //    com.dayu.qihealonelibrary.dbBean.PassWordBean
     int clickNumber;
 
     @Override
@@ -68,35 +73,44 @@
         });
         binding.loginBtn.setOnClickListener(v -> {
             String psStr = binding.loginPw.getText().toString();
+            String nameStr = binding.loginName.getText().toString();
             if (TextUtils.isEmpty(psStr)) {
                 TipUtil.show("璇疯緭鍏ュ瘑鐮�");
                 return;
             }
-            if ((passWordBean == null && psStr.equals("123456"))
+            if (MyApplication.myApplication.libraryType == BaseCommon.QHOnLineLibrary && TextUtils.isEmpty(nameStr)) {
+                TipUtil.show("璇疯緭鍏ヨ处鍙�");
+                return;
+            }
+            if (MyApplication.myApplication.libraryType == BaseCommon.QHOnLineLibrary) {
+                QHOnLineApplication.getInstance().getPublicKey(this, nameStr, psStr);
+            } else if ((passWordBean == null && psStr.equals("123456"))
                     || passWordBean != null && passWordBean.getPassWord().equalsIgnoreCase(WSMD5.getMD5Str(psStr))) {
-
-                    startToHomeActivity();
-
+                startToHomeActivity();
             } else {
                 Toast.makeText(LoginActivity.this, "瀵嗙爜閿欒", Toast.LENGTH_SHORT).show();
             }
+
+
         });
         try {
             PackageInfo packageInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
             binding.versionName.setText("褰撳墠鐗堟湰锛歏" + packageInfo.versionName);
-        } catch (PackageManager.NameNotFoundException e) {
+        } catch (
+                PackageManager.NameNotFoundException e) {
             throw new RuntimeException(e);
         }
+
     }
-
-
 
 
     @Override
     protected void onResume() {
         super.onResume();
-        Log.i("LoginActivity","onResume");
-
+        Log.i("LoginActivity", "onResume");
+        if (MyApplication.myApplication.libraryType == BaseCommon.QHOnLineLibrary) {
+            binding.nameLL.setVisibility(View.VISIBLE);
+        }
     }
 
     /**
@@ -108,7 +122,8 @@
             if (type == BaseCommon.HeNanLibrary) {
                 getHNPermission();
             } else if (type == BaseCommon.QHOnLineLibrary) {
-                getHNPermission();
+                getQHOnlinPermission();
+                binding.nameLL.setVisibility(View.VISIBLE);
             }
             MyApplication.myApplication.initApplication();
         });
@@ -120,7 +135,7 @@
             startActivity(new Intent(LoginActivity.this, com.dayu.henanlibrary.activity.HomeActivity.class));
         } else if (MyApplication.myApplication.libraryType == BaseCommon.QHAloneLibrary) {
             startActivity(new Intent(LoginActivity.this, HomeActivity.class));
-        }else if (MyApplication.myApplication.libraryType==BaseCommon.QHOnLineLibrary){
+        } else if (MyApplication.myApplication.libraryType == BaseCommon.QHOnLineLibrary) {
             startActivity(new Intent(LoginActivity.this, com.dayu.qiheonlinelibrary.activity.HomeActivity.class));
         }
         LoginActivity.this.finish();
@@ -220,4 +235,64 @@
     }
 
 
+    private void getQHOnlinPermission() {
+        try {
+            XXPermissions.with(this)
+                    // 鐢宠鍗曚釜鏉冮檺
+//                    .permission(Permission.RECORD_AUDIO)
+                    // 鐢宠澶氫釜鏉冮檺
+                    .permission(Permission.READ_PHONE_STATE,
+                            Permission.READ_EXTERNAL_STORAGE,
+                            Permission.WRITE_EXTERNAL_STORAGE)
+                    // 璁剧疆鏉冮檺璇锋眰鎷︽埅鍣紙灞�閮ㄨ缃級
+                    //.interceptor(new PermissionInterceptor())
+                    // 璁剧疆涓嶈Е鍙戦敊璇娴嬫満鍒讹紙灞�閮ㄨ缃級
+                    //.unchecked()
+                    .request(new OnPermissionCallback() {
+
+                        @Override
+                        public void onGranted(@NonNull List<String> permissions, boolean allGranted) {
+                            if (allGranted) {
+                                if (allGranted) {//鎵�鏈夌敵璇风殑鏉冮檺閮藉凡閫氳繃
+                                    try {
+                                        File file = new File(QHOnlineBaseDaoSingleton.SqlitePath);
+                                        if (!file.exists()) {
+                                            file.mkdirs();
+                                        }
+
+                                    } catch (Exception e) {
+                                        e.printStackTrace();
+                                    }
+                                }
+                            }
+                        }
+
+                        @Override
+                        public void onDenied(@NonNull List<String> permissions, boolean doNotAskAgain) {
+                            if (doNotAskAgain) {
+                                // 濡傛灉鏄姘镐箙鎷掔粷灏辫烦杞埌搴旂敤鏉冮檺绯荤粺璁剧疆椤甸潰
+                            } else {
+//                                toast("鑾峰彇褰曢煶鍜屾棩鍘嗘潈闄愬け璐�");
+                            }
+                        }
+                    });
+        } catch (Throwable e) {
+            e.printStackTrace();
+        }
+    }
+
+    long mExitTime;
+    @Override
+    public boolean onKeyDown(int keyCode, KeyEvent event) {
+        if (keyCode == KeyEvent.KEYCODE_BACK) {
+            if ((System.currentTimeMillis() - mExitTime) > 2000) {
+                Toast.makeText(LoginActivity.this, "鍐嶆寜涓�娆¢��鍑虹▼搴�", Toast.LENGTH_SHORT).show();
+                mExitTime = System.currentTimeMillis();
+            } else {
+                LoginActivity.this.finish();
+            }
+            return true;
+        }
+        return super.onKeyDown(keyCode, event);
+    }
 }
diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml
index 749d485..e0cbb16 100644
--- a/app/src/main/res/layout/activity_login.xml
+++ b/app/src/main/res/layout/activity_login.xml
@@ -43,7 +43,7 @@
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:hint="璇疯緭鍏ヨ处鍙�"
-                android:text="" />
+                android:text="zuoxiao" />
         </LinearLayout>
         <LinearLayout
             android:layout_width="match_parent"
@@ -64,7 +64,7 @@
                 android:layout_height="wrap_content"
                 android:hint="鍒濆瀵嗙爜涓烘暟瀛�1-6"
                 android:inputType="textPassword"
-                android:text="" />
+                android:text="ZX@@123qwA" />
         </LinearLayout>
 
 
diff --git a/baselibrary/src/main/java/com/dayu/baselibrary/BaseApplication.java b/baselibrary/src/main/java/com/dayu/baselibrary/BaseApplication.java
index 93ba6e0..52f74bd 100644
--- a/baselibrary/src/main/java/com/dayu/baselibrary/BaseApplication.java
+++ b/baselibrary/src/main/java/com/dayu/baselibrary/BaseApplication.java
@@ -29,4 +29,6 @@
     }
 
 
+
+
 }
diff --git a/baselibrary/src/main/java/com/dayu/baselibrary/business/BusinessProvider.java b/baselibrary/src/main/java/com/dayu/baselibrary/business/BusinessProvider.java
new file mode 100644
index 0000000..a0f8169
--- /dev/null
+++ b/baselibrary/src/main/java/com/dayu/baselibrary/business/BusinessProvider.java
@@ -0,0 +1,27 @@
+package com.dayu.baselibrary.business;
+
+/**
+ * author: zuo
+ * Date: 2024-08-05
+ * Time: 14:15
+ * 澶囨敞锛�
+ */
+public class BusinessProvider {
+    public static BusinessProvider businessProvider;
+    public StartLoginNavigotor startLoginNavigotor;
+
+    public static BusinessProvider getInstance(StartLoginNavigotor startLoginNavigotor) {
+        if (businessProvider == null) {
+
+            businessProvider = new BusinessProvider();
+            businessProvider.startLoginNavigotor = startLoginNavigotor;
+        }
+        return businessProvider;
+    }
+
+    public static BusinessProvider getBusinessProvider() {
+        return businessProvider;
+    }
+
+
+}
diff --git a/baselibrary/src/main/java/com/dayu/baselibrary/business/StartLoginNavigotor.java b/baselibrary/src/main/java/com/dayu/baselibrary/business/StartLoginNavigotor.java
new file mode 100644
index 0000000..423d9f2
--- /dev/null
+++ b/baselibrary/src/main/java/com/dayu/baselibrary/business/StartLoginNavigotor.java
@@ -0,0 +1,14 @@
+package com.dayu.baselibrary.business;
+
+import android.content.Context;
+
+/**
+ * author: zuo
+ * Date: 2024-08-05
+ * Time: 12:29
+ * 澶囨敞锛�
+ */
+public interface StartLoginNavigotor {
+
+   void navigateToLogin(Context context);
+}
diff --git a/baselibrary/src/main/java/com/dayu/baselibrary/utils/BaseCommon.java b/baselibrary/src/main/java/com/dayu/baselibrary/utils/BaseCommon.java
index 10ec380..4e14906 100644
--- a/baselibrary/src/main/java/com/dayu/baselibrary/utils/BaseCommon.java
+++ b/baselibrary/src/main/java/com/dayu/baselibrary/utils/BaseCommon.java
@@ -15,13 +15,22 @@
     public final static int HeNanLibrary = 0;
     public final static int QHAloneLibrary = 1;
 
-    public final static int QHOnLineLibrary=2;
+    public final static int QHOnLineLibrary = 2;
 
     /**
      * 褰撳墠鍗″瘑鐮侀敊璇紝涓嶆槸鏈叕鍙稿崱
      */
-    public final static String CARD_TYPE_ERROR2= "-2";
+    public final static String CARD_TYPE_ERROR2 = "-2";
 
-    public final static String CARD_TYPE_ERROR1="-1";
+    public final static String CARD_TYPE_ERROR1 = "-1";
+
+    //鎸傚け鍗$墖
+    public final static int LOSS_CARD = 1;
+    //瑙i櫎鎸傚け
+    public final static int REPORT_LOSS_CARD = 2;
+    //鏈叧娉佃ˉ鍗�
+    public final static int REPLACE_HAS_CARD = 3;
+    //宸插叧娉佃ˉ鍗�
+    public final static int REPLACE_NO_CARD = 4;
 
 }
diff --git a/baselibrary/src/main/java/com/dayu/baselibrary/utils/DeviceUtils.java b/baselibrary/src/main/java/com/dayu/baselibrary/utils/DeviceUtils.java
new file mode 100644
index 0000000..9c88f19
--- /dev/null
+++ b/baselibrary/src/main/java/com/dayu/baselibrary/utils/DeviceUtils.java
@@ -0,0 +1,47 @@
+package com.dayu.baselibrary.utils;
+
+import android.annotation.SuppressLint;
+import android.os.Build;
+
+import java.lang.reflect.Method;
+
+/**
+ * author: zuo
+ * Date: 2024-08-02
+ * Time: 17:29
+ * 澶囨敞锛�
+ */
+public class DeviceUtils {
+    @SuppressLint("MissingPermission")
+    public static String getSN() {
+        String serial = null;
+        try {
+            Class<?> c = Class.forName("android.os.SystemProperties");
+            Method get = c.getMethod("get", String.class);
+            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
+                try {
+                    serial = (String) get.invoke(c, "ro.sunmi.serial");
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+                return serial;
+            } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+                serial = Build.getSerial();
+                return serial;
+            } else {
+                //瀹夊崜8浠ヤ笅浣跨敤Build.SERIAL鐩稿悓鏂瑰紡
+                //return Build.SERIAL;
+                try {
+                    serial = (String) get.invoke(c, "ro.serialno");
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+                return serial;
+            }
+        } catch (ClassNotFoundException e) {
+            throw new RuntimeException(e);
+        } catch (NoSuchMethodException e) {
+            throw new RuntimeException(e);
+        }
+    }
+}
diff --git a/baselibrary/src/main/java/com/dayu/baselibrary/utils/MornyUtil.java b/baselibrary/src/main/java/com/dayu/baselibrary/utils/MornyUtil.java
index 102e8b8..e2381cb 100644
--- a/baselibrary/src/main/java/com/dayu/baselibrary/utils/MornyUtil.java
+++ b/baselibrary/src/main/java/com/dayu/baselibrary/utils/MornyUtil.java
@@ -1,6 +1,9 @@
 package com.dayu.baselibrary.utils;
 
+import android.text.TextUtils;
+
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.text.DecimalFormat;
 
 /**
@@ -16,6 +19,9 @@
      * @return
      */
     public static int changeY2F(String amount) {
+        if (TextUtils.isEmpty(amount)){
+            return 0;
+        }
         BigDecimal bigDecimal = new BigDecimal(amount).setScale(2);
         return bigDecimal.multiply(new BigDecimal(100)).intValue();
     }
@@ -43,7 +49,8 @@
 
 
     /**
-     *  绮剧‘闄ゆ硶锛屼繚鐣欎袱浣嶅皬鏁�
+     * 绮剧‘闄ゆ硶锛屼繚鐣欎袱浣嶅皬鏁�
+     *
      * @param dividend
      * @param divisor
      * @return
@@ -55,4 +62,33 @@
         return df.format(result);
     }
 
+
+    /**
+     * 绯绘暟鍜屾按浠风浉涔樿幏寰楃數浠蜂繚鐣欎笁浣嶅皬鏁�
+     * @param num1
+     * @param num2
+     * @return
+     */
+    public static String multiplyPrice(float num1, float num2) {
+        BigDecimal bd1 = BigDecimal.valueOf(num1);
+        BigDecimal bd2 = BigDecimal.valueOf(num2);
+        BigDecimal result = bd1.multiply(bd2);
+        return result.setScale(3, RoundingMode.HALF_UP).toString();
+    }
+
+
+    /**
+     *
+     * @param num1
+     * @param num2
+     * @return
+     */
+    public static String sumPrice(float num1, float num2) {
+        BigDecimal bd1 = BigDecimal.valueOf(num1);
+        BigDecimal bd2 = BigDecimal.valueOf(num2);
+        BigDecimal result = bd1.add(bd2);
+        return result.setScale(2, RoundingMode.HALF_UP).toString();
+    }
+
+
 }
diff --git a/baselibrary/src/main/java/com/dayu/baselibrary/view/ConfirmDialog.java b/baselibrary/src/main/java/com/dayu/baselibrary/view/ConfirmDialog.java
index 2495a6c..15a8f80 100644
--- a/baselibrary/src/main/java/com/dayu/baselibrary/view/ConfirmDialog.java
+++ b/baselibrary/src/main/java/com/dayu/baselibrary/view/ConfirmDialog.java
@@ -26,6 +26,7 @@
     Activity mContext;
     View.OnClickListener mListner;
     String mData;
+    String mTitle;
 
     public ConfirmDialog(@NonNull Activity context) {
         super(context, com.dayu.baselibrary.R.style.ws_pay_showSelfDialog);
@@ -49,10 +50,26 @@
         initView();
     }
 
+    public ConfirmDialog(@NonNull Activity context, String title, String data, View.OnClickListener listner) {
+        super(context, com.dayu.baselibrary.R.style.ws_pay_showSelfDialog);
+        mContext = context;
+        mListner = listner;
+        mData = data;
+        mTitle = title;
+        initView();
+    }
+
+
     private void initView() {
         getWindow().setGravity(Gravity.CENTER);
         setContentView(R.layout.confirm_dialog);
         setCanceledOnTouchOutside(false);
+        TextView title = (TextView) this.findViewById(R.id.title);
+        if (!TextUtils.isEmpty(mTitle)) {
+            title.setVisibility(View.VISIBLE);
+            title.setText(mTitle);
+        }
+
         TextView data = (TextView) this.findViewById(R.id.confirm_data);
         if (!TextUtils.isEmpty(mData)) {
             data.setText(mData);
diff --git a/baselibrary/src/main/java/com/dayu/baselibrary/view/EdtDialog.java b/baselibrary/src/main/java/com/dayu/baselibrary/view/EdtDialog.java
index c4e4bd2..bb9aeee 100644
--- a/baselibrary/src/main/java/com/dayu/baselibrary/view/EdtDialog.java
+++ b/baselibrary/src/main/java/com/dayu/baselibrary/view/EdtDialog.java
@@ -27,6 +27,7 @@
     DialogBack mDialogBack;
 
     String mEdtHint;
+    String mTitle;
 
     public EdtDialog(Context context, Intent intent) {
         super(context, R.style.ws_pay_showSelfDialog);
@@ -56,6 +57,21 @@
     }
 
 
+    /**
+     * @param context
+     * @param edtHint    杈撳叆妗嗛粯璁ゆ樉绀虹殑鍐呭
+     * @param dialogBack
+     */
+    public EdtDialog(Context context, String title, String edtHint, DialogBack dialogBack) {
+        super(context, R.style.ws_pay_showSelfDialog);
+        mContext = context;
+        mDialogBack = dialogBack;
+        mEdtHint = edtHint;
+        mTitle = title;
+        initView();
+    }
+
+
     private void initView() {
         getWindow().setGravity(Gravity.CENTER);
         setContentView(R.layout.edt_dialog);
@@ -65,6 +81,13 @@
         if (!TextUtils.isEmpty(mEdtHint)) {
             editText.setHint(mEdtHint);
         }
+        TextView title = this.findViewById(R.id.title);
+        if (!TextUtils.isEmpty(mTitle)) {
+            title.setVisibility(View.VISIBLE);
+            title.setText(mTitle);
+        }
+
+
         TextView cannel = (TextView) this.findViewById(R.id.pw_cannel);
         textView.setOnClickListener(new View.OnClickListener() {
             @Override
diff --git a/baselibrary/src/main/java/com/dayu/baselibrary/view/TipDialog.java b/baselibrary/src/main/java/com/dayu/baselibrary/view/TipDialog.java
index 770ceae..4d337b5 100644
--- a/baselibrary/src/main/java/com/dayu/baselibrary/view/TipDialog.java
+++ b/baselibrary/src/main/java/com/dayu/baselibrary/view/TipDialog.java
@@ -48,11 +48,13 @@
         mDialogBack = dialogBack;
         initView();
     }
+
     @Override
     public void onBackPressed() {
         // 鎷︽埅杩斿洖閿簨浠讹紝涓嶆墽琛岄粯璁ょ殑鎿嶄綔
         // 濡傛灉鎯宠瀵硅瘽妗嗘秷澶憋紝鍙互鍦ㄦ澶勮皟鐢� super.onBackPressed();
     }
+
     private void initView() {
         getWindow().setGravity(Gravity.CENTER);
         setContentView(R.layout.text_dialog);
@@ -75,7 +77,6 @@
 
     @Override
     public void show() {
-
         super.show();
         /**
          * 璁剧疆瀹藉害鍏ㄥ睆锛岃璁剧疆鍦╯how鐨勫悗闈�
diff --git a/baselibrary/src/main/res/drawable/cursor_drawable.xml b/baselibrary/src/main/res/drawable/cursor_drawable.xml
new file mode 100644
index 0000000..9e922a7
--- /dev/null
+++ b/baselibrary/src/main/res/drawable/cursor_drawable.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">
+    <size android:width="2dp" />
+    <solid android:color="#000000" />
+</shape>
\ No newline at end of file
diff --git a/baselibrary/src/main/res/layout/confirm_dialog.xml b/baselibrary/src/main/res/layout/confirm_dialog.xml
index 58ae784..109888b 100644
--- a/baselibrary/src/main/res/layout/confirm_dialog.xml
+++ b/baselibrary/src/main/res/layout/confirm_dialog.xml
@@ -15,6 +15,22 @@
         android:orientation="vertical">
 
         <TextView
+            android:id="@+id/title"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="20dp"
+            android:layout_marginTop="20dp"
+            android:layout_marginRight="20dp"
+            android:layout_marginBottom="5dp"
+            android:gravity="center"
+            android:text=""
+            android:textColor="@color/dialog_btn"
+            android:textSize="25sp"
+            android:textStyle="bold"
+            android:visibility="gone" />
+
+
+        <TextView
             android:id="@+id/confirm_data"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
diff --git a/baselibrary/src/main/res/layout/edt_dialog.xml b/baselibrary/src/main/res/layout/edt_dialog.xml
index 163c32a..7f826c2 100644
--- a/baselibrary/src/main/res/layout/edt_dialog.xml
+++ b/baselibrary/src/main/res/layout/edt_dialog.xml
@@ -13,6 +13,20 @@
         android:background="@drawable/base_bg_dialog_top_stroke"
         android:gravity="center"
         android:orientation="vertical">
+        <TextView
+            android:id="@+id/title"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="20dp"
+            android:layout_marginTop="20dp"
+            android:layout_marginRight="20dp"
+            android:layout_marginBottom="5dp"
+            android:gravity="center"
+            android:text="琛ュ崱"
+            android:textColor="@color/dialog_btn"
+            android:textSize="25sp"
+            android:textStyle="bold"
+            android:visibility="gone" />
 
 
         <EditText
diff --git a/baselibrary/src/main/res/layout/password_dialog.xml b/baselibrary/src/main/res/layout/password_dialog.xml
index c58bef0..7b13e17 100644
--- a/baselibrary/src/main/res/layout/password_dialog.xml
+++ b/baselibrary/src/main/res/layout/password_dialog.xml
@@ -14,14 +14,25 @@
         android:background="@drawable/base_bg_dialog_top_stroke"
         android:gravity="center"
         android:orientation="vertical">
+        <TextView
 
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="20dp"
+            android:layout_marginTop="20dp"
+            android:layout_marginRight="20dp"
+            android:gravity="center"
+            android:text="绠$悊瀵嗙爜"
+            android:textStyle="bold"
+            android:textColor="@color/dialog_btn"
+            android:textSize="25sp" />
 
         <EditText
             android:id="@+id/pw_et"
             android:layout_width="match_parent"
             android:layout_height="50dp"
             android:layout_marginLeft="20dp"
-            android:layout_marginTop="20dp"
+            android:layout_marginTop="30dp"
             android:layout_marginRight="20dp"
             android:background="@drawable/editbg"
             android:hint="璇疯緭鍏ョ鐞嗗瘑鐮�"
diff --git a/henanlibrary/src/main/java/com/dayu/henanlibrary/activity/HomeActivity.java b/henanlibrary/src/main/java/com/dayu/henanlibrary/activity/HomeActivity.java
index d079dc5..fe854ed 100644
--- a/henanlibrary/src/main/java/com/dayu/henanlibrary/activity/HomeActivity.java
+++ b/henanlibrary/src/main/java/com/dayu/henanlibrary/activity/HomeActivity.java
@@ -9,6 +9,7 @@
 import android.view.View;
 import android.widget.Toast;
 
+import com.dayu.baselibrary.utils.DeviceUtils;
 import com.dayu.baselibrary.utils.TipUtil;
 import com.dayu.baselibrary.view.PassWordDialog;
 import com.dayu.henanlibrary.HeNanApplication;
@@ -61,7 +62,7 @@
             // 鐢熸垚 1 鍒� 12 涔嬮棿鐨勯殢鏈烘暟瀛�
             int randomNumber = random.nextInt(12) + 1;
             AdminDataBean adminDataBean = new AdminDataBean();
-            adminDataBean.setSerial(randomNumber + generateUniqueNumber(getSN()));
+            adminDataBean.setSerial(randomNumber + generateUniqueNumber(DeviceUtils.getSN()));
             baseDao.adminDao().insert(adminDataBean);
         }
 
@@ -146,36 +147,5 @@
         }
     }
 
-    @SuppressLint("MissingPermission")
-    public static String getSN() {
-        String serial = null;
-        try {
-            Class<?> c = Class.forName("android.os.SystemProperties");
-            Method get = c.getMethod("get", String.class);
-            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
-                try {
-                    serial = (String) get.invoke(c, "ro.sunmi.serial");
-                } catch (Exception e) {
-                    e.printStackTrace();
-                }
-                return serial;
-            } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
-                serial = Build.getSerial();
-                return serial;
-            } else {
-                //瀹夊崜8浠ヤ笅浣跨敤Build.SERIAL鐩稿悓鏂瑰紡
-                //return Build.SERIAL;
-                try {
-                    serial = (String) get.invoke(c, "ro.serialno");
-                } catch (Exception e) {
-                    e.printStackTrace();
-                }
-                return serial;
-            }
-        } catch (ClassNotFoundException e) {
-            throw new RuntimeException(e);
-        } catch (NoSuchMethodException e) {
-            throw new RuntimeException(e);
-        }
-    }
+
 }
diff --git a/qihealonelibrary/src/main/java/com/dayu/qihealonelibrary/activity/NFCWreatActivity.java b/qihealonelibrary/src/main/java/com/dayu/qihealonelibrary/activity/NFCWreatActivity.java
index b72f7a6..52e0d04 100644
--- a/qihealonelibrary/src/main/java/com/dayu/qihealonelibrary/activity/NFCWreatActivity.java
+++ b/qihealonelibrary/src/main/java/com/dayu/qihealonelibrary/activity/NFCWreatActivity.java
@@ -136,7 +136,6 @@
             }
             if (this.getIntent().hasExtra("electricPriceCard")) {
                 electricPriceCard = (ElectricPriceCard) this.getIntent().getSerializableExtra("electricPriceCard");
-
                 binding.cardData.setText("鍒朵綔鐢ㄦ埛鐢甸噺鍗曚环鍗n褰撳墠鍗曚环锛�" + electricPriceCard.getElectricPrice().toString() + " 鍏�");
             }
             if (this.getIntent().hasExtra("passWordCard")) {
@@ -373,8 +372,6 @@
                 data.append("鍗�  鍙凤細" + rechargeBean.getCardNumber() + "\n");
                 data.append("鍏呭�奸噾棰濓細" + rechargeBean.getMorny() + " 鍏�" + "\n");
                 data.append("鍗″唴浣欓锛�" + rechargeBean.getBalance() + " 鍏�" + "\n");
-//                data.append("鍏呭�兼按閲忥細" + rechargeBean.getRechargeWater() + " 鍚�" + "\n");
-//                data.append("鍓╀綑姘撮噺锛�" + rechargeBean.getSurplusWater() + " 鍚�" + "\n");
                 data.append("鏃�  鏈燂細" + DateUtil.dateToStamp(rechargeBean.getDate(), DateUtil.type2) + "\n\n");
                 data.append("*****************************");
             }
diff --git a/qiheonlinelibrary/src/main/AndroidManifest.xml b/qiheonlinelibrary/src/main/AndroidManifest.xml
index 6e0f9f4..1cf9208 100644
--- a/qiheonlinelibrary/src/main/AndroidManifest.xml
+++ b/qiheonlinelibrary/src/main/AndroidManifest.xml
@@ -1,13 +1,13 @@
 <?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"  package="com.dayu.qiheonlinelibrary">
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.dayu.qiheonlinelibrary">
     <!--鍏佽璁块棶缃戠粶锛屽繀閫夋潈闄�-->
     <uses-permission android:name="android.permission.INTERNET" />
     <application
         android:allowBackup="true"
         android:label="@string/app_name"
         android:roundIcon="@mipmap/ic_launcher_round"
-        android:supportsRtl="true"
-     >
+        android:supportsRtl="true">
         <activity
             android:name="com.dayu.qiheonlinelibrary.activity.AdminSetupActivity"
             android:exported="true">
@@ -87,6 +87,12 @@
                 <data android:mimeType="text/plain" />
             </intent-filter>
         </activity>
+        <activity
+            android:name=".activity.UserSearchActivity"
+            android:launchMode="singleTop" />
+        <activity
+            android:name=".activity.CardSearchActivity"
+            android:launchMode="singleTop" />
     </application>
 
 </manifest>
\ No newline at end of file
diff --git a/qiheonlinelibrary/src/main/cpp/qiheonline-native-lib.cpp b/qiheonlinelibrary/src/main/cpp/qiheonline-native-lib.cpp
index 352e938..2966de0 100644
--- a/qiheonlinelibrary/src/main/cpp/qiheonline-native-lib.cpp
+++ b/qiheonlinelibrary/src/main/cpp/qiheonline-native-lib.cpp
@@ -41,7 +41,7 @@
 
 extern "C"
 JNIEXPORT jstring
-Java_com_dayu_qihealonelibrary_tools_BaseNFCHelper_getSafeKey(JNIEnv *env, jobject instance,jobject contextObject) {
+Java_com_dayu_qiheonlinelibrary_tools_BaseNFCHelper_getSafeKey(JNIEnv *env, jobject instance,jobject contextObject) {
     jmethodID getPackageManagerId = (env)->GetMethodID(contextClass, "getPackageManager","()Landroid/content/pm/PackageManager;");
     jmethodID getPackageNameId = (env)->GetMethodID(contextClass, "getPackageName","()Ljava/lang/String;");
     jmethodID signToStringId = (env)->GetMethodID(signatureClass, "toCharsString","()Ljava/lang/String;");
diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/QHOnLineApplication.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/QHOnLineApplication.java
index ed69735..201e430 100644
--- a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/QHOnLineApplication.java
+++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/QHOnLineApplication.java
@@ -1,10 +1,24 @@
 package com.dayu.qiheonlinelibrary;
 
+import android.app.Activity;
 import android.app.Application;
+import android.content.Context;
+import android.content.Intent;
 
+import com.dayu.baselibrary.utils.ToastUtil;
+import com.dayu.qiheonlinelibrary.bean.LoginResult;
+import com.dayu.qiheonlinelibrary.bean.PricePlanResult;
 import com.dayu.qiheonlinelibrary.net.ApiManager;
 import com.dayu.qiheonlinelibrary.net.BaseResponse;
+import com.dayu.qiheonlinelibrary.net.RSAUtile;
 import com.dayu.qiheonlinelibrary.net.subscribers.SubscriberListener;
+
+import java.security.AllPermission;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 /**
  * author: zuo
@@ -16,6 +30,25 @@
     public static QHOnLineApplication qhAloneApplication;
     public Application application;
 
+    public String tokenStr;
+    public String adcd;//鐢ㄦ埛鍦板潃鐮�
+    public String addressName;//鐢ㄦ埛鍦板潃鍚嶇О
+
+    public String arerNumber;//鍖哄煙鍙�
+
+    public String planId;//浠锋牸ID
+
+    public String electriclePriceStr;//鐢典环
+
+    public static QHOnLineApplication getInstance(Application context) {
+        if (qhAloneApplication == null) {
+            qhAloneApplication = new QHOnLineApplication();
+        }
+        qhAloneApplication.application = context;
+        ApiManager.init();
+        return qhAloneApplication;
+    }
+
     public static QHOnLineApplication getInstance() {
         if (qhAloneApplication == null) {
             qhAloneApplication = new QHOnLineApplication();
@@ -24,14 +57,90 @@
     }
 
 
-    private void getPublicKey(){
-        ApiManager.getInstance().requestPost(application, "/login/getPubKey", String.class, null, new SubscriberListener<BaseResponse<String>>() {
+    public void getPublicKey(Context context, String name, String pw) {
+        Map<String, Object> data = new HashMap<>();
+        data.put("loginType", "account");
+
+        ApiManager.getInstance().requestPostLoading(context, "api/login/getPubKey", String.class, null, new SubscriberListener<BaseResponse<String>>() {
             @Override
             public void onNext(BaseResponse<String> t) {
-
+                if (t.isSuccess()) {
+                    getToken(context, name, pw, t.getData());
+                }
             }
         });
     }
 
 
+    public void getToken(Context context, String name, String pw, String pubKey) {
+        Map<String, Object> data = new HashMap<>();
+        data.put("loginType", "account");
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String dateString = sdf.format(new Date());
+        data.put("password", RSAUtile.encryptByPublicKey(pw + "@TIME@" + dateString, pubKey));
+        data.put("username", name);
+        ApiManager.getInstance().requestPostLoading(application, "api/login/login/getToken", String.class, data, new SubscriberListener<BaseResponse<String>>() {
+            @Override
+            public void onNext(BaseResponse<String> t) {
+                if (t.isSuccess()) {
+                    tokenStr = t.getData();
+                    login(context, name, pw, pubKey);
+                } else {
+                    ToastUtil.show(t.getMsg());
+                }
+            }
+        });
+    }
+
+
+    public void login(Context context, String name, String pw, String pubKey) {
+        Map<String, Object> data = new HashMap<>();
+        data.put("loginType", "account");
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String dateString = sdf.format(new Date());
+        data.put("password", RSAUtile.encryptByPublicKey(pw + "@TIME@" + dateString, pubKey));
+        data.put("username", name);
+        ApiManager.getInstance().requestPostLoading(application, "api/login/login", LoginResult.class, data, new SubscriberListener<BaseResponse<LoginResult>>() {
+            @Override
+            public void onNext(BaseResponse<LoginResult> t) {
+                if (t.isSuccess()) {
+                    if (t.getData() != null && t.getData().getOtherData() != null) {
+                        LoginResult.OtherData otherData = t.getData().getOtherData();
+                        String tenantAdnm = otherData.getTenantAdnm();
+                        List<String> adnmList = otherData.getAdnmList();
+                        if (tenantAdnm != null && adnmList != null && !adnmList.isEmpty()) {
+                            addressName = tenantAdnm + adnmList.get(0);
+                        }
+                        List<String> adcdList = otherData.getAdnmList();
+                        if (adcdList != null && !adcdList.isEmpty()) {
+                            adcd = t.getData().getOtherData().getAdcdList().get(0);
+                            arerNumber = t.getData().getOtherData().getAdcdList().get(0).substring(4);
+                        }
+                    }
+                    context.startActivity(new Intent(context, com.dayu.qiheonlinelibrary.activity.HomeActivity.class));
+                    ((Activity) context).finish();
+                } else {
+                    ToastUtil.show(t.getMsg());
+                }
+            }
+        });
+    }
+
+    /**
+     * 鑾峰彇浠锋牸淇℃伅
+     */
+    public void getPricePlanVo(Context context) {
+        Map<String, Object> data = new HashMap<>();
+        data.put("priceMethod", 2);
+
+        ApiManager.getInstance().requestPost(context, "api/sjgg/water/waterPricePlan/pageWaterPricePlanVo", PricePlanResult.class, data, new SubscriberListener<BaseResponse<PricePlanResult>>() {
+            @Override
+            public void onNext(BaseResponse<PricePlanResult> t) {
+                if (t.isSuccess()) {
+                    planId = t.getData().getRecords().get(0).getPlanId();
+                    electriclePriceStr = t.getData().getRecords().get(0).getElectricityPrice();
+                }
+            }
+        });
+    }
 }
diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/BaseActivity.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/BaseActivity.java
index d9bca5a..7b1a2d4 100644
--- a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/BaseActivity.java
+++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/BaseActivity.java
@@ -9,7 +9,7 @@
 
 import com.dayu.baselibrary.view.TitleBar;
 import com.dayu.qiheonlinelibrary.R;
-import com.dayu.qiheonlinelibrary.dao.BaseDaoSingleton;
+import com.dayu.qiheonlinelibrary.dao.QHOnlineBaseDaoSingleton;
 import com.dayu.qiheonlinelibrary.dao.QHOnLineAppDatabase;
 
 
@@ -30,8 +30,8 @@
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        baseDao = BaseDaoSingleton.getInstance(this);
-        asynchBaseDao = BaseDaoSingleton.getAsynchInstance(this);
+        baseDao = QHOnlineBaseDaoSingleton.getInstance(this);
+        asynchBaseDao = QHOnlineBaseDaoSingleton.getAsynchInstance(this);
         Log.i(TAG, SIGN);
         if (!isMyApp()) {
             Log.i(TAG, "isMyApp");
diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/CardSearchActivity.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/CardSearchActivity.java
new file mode 100644
index 0000000..93e20e2
--- /dev/null
+++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/CardSearchActivity.java
@@ -0,0 +1,216 @@
+package com.dayu.qiheonlinelibrary.activity;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+
+import androidx.recyclerview.widget.LinearLayoutManager;
+
+import com.dayu.baselibrary.activity.BaseActivity;
+import com.dayu.baselibrary.utils.BaseCommon;
+import com.dayu.baselibrary.utils.DeviceUtils;
+import com.dayu.baselibrary.utils.TipUtil;
+import com.dayu.baselibrary.utils.ToastUtil;
+import com.dayu.baselibrary.view.ConfirmDialog;
+import com.dayu.qiheonlinelibrary.adapter.CardAdapter;
+import com.dayu.qiheonlinelibrary.bean.CardInfoListResult;
+import com.dayu.qiheonlinelibrary.bean.UserListResult;
+import com.dayu.qiheonlinelibrary.databinding.ActivityCardSearchQhlBinding;
+import com.dayu.qiheonlinelibrary.net.ApiManager;
+import com.dayu.qiheonlinelibrary.net.BaseResponse;
+import com.dayu.qiheonlinelibrary.net.subscribers.SubscriberListener;
+import com.scwang.smart.refresh.footer.ClassicsFooter;
+import com.scwang.smart.refresh.header.ClassicsHeader;
+import com.scwang.smart.refresh.layout.api.RefreshLayout;
+import com.scwang.smart.refresh.layout.listener.OnLoadMoreListener;
+import com.scwang.smart.refresh.layout.listener.OnRefreshListener;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * author: zuo
+ * Date: 2024-08-08
+ * Time: 13:37
+ * 澶囨敞锛氶�夋嫨鐢ㄦ埛鐨勫崱鐗�
+ */
+public class CardSearchActivity extends BaseActivity {
+    ActivityCardSearchQhlBinding binding;
+    RefreshLayout myRefreshLayout;
+    CardAdapter adapter;
+
+    int page = 1;
+    int size = 10;
+
+    String pearsontId;
+    List<CardInfoListResult.Records> records = new ArrayList<>();
+    int type;
+    ConfirmDialog confirmDialog;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        binding = ActivityCardSearchQhlBinding.inflate(LayoutInflater.from(this));
+        setContentView(binding.getRoot());
+        pearsontId = this.getIntent().getStringExtra("pearsontId");
+        type = this.getIntent().getIntExtra("type", 0);
+        initView();
+        selectUser(true);
+    }
+
+
+    private void initView() {
+        myRefreshLayout = (RefreshLayout) binding.refreshLayout;
+        myRefreshLayout.setRefreshFooter(new ClassicsFooter(this));
+        myRefreshLayout.setRefreshHeader(new ClassicsHeader(this));
+        myRefreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
+            @Override
+            public void onLoadMore(RefreshLayout refreshlayout) {
+                page = page + 1;
+                selectUser(false);
+            }
+        });
+        adapter = new CardAdapter(this, records, new CardAdapter.OnItemClickListener() {
+            @Override
+            public void onItemClick(int position) {
+                String title;
+                if (type == BaseCommon.LOSS_CARD) {
+                    title = "鎸傚け鍗$墖";
+                } else if (type == BaseCommon.REPORT_LOSS_CARD) {
+                    title = "瑙i櫎鎸傚け鍗$墖";
+                } else {
+                    title = "琛ュ崱";
+                }
+                String data = "鍗″彿锛�" + records.get(position).getIccardNum();
+                confirmDialog = new ConfirmDialog(CardSearchActivity.this, title, data, v -> {
+
+                    String iccardInfoId = records.get(position).getIccardInfoId();
+                    if (type == BaseCommon.LOSS_CARD) {
+                        lossCard(iccardInfoId);
+                    } else if (type == BaseCommon.REPORT_LOSS_CARD) {
+                        reportLossCard(iccardInfoId);
+                    } else if (type == BaseCommon.REPLACE_HAS_CARD) {
+
+                    } else if (type == BaseCommon.REPLACE_NO_CARD) {
+                        //琛ュ崱鍓嶉渶瑕佸厛鎸傚け
+                        if (records.get(position).getIccardStatus() == 0) {
+                            lossCard(iccardInfoId);
+                        } else if (records.get(position).getIccardStatus() == 2) {
+                            startNFCActivit(iccardInfoId);
+                        } else {
+                            TipUtil.show("褰撳墠鍗$姸鎬佷笉鑳藉啀琛ュ崱");
+                        }
+
+
+                    }
+                    confirmDialog.dismiss();
+                });
+                confirmDialog.show();
+
+
+            }
+        });
+        LinearLayoutManager layoutManager = new LinearLayoutManager(this);
+        binding.recyclerView.setLayoutManager(layoutManager);
+        binding.recyclerView.setAdapter(adapter);
+
+        myRefreshLayout.setOnRefreshListener(new OnRefreshListener() {
+            @Override
+            public void onRefresh(RefreshLayout refreshlayout) {
+                selectUser(true);
+            }
+        });
+    }
+
+
+    /**
+     * 鏌ヨ鍗�
+     */
+    private void selectUser(boolean isRefresh) {
+        if (isRefresh) {
+            page = 1;
+            records.clear();
+        }
+        Map<String, Object> data = new HashMap<>();
+        data.put("peasantId", pearsontId);
+        data.put("current", page);
+        data.put("pageSize", size);
+        ApiManager.getInstance().requestPostLoading(this, "api/sjgg/iccard/info/getIccardPeasantVoList", CardInfoListResult.class, data, new SubscriberListener<BaseResponse<CardInfoListResult>>() {
+            @Override
+            public void onNext(BaseResponse<CardInfoListResult> t) {
+                if (t.isSuccess()) {
+                    if (t.getData().getTotal() == records.size()) {
+                        myRefreshLayout.finishLoadMoreWithNoMoreData();
+                    } else {
+                        records.addAll(t.getData().getRecords());
+                    }
+                    adapter.notifyDataSetChanged();
+                    myRefreshLayout.finishLoadMore();
+                    if (isRefresh) {
+                        myRefreshLayout.finishRefresh();
+                    }
+                }
+            }
+        });
+    }
+
+    /**
+     * 鎸傚け鍗�
+     */
+    private void lossCard(String iccardInfoId) {
+
+        Map<String, Object> data = new HashMap<>();
+        data.put("iccardInfoId", iccardInfoId);
+        data.put("equipCode", DeviceUtils.getSN());
+        ApiManager.getInstance().requestPostLoading(this, "api/sjgg/iccard/recharge/reportLossCard", UserListResult.class, data, new SubscriberListener<BaseResponse<UserListResult>>() {
+            @Override
+            public void onNext(BaseResponse<UserListResult> t) {
+                if (t.isSuccess()) {
+                    if (type == BaseCommon.LOSS_CARD) {
+                        TipUtil.show(CardSearchActivity.this, "鎸傚け鎴愬姛", () -> {
+                            CardSearchActivity.this.finish();
+                        });
+                    } else if (type == BaseCommon.REPLACE_NO_CARD) {
+                        startNFCActivit(iccardInfoId);
+                    }
+
+                } else {
+                    ToastUtil.show(t.getMsg());
+                }
+            }
+        });
+    }
+
+    /**
+     * 瑙i櫎鎸傚け鍗�
+     */
+    private void reportLossCard(String iccardInfoId) {
+
+        Map<String, Object> data = new HashMap<>();
+        data.put("iccardInfoId", iccardInfoId);
+        data.put("equipCode", DeviceUtils.getSN());
+        ApiManager.getInstance().requestPostLoading(this, "api/sjgg/iccard/recharge/releaseLossCard", UserListResult.class, data, new SubscriberListener<BaseResponse<UserListResult>>() {
+            @Override
+            public void onNext(BaseResponse<UserListResult> t) {
+                if (t.isSuccess()) {
+                    TipUtil.show(CardSearchActivity.this, "瑙i櫎鎸傚け鎴愬姛", () -> {
+                        CardSearchActivity.this.finish();
+                    });
+                } else {
+                    ToastUtil.show(t.getMsg());
+                }
+            }
+        });
+    }
+
+    private void startNFCActivit(String iccardInfoId) {
+        //鐩存帴琛ュ崱鐨勬柟寮�
+        Intent intent = new Intent(CardSearchActivity.this, NFCWreatActivity.class);
+        intent.putExtra("iccardInfoId", iccardInfoId);
+        intent.putExtra("replaceType", type);
+        startActivity(intent);
+        CardSearchActivity.this.finish();
+    }
+}
diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/HomeActivity.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/HomeActivity.java
index 9cef0ff..7697c0a 100644
--- a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/HomeActivity.java
+++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/HomeActivity.java
@@ -2,15 +2,26 @@
 
 import android.content.Intent;
 import android.os.Bundle;
+import android.text.TextUtils;
 import android.view.KeyEvent;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.widget.Toast;
 
+import com.dayu.baselibrary.utils.BaseCommon;
 import com.dayu.baselibrary.utils.TipUtil;
 import com.dayu.baselibrary.view.PassWordDialog;
+import com.dayu.qiheonlinelibrary.QHOnLineApplication;
+import com.dayu.qiheonlinelibrary.bean.PricePlanResult;
 import com.dayu.qiheonlinelibrary.databinding.ActivityHomeQhlBinding;
 import com.dayu.qiheonlinelibrary.dbBean.AdminDataBean;
+import com.dayu.qiheonlinelibrary.net.ApiManager;
+import com.dayu.qiheonlinelibrary.net.BaseResponse;
+import com.dayu.qiheonlinelibrary.net.subscribers.SubscriberListener;
+import com.dayu.qiheonlinelibrary.view.ChooseReplacementDialog;
+
+import java.util.HashMap;
+import java.util.Map;
 
 
 /**
@@ -23,6 +34,7 @@
 
     public static HomeActivity homeActivity;
     ActivityHomeQhlBinding homeBinding;
+    ChooseReplacementDialog replacementDialog;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -34,64 +46,47 @@
 
     }
 
+    @Override
+    protected void onResume() {
+        super.onResume();
+        if (TextUtils.isEmpty(QHOnLineApplication.getInstance().planId)) {
+            QHOnLineApplication.getInstance().getPricePlanVo(this);
+        }
+    }
 
     private void initView() {
-        homeBinding.homeNewCard.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                AdminDataBean adminData = baseDao.adminDao().findFirst();
-                if (adminData != null) {
-                    startActivity(new Intent(HomeActivity.this, NewCardActivity.class));
-                } else {
-                    TipUtil.show(HomeActivity.this, "璇峰厛鍦ㄤ釜浜轰腑蹇冨唴璁剧疆鍖哄煙鍙�");
-                }
-
-            }
-        });
-        homeBinding.homeRecharge.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                AdminDataBean adminData = baseDao.adminDao().findFirst();
-                if (adminData != null) {
-//                    if (adminData.getWaterPrice() != 0) {
-                        startActivity(new Intent(HomeActivity.this, RechargeActivity.class));
-//                    } else {
-//                        TipUtil.show(HomeActivity.this, "璇峰厛鍦ㄤ釜浜轰腑蹇冨唴璁剧疆姘翠环");
-//                    }
-                } else {
-                    TipUtil.show("璇峰厛鍦ㄤ釜浜轰腑蹇冨唴璁剧疆鍖哄煙鍙�");
-                }
-
-            }
-        });
-        homeBinding.homeRedCard.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                startActivity(new Intent(HomeActivity.this, ReadCardAcitivy.class));
-            }
-        });
+        homeBinding.homeNewCard.setOnClickListener(v -> startActivity(new Intent(HomeActivity.this, NewCardActivity.class)));
+        homeBinding.homeRecharge.setOnClickListener(v -> startActivity(new Intent(HomeActivity.this, RechargeActivity.class)));
+        homeBinding.homeRedCard.setOnClickListener(v -> startActivity(new Intent(HomeActivity.this, ReadCardAcitivy.class)));
         //绠$悊绯荤粺鐣岄潰
-        homeBinding.homeAdmin.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                PassWordDialog passWordDialog = new PassWordDialog(HomeActivity.this, new Intent(HomeActivity.this, SysActivity.class));
-                passWordDialog.show();
-            }
+        homeBinding.homeAdmin.setOnClickListener(v -> {
+            PassWordDialog passWordDialog = new PassWordDialog(HomeActivity.this, new Intent(HomeActivity.this, SysActivity.class));
+            passWordDialog.show();
         });
         //鍙傛暟璁剧疆
-        homeBinding.homeParameter.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                PassWordDialog passWordDialog = new PassWordDialog(HomeActivity.this, new Intent(HomeActivity.this, ParameterActivity.class));
-                passWordDialog.show();
-            }
+        homeBinding.homeParameter.setOnClickListener(v -> {
+            PassWordDialog passWordDialog = new PassWordDialog(HomeActivity.this, new Intent(HomeActivity.this, ParameterActivity.class));
+            passWordDialog.show();
         });
-        homeBinding.homeMy.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                startActivity(new Intent(HomeActivity.this, MyActivity.class));
-
-            }
+        homeBinding.homeMy.setOnClickListener(v -> startActivity(new Intent(HomeActivity.this, MyActivity.class)));
+        homeBinding.homeLoss.setOnClickListener(v -> {
+            Intent intent = new Intent(HomeActivity.this, UserSearchActivity.class);
+            intent.putExtra("type", BaseCommon.LOSS_CARD);
+            startActivity(intent);
+        });
+        homeBinding.homeReportLoss.setOnClickListener(v -> {
+            Intent intent = new Intent(HomeActivity.this, UserSearchActivity.class);
+            intent.putExtra("type", BaseCommon.REPORT_LOSS_CARD);
+            startActivity(intent);
+        });
+        homeBinding.homeReplacement.setOnClickListener(v -> {
+            replacementDialog = new ChooseReplacementDialog(this, type -> {
+                Intent intent = new Intent(HomeActivity.this, UserSearchActivity.class);
+                intent.putExtra("type", type);
+                startActivity(intent);
+                replacementDialog.dismiss();
+            });
+            replacementDialog.show();
         });
     }
 
@@ -118,4 +113,6 @@
         }
         return super.onKeyDown(keyCode, event);
     }
+
+
 }
diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/MyActivity.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/MyActivity.java
index 2574be7..15e946c 100644
--- a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/MyActivity.java
+++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/MyActivity.java
@@ -8,7 +8,6 @@
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
-import android.text.TextUtils;
 import android.view.LayoutInflater;
 import android.view.View;
 
@@ -18,10 +17,10 @@
 import com.dayu.baselibrary.view.PassWordDialog;
 import com.dayu.baselibrary.view.datepicker.CustomDatePicker;
 import com.dayu.baselibrary.view.datepicker.DateFormatUtils;
+import com.dayu.qiheonlinelibrary.QHOnLineApplication;
 import com.dayu.qiheonlinelibrary.databinding.ActivityMyQhlBinding;
 import com.dayu.qiheonlinelibrary.dbBean.AdminDataBean;
 import com.dayu.qiheonlinelibrary.dbBean.ElectricPriceBean;
-import com.dayu.qiheonlinelibrary.utils.DeviceNumberUtils;
 import com.dayu.qiheonlinelibrary.utils.ExcelUtil;
 
 import java.io.File;
@@ -206,31 +205,10 @@
     private void setData() {
         AdminDataBean adminData;
         try {
-            adminData = baseDao.adminDao().findFirst();
-            if (adminData != null) {
-                myBinding.myAdminName.setText(adminData.getAddressCode());
-                myBinding.myVillageNum.setText(adminData.getSerial());
-//                myBinding.myWaterPrice.setText(MornyUtil.changeF2Y(adminData.getWaterPrice()));
-            } else {
-                myBinding.myAdminName.setText("璇风偣鍑诲尯鍩熷彿杩涜璁剧疆");
-                myBinding.myVillageNum.setText("璇风偣鍑诲尯鍩熷彿杩涜璁剧疆");
-//                myBinding.myWaterPrice.setText("璇风偣鍑诲尯鍩熷彿杩涜璁剧疆");
-            }
-            StringBuilder msgData = new StringBuilder();
+            myBinding.myAdName.setText(QHOnLineApplication.getInstance().addressName);
+            myBinding.myAdminName.setText(QHOnLineApplication.getInstance().arerNumber);
+            myBinding.myWaterPrice.setText(QHOnLineApplication.getInstance().electriclePriceStr);
 
-            String initCode = DeviceNumberUtils.getDeviceNumber();
-            if (TextUtils.isEmpty(initCode)) {
-                msgData.append("璁惧鏈敞鍐�");
-            } else {
-                msgData.append("璁惧娉ㄥ唽鍙凤細" + initCode);
-            }
-            myBinding.myTestConnect.setText(msgData);
-            ElectricPriceBean priceBean = baseDao.electricPriceDao().findFirst();
-            if (priceBean != null) {
-                myBinding.myWaterPrice.setText(priceBean.getPrice() + "鍏�");
-            } else {
-                myBinding.myWaterPrice.setText("1.000鍏�");
-            }
         } catch (Exception e) {
             e.printStackTrace();
         }
diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/NFCWreatActivity.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/NFCWreatActivity.java
index e6c6868..33905c7 100644
--- a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/NFCWreatActivity.java
+++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/NFCWreatActivity.java
@@ -12,12 +12,15 @@
 import com.dayu.baselibrary.utils.AidlUtil;
 import com.dayu.baselibrary.utils.BaseCommon;
 import com.dayu.baselibrary.utils.DateUtil;
+import com.dayu.baselibrary.utils.DeviceUtils;
 import com.dayu.baselibrary.utils.MornyUtil;
 import com.dayu.baselibrary.utils.TipUtil;
 import com.dayu.baselibrary.view.ConfirmDialog;
 import com.dayu.baselibrary.view.TitleBar;
-
 import com.dayu.qiheonlinelibrary.QHOnLineApplication;
+import com.dayu.qiheonlinelibrary.bean.LoginResult;
+import com.dayu.qiheonlinelibrary.bean.OpenCardResult;
+import com.dayu.qiheonlinelibrary.bean.ReplaceCardResult;
 import com.dayu.qiheonlinelibrary.card.CleanCard;
 import com.dayu.qiheonlinelibrary.card.CleanUserCard;
 import com.dayu.qiheonlinelibrary.card.ConfigurationPowerCard;
@@ -31,16 +34,21 @@
 import com.dayu.qiheonlinelibrary.card.TestCard;
 import com.dayu.qiheonlinelibrary.card.UserCard;
 import com.dayu.qiheonlinelibrary.databinding.ActivityWriteTextQhlBinding;
-import com.dayu.qiheonlinelibrary.dbBean.AdminDataBean;
 import com.dayu.qiheonlinelibrary.dbBean.RechargeBean;
 import com.dayu.qiheonlinelibrary.dbBean.UserCardBean;
-import com.dayu.qiheonlinelibrary.tools.NFCWriteHelper;
+import com.dayu.qiheonlinelibrary.net.ApiManager;
+import com.dayu.qiheonlinelibrary.net.BaseResponse;
+import com.dayu.qiheonlinelibrary.net.subscribers.SubscriberListener;
 import com.dayu.qiheonlinelibrary.tools.NfcReadHelper;
 import com.dayu.qiheonlinelibrary.tools.WriteCardUtils;
 import com.dayu.qiheonlinelibrary.utils.CardCommon;
+import com.dayu.qiheonlinelibrary.utils.NFCWreatUtils;
+import com.dayu.qiheonlinelibrary.view.ReplacementPriceDialog;
 import com.tencent.bugly.crashreport.CrashReport;
 
 import java.util.Calendar;
+import java.util.HashMap;
+import java.util.Map;
 
 /**
  * Copyright (C), 2023,
@@ -54,7 +62,6 @@
     CleanUserCard cleanUserCard;
     ManageCard manageCard;
     DomainCard domainCard;
-
     CleanCard cleanCard;
     ConfigureDeviceRegistrationCrad configureDeviceRegistrationCrad;
     TestCard testCard;
@@ -70,7 +77,6 @@
     boolean passwordFlag = false;
     boolean cleanFlag = false;
     boolean regionFlag = false;
-    boolean userFlag = false;
     boolean manageCardFlag = false;
     boolean registeredFlag = false;
     boolean administrativeCardFlag = false;
@@ -78,23 +84,17 @@
 
     boolean domainCrdFlag = false;
 
-    boolean testCardFlag = false;
 
     boolean configDeviceRegiestFlag = false;
 
     boolean configPowerFlag = false;
 
     UserCardBean userCardBean;
-    UserCard olduserCard;
 
     String morny;
-    String rechageWater;//鍏呭�肩殑姘撮噺
     String userName;
-    AdminDataBean adminData;
     RechargeBean rechargeBean;
     Intent intent;
-
-
     //鎵撳嵃
     QHOnLineApplication baseApp;
 
@@ -112,6 +112,13 @@
     //褰撳墠鍗$殑鐗╃悊鍗″彿
     String cardNumber;
     ConfirmDialog confirmDialog;
+    //鏃х殑鍗d
+    String iccardInfoId;
+    //琛ュ崱绫诲瀷
+    int replaceType;
+    //琛ュ崱宸ユ湰璐圭敤
+    String rechargeCardMoney;
+    ReplacementPriceDialog replacementPriceDialog;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -120,9 +127,9 @@
             binding = ActivityWriteTextQhlBinding.inflate(LayoutInflater.from(this));
             setContentView(binding.getRoot());
             nfcWreatActivity = this;
-            getData();
             titleBack();
             baseApp = QHOnLineApplication.getInstance();
+            getData();
         } catch (Exception e) {
             e.printStackTrace();
             CrashReport.postCatchedException(e);
@@ -196,18 +203,26 @@
                 isRecharge = true;
                 morny = this.getIntent().getStringExtra("morny");
                 userName = this.getIntent().getStringExtra("userName");
-                cardNumber = this.getIntent().getStringExtra("cardNumber");
-                userCardBean = (UserCardBean) this.getIntent().getSerializableExtra("userCardBean");
+                rechargeBean = (RechargeBean) this.getIntent().getSerializableExtra("rechargeBean");
+
 //                rechageWater = this.getIntent().getStringExtra("rechageWater");
                 binding.cardData.setText("鍏呭�奸噾棰濓細" + morny + " 鍏�");
             }
-
-            try {
-                adminData = baseDao.adminDao().findFirst();
-            } catch (Exception e) {
-                e.printStackTrace();
-                CrashReport.postCatchedException(e);
+            if (this.getIntent().hasExtra("iccardInfoId")) {
+                iccardInfoId = this.getIntent().getStringExtra("iccardInfoId");
+                replaceType = this.getIntent().getIntExtra("replaceType", 0);
+                replacementPriceDialog = new ReplacementPriceDialog(this, data -> {
+                    if (TextUtils.isEmpty(data)) {
+                        rechargeCardMoney = "0";
+                    }
+                    rechargeCardMoney = data;
+                    binding.cardData.setText("琛ュ崱宸ユ湰璐癸細" + rechargeCardMoney + "鍏�");
+                    replacementPriceDialog.dismiss();
+                });
+                replacementPriceDialog.show();
             }
+
+
         } catch (Exception e) {
             e.printStackTrace();
             CrashReport.postCatchedException(e);
@@ -225,8 +240,6 @@
             String[] cardTypes = cardType.split(",");
             if (cardTypes != null && cardTypes.length == 2) {
                 cardNumber = cardType.split(",")[0];
-                cardNumber = HexUtil.spaceHex(cardNumber);
-                cardNumber = HexUtil.HighLowHex(cardNumber);
                 cardType = cardType.split(",")[1];
             }
             Log.i("NFCWreatActivity", "cardType=" + cardType);
@@ -241,10 +254,12 @@
             } else if (cardType.equals(BaseCommon.CARD_TYPE_ERROR2)) {
                 TipUtil.show(NFCWreatActivity.this, "鍗$墖鏈兘璇嗗埆锛岃妫�鏌ュ崱鐗囨槸鍚︽槸鏈叕鍙稿崱鐗�");
             } else {
+                //璇诲崱鎴愬姛
                 Log.i("NFCWreatActivity", "olduserCard!=null  saveData");
-                userCardBean.setCardNumber(cardNumber);
-                baseDao.userCardDao().insert(userCardBean);
-                saveData();
+//
+                openCard(cardNumber, 1, userCardBean.getPersonId(), String.valueOf(userCardBean.getCardMorny()));
+
+
             }
         } catch (Exception e) {
             e.printStackTrace();
@@ -262,53 +277,40 @@
                     || domainCard != null || testCard != null
                     || configureDeviceRegistrationCrad != null
                     || configurationPowerCard != null || regionCard != null || passWordCard != null || electricPriceCard != null) {
-                if (userCard != null && TextUtils.isEmpty(morny)) {
-                    userFlag = WriteCardUtils.setUser(intent, userCard, this);
-                }
+
                 if (electricPriceCard != null) {
-                    setElectricPriceCard(intent, electricPriceCard);
+                    electricPriceFlag = NFCWreatUtils.getInstance(this, baseDao).setElectricPriceCard(intent, electricPriceCard);
                 }
                 if (passWordCard != null) {
-                    setPassWordCard(intent, passWordCard);
+                    passwordFlag = NFCWreatUtils.getInstance(this, baseDao).setPassWordCard(intent, passWordCard);
                 }
                 if (regionCard != null) {
-                    setRegionCard(intent, regionCard);
+                    regionFlag = NFCWreatUtils.getInstance(this, baseDao).setRegionCard(intent, regionCard);
                 }
                 if (cleanCard != null) {
-                    setClean(intent, cleanCard);
+                    cleanFlag = NFCWreatUtils.getInstance(this, baseDao).setClean(intent, cleanCard);
                 }
                 if (manageCard != null) {
-                    setmanageCard(intent, manageCard);
-//                    if (manageCardFlag && userCardBeanByManager != null) {
-//                        //淇敼鐢ㄦ埛琛ㄤ俊鎭慨鏀规垚鏂板崱鍗″彿
-//                        userCardBeanByManager.setCardNumber(cardNumber);
-//                        baseDao.userCardDao().update(userCardBeanByManager);
-//                    }
+                    manageCardFlag = NFCWreatUtils.getInstance(this, baseDao).setmanageCard(intent, manageCard);
                 }
                 if (registeredCard != null) {
-                    setRegisteredCard(intent, registeredCard);
+                    registeredFlag = NFCWreatUtils.getInstance(this, baseDao).setRegisteredCard(intent, registeredCard);
                 }
                 if (cleanUserCard != null) {
-                    setCleanUserCard(intent, cleanUserCard);
+                    cleanUserCardFlag = NFCWreatUtils.getInstance(this, baseDao).setCleanUserCard(intent, cleanUserCard);
                 }
                 if (domainCard != null) {
-                    setDomainCard(intent, domainCard);
-                }
-                if (testCard != null) {
-                    setTestCard(intent, testCard);
+                    domainCrdFlag = NFCWreatUtils.getInstance(this, baseDao).setDomainCard(intent, domainCard);
                 }
                 if (configureDeviceRegistrationCrad != null) {
-                    setConfigDeviceRegiest(intent, configureDeviceRegistrationCrad);
+                    configDeviceRegiestFlag = NFCWreatUtils.getInstance(this, baseDao).setConfigDeviceRegiest(intent, configureDeviceRegistrationCrad);
                 }
                 if (configurationPowerCard != null) {
-                    setConfigurationPower(intent, configurationPowerCard);
+                    configPowerFlag = NFCWreatUtils.getInstance(this, baseDao).setConfigurationPower(intent, configurationPowerCard);
                 }
-                if (electricPriceFlag || passwordFlag || regionFlag || configPowerFlag || configDeviceRegiestFlag || testCardFlag || domainCrdFlag || userFlag || cleanFlag || manageCardFlag || registeredFlag || administrativeCardFlag || cleanUserCardFlag) {
+                if (electricPriceFlag || passwordFlag || regionFlag || configPowerFlag || configDeviceRegiestFlag || domainCrdFlag || cleanFlag || manageCardFlag || registeredFlag || administrativeCardFlag || cleanUserCardFlag) {
                     try {
-                        if (userFlag && userCardBean != null) {
-                            //鐢ㄦ埛鍗�
-                            startDetailActivity(userCardBean.getUserName(), "缁堢鍐欏崱");
-                        } else if (!TextUtils.isEmpty(morny)) {
+                        if (!TextUtils.isEmpty(morny)) {
                             TipUtil.show(NFCWreatActivity.this, "鍏呭�兼垚鍔�", () -> NFCWreatActivity.this.finish());
                         } else {
                             TipUtil.show(NFCWreatActivity.this, "鍐欏崱鎴愬姛", () -> NFCWreatActivity.this.finish());
@@ -340,14 +342,15 @@
         super.onNewIntent(intent);
         try {
             this.intent = intent;
-//            startAnim();
-            Log.i("NFCWreatActivity", "isUser:" + isUser);
             if (isUser) {
                 //鏂板崱娉ㄥ唽閫昏緫
                 checkHasUser();
             } else if (isRecharge) {
                 //鍏呭�奸�昏緫
                 rechargeWreatCard();
+            } else if (!TextUtils.isEmpty(iccardInfoId)) {
+                //琛ュ崱閫昏緫
+                replaceCard();
             } else {
                 //鍏朵粬绠$悊鍗¢�昏緫
                 saveData();
@@ -374,9 +377,7 @@
                 data.append("鍗�  鍙凤細" + rechargeBean.getCardNumber() + "\n");
                 data.append("鍏呭�奸噾棰濓細" + rechargeBean.getMorny() + " 鍏�" + "\n");
                 data.append("鍗″唴浣欓锛�" + rechargeBean.getBalance() + " 鍏�" + "\n");
-//                data.append("鍏呭�兼按閲忥細" + rechargeBean.getRechargeWater() + " 鍚�" + "\n");
-//                data.append("鍓╀綑姘撮噺锛�" + rechargeBean.getSurplusWater() + " 鍚�" + "\n");
-                data.append("鏃�  鏈燂細" + DateUtil.dateToStamp(rechargeBean.getDate(), DateUtil.type2) + "\n\n");
+                data.append("鏃�  鏈燂細" + DateUtil.dateToStamp(rechargeBean.getRechargeDate(), DateUtil.type2) + "\n\n");
                 data.append("*****************************");
             }
             float size = 26;
@@ -409,43 +410,11 @@
     private void rechargeWreatCard() {
         try {
             String cardNumberThis = NfcReadHelper.getInstence(intent, this).getCardNumber();
-            cardNumberThis = HexUtil.spaceHex(cardNumberThis);
-            cardNumberThis = HexUtil.HighLowHex(cardNumberThis);
             //鍒ゆ柇鏄惁鍏呭�肩殑鏄竴涓崱
-            if (cardNumberThis.equalsIgnoreCase(cardNumber)) {
-                //浣欓
-                int balance = userCard.getBalance() + MornyUtil.changeY2F(morny);
-                userCard.setBalance(balance);
-                //鍓╀綑姘撮噺
-//                int surplusWater = userCard.getSurplusWater() + MornyUtil.changeY2F(rechageWater);
-//                userCard.setSurplusWater(surplusWater);
-
-                int rechageTims = userCard.getRechargeTimes() + 1;
-                if (rechageTims == 256) {
-                    rechageTims = 0;
-                }
-                userCard.setRechargeTimes((short) rechageTims);
+            if (cardNumberThis.equalsIgnoreCase(rechargeBean.getCardNumber())) {
                 userCard.setRechargeDate(Calendar.getInstance());
-                userFlag = WriteCardUtils.setUser(intent, userCard, this);
-                if (userFlag) {
-                    rechargeBean = new RechargeBean();
-                    rechargeBean.setUserName(userName);
-                    rechargeBean.setSerial(userCardBean.getSerial());
-                    rechargeBean.setUserId(userCardBean.getUserID());
-                    rechargeBean.setDate(System.currentTimeMillis());
-                    rechargeBean.setMorny(morny);
-                    rechargeBean.setBalance(MornyUtil.changeF2Y(balance));
-                    rechargeBean.setCardNumber(cardNumber);
-                    rechargeBean.setSurplusWater(MornyUtil.changeF2Y(0));
-                    rechargeBean.setRechargeWater(rechageWater);
-                    try {
-                        baseDao.rechargeDao().insert(rechargeBean);
-                    } catch (Exception e) {
-                        e.printStackTrace();
-                    }
-                    //   鎵撳嵃鐩稿叧
-                    setPrinterData(rechargeBean);
-                    startDetailActivity(userName, "缁堢鍐欏崱");
+                if (WriteCardUtils.setUser(intent, userCard, this)) {
+                    confromRecharge(rechargeBean.getOrderId(), 0);
                 } else {
                     TipUtil.show(NFCWreatActivity.this, "鍐欏崱澶辫触锛岃閲嶆柊鍐嶈瘯");
                 }
@@ -457,112 +426,6 @@
         }
     }
 
-    private void setmanageCard(Intent intent, final ManageCard manageCard) {
-        manageCardFlag = NFCWriteHelper.getInstence(intent, this).writeData(manageCard.toByte(baseDao), 1, 0);
-    }
-
-    /**
-     * 鍒朵綔娓呴浂鍗�
-     *
-     * @param intent
-     * @param clearOrInitCard
-     */
-    private void setClean(Intent intent, CleanCard clearOrInitCard) {
-        cleanFlag = NFCWriteHelper.getInstence(intent, this).writeData(clearOrInitCard.toByte(baseDao), 1, 0);
-    }
-
-    /**
-     * 淇濆瓨鍖哄煙琛ㄥ彿鍗�
-     *
-     * @param intent
-     * @param regionCard
-     */
-    private void setRegionCard(Intent intent, RegionCard regionCard) {
-        regionFlag = NFCWriteHelper.getInstence(intent, this).writeData(regionCard.toByte(), 1, 0);
-    }
-
-    /**
-     * 瀵嗙爜鍗�
-     *
-     * @param intent
-     * @param passWordCard
-     */
-    private void setPassWordCard(Intent intent, PassWordCard passWordCard) {
-        passwordFlag = NFCWriteHelper.getInstence(intent, this).writeData(passWordCard.toByte(baseDao), 1, 0);
-    }
-
-    /**
-     * 鐢ㄦ埛鐢甸噺鍗曚环
-     *
-     * @param intent
-     * @param electricPriceCard
-     */
-    private void setElectricPriceCard(Intent intent, ElectricPriceCard electricPriceCard) {
-        electricPriceFlag = NFCWriteHelper.getInstence(intent, this).writeData(electricPriceCard.toByte(baseDao), 1, 0);
-    }
-
-    /**
-     * 閲嶆柊娉ㄥ唽璁惧鍗�
-     *
-     * @param intent
-     * @param registeredCard
-     */
-    private void setRegisteredCard(Intent intent, RegisteredCard registeredCard) {
-        registeredFlag = NFCWriteHelper.getInstence(intent, this).writeData(registeredCard.toByte(baseDao), 1, 0);
-    }
-
-    /**
-     * 鍒犻櫎鍏ㄩ儴鐢ㄦ埛鍗�
-     *
-     * @param intent
-     * @param cleanUserCard
-     */
-    private void setCleanUserCard(Intent intent, CleanUserCard cleanUserCard) {
-        cleanUserCardFlag = NFCWriteHelper.getInstence(intent, this).writeData(cleanUserCard.toByte(baseDao), 1, 0);
-    }
-
-    /**
-     * 璁剧疆鍩熷悕鍗�
-     *
-     * @param intent
-     * @param domainCard
-     */
-    private void setDomainCard(Intent intent, DomainCard domainCard) {
-        try {
-            domainCrdFlag = NFCWriteHelper.getInstence(intent, this).writeData(domainCard.getZeroByte(), 1, 0);
-            if (!domainCrdFlag) {
-                return;
-            }
-            domainCrdFlag = NFCWriteHelper.getInstence(intent, this).writeData(domainCard.getOneByte(), 1, 1);
-            if (!domainCrdFlag) {
-                return;
-            }
-            domainCrdFlag = NFCWriteHelper.getInstence(intent, this).writeData(domainCard.getTwoByte(), 1, 2);
-        } catch (Exception e) {
-            domainCrdFlag = false;
-            throw new RuntimeException(e);
-        }
-    }
-
-    private void setTestCard(Intent intent, TestCard testCard) {
-        testCardFlag = NFCWriteHelper.getInstence(intent, this).writeData(testCard.toByte(baseDao), 1, 0);
-    }
-
-
-    private void setConfigDeviceRegiest(Intent intent, ConfigureDeviceRegistrationCrad configureDeviceRegistrationCrad) {
-        configDeviceRegiestFlag = NFCWriteHelper.getInstence(intent, this).writeData(configureDeviceRegistrationCrad.toByte(baseDao), 1, 0);
-    }
-
-    private void setConfigurationPower(Intent intent, ConfigurationPowerCard configurationPowerCard) {
-        try {
-            configPowerFlag = NFCWriteHelper.getInstence(intent, this).writeData(configurationPowerCard.toByte(baseDao), 1, 0);
-        } catch (Exception e) {
-            configPowerFlag = false;
-            throw new RuntimeException(e);
-        }
-    }
-
-
     private void startDetailActivity(String userName, String statu) {
         Intent detail = new Intent(this, RechargeDetailActivity.class);
         detail.putExtra("userName", userName);
@@ -570,7 +433,7 @@
         detail.putExtra("userCard", userCard);
         if (!TextUtils.isEmpty(morny)) {
             detail.putExtra("morny", morny);
-            detail.putExtra("rechageWater", rechageWater);
+            detail.putExtra("rechargeBean", rechargeBean);
         }
         if (!TextUtils.isEmpty(cardNumber)) {
             detail.putExtra("cardNumber", cardNumber);
@@ -630,4 +493,186 @@
             }
         });
     }
+
+    /**
+     * IC寮�鍗℃帴鍙�
+     *
+     * @param iccardNum     鐗╃悊鍗″彿
+     * @param iccardType    ic鍗$被鍨� 1 鐢ㄦ埛鍗� 2 绠$悊鍗�
+     * @param peasantId
+     * @param rechargeMoney
+     */
+    private void openCard(String iccardNum, int iccardType, String peasantId, String rechargeMoney) {
+        Map<String, Object> data = new HashMap<>();
+        data.put("iccardNum", iccardNum);//鐗╃悊鍗″彿
+        data.put("iccardType", iccardType);
+        data.put("peasantId", peasantId);
+        //宸ユ湰璐�
+        data.put("rechargeCardMoney", rechargeMoney);
+        ApiManager.getInstance().requestPostLoading(this, "api/sjgg/iccard/recharge/openCard", OpenCardResult.class, data, new SubscriberListener<BaseResponse<OpenCardResult>>() {
+            @Override
+            public void onNext(BaseResponse<OpenCardResult> t) {
+                if (t.isSuccess()) {
+                    String userCode = t.getData().getIccardCode();
+                    userCard.setUserCode(userCode.substring(0, 12));
+                    userCard.setUserCodeNumber(Integer.valueOf(userCode.substring(12, 16)));
+                    userCardBean.setCardNumber(cardNumber);
+                    userCardBean.setUserCode(userCode);
+                    baseDao.userCardDao().insert(userCardBean);
+                    if (WriteCardUtils.setUser(intent, userCard, NFCWreatActivity.this)) {
+                        confromOpenCard(t.getData().getIccardRechargeRecordId(), 0);
+                    } else {
+                        confromOpenCard(t.getData().getIccardRechargeRecordId(), 2);
+                    }
+                } else {
+                    TipUtil.show(t.getMsg());
+                }
+            }
+        });
+
+    }
+
+    /**
+     * 纭寮�鍗″啓鍗�
+     *
+     * @param iccardRechargeRecordId
+     * @param writeCardStatus
+     */
+    private void confromOpenCard(String iccardRechargeRecordId, int writeCardStatus) {
+        Map<String, Object> data = new HashMap<>();
+        data.put("iccardRechargeRecordId", iccardRechargeRecordId);
+        //鍐欏崱鐘舵�� 0 鍐欏崱鎴愬姛 1 寰呭啓鍗� 2 鍐欏崱澶辫触
+        data.put("writeCardStatus", writeCardStatus);
+
+
+        ApiManager.getInstance().requestPostLoading(this, "api/sjgg/iccard/recharge/openCardResult", LoginResult.class, data, new SubscriberListener<BaseResponse<LoginResult>>() {
+            @Override
+            public void onNext(BaseResponse<LoginResult> t) {
+                if (t.isSuccess()) {
+                    //{"code":"0","msg":"鎿嶄綔鎴愬姛","data":{"chargeMethod":"","iccardCancelTime":"","lastRechargeTime":"2024-08-05 17:04:15","thisSaleMoney":"","totalRechargeWaterAmount":0.00,"iccardBalanceAmonunt":0.00,"iccardInfoId":"1820385315354320898","iccardProtocolName":"","totalRechargeElectricAmount":0.00,"logicState":1,"username":"","state":1,"familySize":"","yearRechargeMoney":0.00,"thisSaleAmount":"","onlyRechargeMoney":"","identityCard":"","iccardBrand":"","iccardBalanceMoney":0.00,"openOperatorUsername":"","adName":"","rechargeWaterAmount":"","openOperatorUserId":"1816297106145103873","lastSwipeTime":"","address":"","yearCompensateMoney":0.00,"iccardProtocolOpenMoney":"","peasantId":"1820374742679953410","reissueTimes":0,"iccardProtocolReissueMoney":"","iccardProtocolId":"","yearRechargeWaterAmount":0.00,"iccardBalanceElectric":0.00,"iccardStatus":0,"phone":"","lastRechargeMoney":0.00,"iccardOpenTime":"","yearRechargeElectricAmount":0.00,"reissueRechargeRecordId":"","iccardPrice":1.50,"iccardNum":"3714251023011","accountType":0,"equipCode":"","rechargeWaterMoney":"","totalRechargeMoney":0.00,"executeWaterPrice":"","iccardType":1,"iccardCode":"BADA4044"}}
+                    startDetailActivity(userCardBean.getUserName(), "缁堢鍐欏崱");
+                }
+            }
+        });
+
+    }
+
+    /**
+     * 纭鍏呭�煎洖璋�
+     *
+     * @param iccardRechargeRecordId
+     * @param writeCardStatus
+     */
+    private void confromRecharge(String iccardRechargeRecordId, int writeCardStatus) {
+        Map<String, Object> data = new HashMap<>();
+        data.put("iccardRechargeRecordId", iccardRechargeRecordId);
+        //鍐欏崱鐘舵�� 0 鍐欏崱鎴愬姛 1 寰呭啓鍗� 2 鍐欏崱澶辫触
+        data.put("writeCardStatus", writeCardStatus);
+        data.put("writeCardStatus", writeCardStatus);
+
+        ApiManager.getInstance().requestPostLoading(this, "api/sjgg/iccard/recharge/rechargeCardResult", LoginResult.class, data, new SubscriberListener<BaseResponse<LoginResult>>() {
+            @Override
+            public void onNext(BaseResponse<LoginResult> t) {
+                if (t.isSuccess()) {
+
+                    try {
+                        baseDao.rechargeDao().insert(rechargeBean);
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                    }
+                    //   鎵撳嵃鐩稿叧
+                    setPrinterData(rechargeBean);
+                    startDetailActivity(rechargeBean.getUserName(), "缁堢鍐欏崱");
+                }
+            }
+        });
+    }
+
+
+    /**
+     * 琛ュ崱
+     */
+    private void replaceCardPost(String iccardBalanceMoney, String iccardBalanceElectric) {
+        Map<String, Object> data = new HashMap<>();
+        data.put("equipCode", DeviceUtils.getSN());
+        //鍏呭�煎崱璐�
+        data.put("rechargeCardMoney", rechargeCardMoney);
+        // 鏃у崱鐨刬d
+        data.put("iccardInfoId", iccardInfoId);
+        //鏂板崱鐨勭墿鐞嗗崱鍙�
+        data.put("iccardNum", cardNumber);
+        //鍗″唴鍓╀綑閲戦
+        data.put("iccardBalanceMoney", iccardBalanceMoney);
+        //鍗″唴鍓╀綑鐢甸噺
+        data.put("iccardBalanceElectric", iccardBalanceElectric);
+        ApiManager.getInstance().requestPostLoading(this, "api/sjgg/iccard/recharge/reissueOpenCard", ReplaceCardResult.class, data, new SubscriberListener<BaseResponse<ReplaceCardResult>>() {
+            @Override
+            public void onNext(BaseResponse<ReplaceCardResult> t) {
+                if (t.isSuccess()) {
+                    ReplaceCardResult replaceCardResult = t.getData();
+                    userCard = new UserCard();
+                    userCard.setArerNumber(Integer.valueOf(QHOnLineApplication.getInstance().arerNumber));
+                    String userCode = t.getData().getIccardCode();
+                    userCard.setUserCode(userCode.substring(0, 12));
+                    userCard.setUserCodeNumber(Integer.valueOf(userCode.substring(12, 16)));
+                    userCard.setCardWriteState(0);
+                    userCard.setCardState(1);
+                    userCard.setBalance(MornyUtil.changeY2F(replaceCardResult.getIccardBalanceMoney()));
+                    userCard.setSurplusElecticity(MornyUtil.changeY2F(replaceCardResult.getIccardBalanceElectric()));
+                    userCard.setTotalMorny(MornyUtil.changeY2F(replaceCardResult.getTotalRechargeMoney()));
+                    userCard.setRechargeDate(Calendar.getInstance());
+                    userCard.setElectricPrice(Float.valueOf(QHOnLineApplication.getInstance().electriclePriceStr));
+                    if (WriteCardUtils.setUser(intent, userCard, NFCWreatActivity.this)) {
+                        confromReplaceCard(replaceCardResult.getIccardRechargeRecordId(), 0);
+                    } else {
+                        TipUtil.show(NFCWreatActivity.this, "鍐欏崱澶辫触锛岃閲嶈瘯");
+                    }
+                    //   鎵撳嵃鐩稿叧
+//                    setPrinterData(rechargeBean);
+//                    startDetailActivity(rechargeBean.getUserName(), "缁堢鍐欏崱");
+                }
+            }
+        });
+    }
+
+    /**
+     * 纭琛ュ崱鍐欏崱鎴愬姛
+     *
+     * @param iccardRechargeRecordId
+     * @param writeCardStatus
+     */
+    private void confromReplaceCard(String iccardRechargeRecordId, int writeCardStatus) {
+        Map<String, Object> data = new HashMap<>();
+        data.put("equipCode", DeviceUtils.getSN());
+//        data.put("iccardRechargeRecordId", iccardRechargeRecordId);
+        //鍐欏崱鐘舵�� 0 鍐欏崱鎴愬姛 1 寰呭啓鍗� 2 鍐欏崱澶辫触
+        data.put("writeCardStatus", writeCardStatus);
+
+        ApiManager.getInstance().requestPostLoading(this, "api/sjgg/iccard/recharge/reissueOpenCardResult", LoginResult.class, data, new SubscriberListener<BaseResponse<LoginResult>>() {
+            @Override
+            public void onNext(BaseResponse<LoginResult> t) {
+                if (t.isSuccess()) {
+
+                    try {
+                        baseDao.rechargeDao().insert(rechargeBean);
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                    }
+                    //   鎵撳嵃鐩稿叧
+                    setPrinterData(rechargeBean);
+                    startDetailActivity(rechargeBean.getUserName(), "缁堢鍐欏崱");
+                }
+            }
+        });
+    }
+
+    /**
+     * 琛ュ崱閫昏緫
+     */
+    private void replaceCard() {
+        cardNumber = NfcReadHelper.getInstence(intent, this).getCardNumber();
+        if (replaceType == BaseCommon.REPLACE_NO_CARD) {
+            replaceCardPost("", "");
+        }
+    }
 }
\ No newline at end of file
diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/NewCardActivity.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/NewCardActivity.java
index 7165c03..dd324a9 100644
--- a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/NewCardActivity.java
+++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/NewCardActivity.java
@@ -11,21 +11,34 @@
 import androidx.annotation.NonNull;
 
 import com.dayu.baselibrary.tools.Utils;
+import com.dayu.baselibrary.utils.DeviceUtils;
 import com.dayu.baselibrary.utils.TipUtil;
 import com.dayu.baselibrary.utils.ToastUtil;
 
+import com.dayu.qiheonlinelibrary.QHOnLineApplication;
+import com.dayu.qiheonlinelibrary.bean.AddUserResult;
+import com.dayu.qiheonlinelibrary.bean.PricePlanResult;
+import com.dayu.qiheonlinelibrary.bean.UserListResult;
 import com.dayu.qiheonlinelibrary.card.UserCard;
 import com.dayu.qiheonlinelibrary.databinding.ActivityNewCardQhlBinding;
 import com.dayu.qiheonlinelibrary.dbBean.AdminDataBean;
 import com.dayu.qiheonlinelibrary.dbBean.UserCardBean;
+import com.dayu.qiheonlinelibrary.net.ApiManager;
+import com.dayu.qiheonlinelibrary.net.BaseResponse;
+import com.dayu.qiheonlinelibrary.net.RSAUtile;
+import com.dayu.qiheonlinelibrary.net.subscribers.SubscriberListener;
 import com.hjq.permissions.OnPermissionCallback;
 import com.hjq.permissions.Permission;
 import com.hjq.permissions.XXPermissions;
 import com.kernal.passportreader.sdk.CardsCameraActivity;
 import com.kernal.passportreader.sdk.utils.DefaultPicSavePath;
 
+import java.text.SimpleDateFormat;
 import java.util.Calendar;
+import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
@@ -42,10 +55,8 @@
 public class NewCardActivity extends BaseActivity {
 
     public static final int SCAN_IDCARD_REQUEST = 1;
-    UserCardBean userCardBean;
 
     ActivityNewCardQhlBinding newCardBinding;
-    AdminDataBean adminData;
 
     static NewCardActivity newCardActivity;
     private int defValueMainId = 2;
@@ -76,10 +87,9 @@
         newCardBinding.newCardRegistBtn.setOnClickListener(v -> {
 
             String userName = newCardBinding.newCardName.getText().toString();
-            long date = System.currentTimeMillis();
             String phone = newCardBinding.newCardPhone.getText().toString();
             String userID = newCardBinding.newCardId.getText().toString().toUpperCase();
-
+            String morny = newCardBinding.newCardMorny.getText().toString();
 
             if (!TextUtils.isEmpty(userName)
                     && !TextUtils.isEmpty(phone) && !TextUtils.isEmpty(userID)
@@ -91,28 +101,7 @@
                 } else if (!Utils.check(userID)) {
                     TipUtil.show(NewCardActivity.this, "璇疯緭鍏ユ纭韩浠借瘉鍙�");
                 } else {
-                    userCardBean = new UserCardBean();
-                    userCardBean.setUserName(userName);
-                    userCardBean.setDate(date);
-                    userCardBean.setSerial(adminData.getSerial());
-                    userCardBean.setPhone(phone);
-                    userCardBean.setUserID(userID);
-
-
-                    UserCard userCard = new UserCard();
-                    userCard.setArerNumber(Integer.valueOf(adminData.getSerial()));
-                    userCard.setDeviceNumberl(Integer.valueOf(adminData.getAddressCode()));
-                    userCard.setRechargeTimes((byte) 0);
-                    userCard.setTotalWater(0);
-                    userCard.setTotalElectric(0);
-                    userCard.setBalance(0);
-                    userCard.setSurplusWater(0);
-                    userCard.setRechargeDate(Calendar.getInstance());
-
-                    Intent intent = new Intent(NewCardActivity.this, NFCWreatActivity.class);
-                    intent.putExtra("userCard", userCard);
-                    intent.putExtra("dbUserCard", userCardBean);
-                    startActivity(intent);
+                    selectUser(userID, phone, userName, morny);
                 }
 
             } else {
@@ -121,6 +110,7 @@
         });
     }
 
+    //鏍¢獙鎵嬫満鍙�
     private boolean isValidPhoneNumber(String phoneNumber) {
         // 瀹氫箟鎵嬫満鍙风殑姝e垯琛ㄨ揪寮忥紝纭繚鏁板瓧閮ㄥ垎娌℃湁杩炵画6浣嶇浉鍚岀殑鏁板瓧
         String phoneRegex = "^1[0-9]{10}$";
@@ -248,8 +238,7 @@
     private void setData() {
 
         try {
-            adminData = baseDao.adminDao().findFirst();
-            newCardBinding.newCardVillageNum.setText(adminData.getSerial());
+            newCardBinding.newCardArerNumber.setText(QHOnLineApplication.getInstance().arerNumber);
         } catch (Exception e) {
             e.printStackTrace();
         }
@@ -307,4 +296,100 @@
         newCardActivity = null;
     }
 
+
+    /**
+     * 鏌ヨ鐢ㄦ埛
+     *
+     * @param peasantIdNumber
+     * @param peasantPhone
+     * @param peasantName
+     * @param morny           寮�鍗¢噾棰�
+     */
+    private void selectUser(String peasantIdNumber, String peasantPhone, String peasantName, String morny) {
+        Map<String, Object> data = new HashMap<>();
+        data.put("adcd", QHOnLineApplication.getInstance().adcd);
+        data.put("peasantIdNumber", peasantIdNumber);
+        data.put("current", 1);
+        data.put("pageSize", 10);
+        ApiManager.getInstance().requestPostLoading(this, "api/sjgg/base/peasant/pagePeasantVo", UserListResult.class, data, new SubscriberListener<BaseResponse<UserListResult>>() {
+            @Override
+            public void onNext(BaseResponse<UserListResult> t) {
+                if (t.isSuccess()) {
+                    if (t.getData().getTotal() == 0) {
+                        if (!TextUtils.isEmpty(QHOnLineApplication.getInstance().planId)) {
+                            addUser(peasantIdNumber, peasantPhone, peasantName, QHOnLineApplication.getInstance().planId, morny);
+                        }
+                    } else {
+                        startNFCWreatActivity(peasantIdNumber, peasantPhone, peasantName, t.getData().getRecords().get(0).getPeasantId(), morny);
+                    }
+                }else {
+                    ToastUtil.show(t.getMsg());
+                }
+            }
+        });
+    }
+
+    private void startNFCWreatActivity(String peasantIdNumber, String peasantPhone, String peasantName, String peasanId, String morny) {
+        UserCard userCard = new UserCard();
+        userCard.setArerNumber(Integer.valueOf(QHOnLineApplication.getInstance().arerNumber));
+        userCard.setUserCode(QHOnLineApplication.getInstance().adcd);
+        userCard.setCardWriteState(0);
+        userCard.setCardState(1);
+        userCard.setBalance(0);
+        userCard.setSurplusElecticity(0);
+        userCard.setTotalMorny(0);
+        userCard.setRechargeDate(Calendar.getInstance());
+
+        UserCardBean userCardBean = new UserCardBean();
+
+        userCardBean.setUserName(peasantName);
+        userCardBean.setUserID(peasantIdNumber);
+        userCardBean.setPhone(peasantPhone);
+        userCardBean.setPersonId(peasanId);
+        if (!TextUtils.isEmpty(morny)) {
+            userCardBean.setCardMorny(Integer.valueOf(morny));
+        } else {
+            userCardBean.setCardMorny(0);
+        }
+        userCardBean.setAddressCode(QHOnLineApplication.getInstance().adcd);
+        userCardBean.setAddressName(QHOnLineApplication.getInstance().addressName);
+        userCardBean.setArerNumber(QHOnLineApplication.getInstance().arerNumber);
+        userCardBean.setDate(System.currentTimeMillis());
+        userCardBean.setSerial(DeviceUtils.getSN());
+
+        Intent intent = new Intent(NewCardActivity.this, NFCWreatActivity.class);
+        intent.putExtra("userCard", userCard);
+        intent.putExtra("dbUserCard", userCardBean);
+        startActivity(intent);
+    }
+
+    /**
+     * 娣诲姞鐢ㄦ埛
+     *
+     * @param peasantIdNumber
+     * @param peasantPhone
+     * @param peasantName
+     * @param planId          浠锋牸ID
+     */
+    private void addUser(String peasantIdNumber, String peasantPhone, String peasantName, String planId, String morny) {
+        Map<String, Object> data = new HashMap<>();
+        data.put("planId", planId);
+        data.put("adcd", QHOnLineApplication.getInstance().adcd);
+        data.put("peasantIdNumber", peasantIdNumber);
+        data.put("peasantCode", "");
+        data.put("peasantName", peasantName);
+        data.put("peasantPhone", peasantPhone);
+        ApiManager.getInstance().requestPostLoading(this, "api/sjgg/base/peasant/savePeasant", AddUserResult.class, data, new SubscriberListener<BaseResponse<AddUserResult>>() {
+            @Override
+            public void onNext(BaseResponse<AddUserResult> t) {
+                if (t.isSuccess()) {
+                    startNFCWreatActivity(peasantIdNumber, peasantPhone, peasantName, t.getData().getPeasantId(), morny);
+                }else {
+                    ToastUtil.show(t.getMsg());
+                }
+            }
+        });
+    }
+
+
 }
diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/ReadCardAcitivy.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/ReadCardAcitivy.java
index 1bc1a04..cd85db7 100644
--- a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/ReadCardAcitivy.java
+++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/ReadCardAcitivy.java
@@ -11,6 +11,7 @@
 import com.dayu.baselibrary.utils.MornyUtil;
 import com.dayu.baselibrary.utils.TipUtil;
 import com.dayu.baselibrary.view.ConfirmDialog;
+import com.dayu.qiheonlinelibrary.bean.CardInfoResult;
 import com.dayu.qiheonlinelibrary.card.BlackCard;
 import com.dayu.qiheonlinelibrary.card.ConfigurationPowerCard;
 import com.dayu.qiheonlinelibrary.card.DomainCard;
@@ -22,6 +23,9 @@
 import com.dayu.qiheonlinelibrary.databinding.ActivityRedCardQhlBinding;
 import com.dayu.qiheonlinelibrary.dbBean.AdminDataBean;
 import com.dayu.qiheonlinelibrary.dbBean.UserCardBean;
+import com.dayu.qiheonlinelibrary.net.ApiManager;
+import com.dayu.qiheonlinelibrary.net.BaseResponse;
+import com.dayu.qiheonlinelibrary.net.subscribers.SubscriberListener;
 import com.dayu.qiheonlinelibrary.tools.NFCWriteHelper;
 import com.dayu.qiheonlinelibrary.tools.NfcReadHelper;
 import com.dayu.qiheonlinelibrary.utils.CardCommon;
@@ -29,7 +33,9 @@
 
 
 import java.util.Calendar;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * Copyright (C), 2023,
@@ -48,35 +54,12 @@
     AdminDataBean adminData;
     String cardNumber;
     String userCardStr;
+
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         redCardBinding = ActivityRedCardQhlBinding.inflate(LayoutInflater.from(this));
         setContentView(redCardBinding.getRoot());
-    }
-
-
-    private void setUserData(String userName, String statu, String cardNumber) {
-        viweGone(true);
-        redCardBinding.redName.setText("鐢ㄦ埛濮撳悕锛�" + userName);
-        redCardBinding.redStatu.setText("鍗$姸鎬侊細" + statu);
-        if (userCard != null) {
-            Calendar calendar = userCard.getRechargeDate();
-            if (calendar != null) {
-                int year = calendar.get(Calendar.YEAR);
-                int month = calendar.get(Calendar.MONTH); // 鏈堜唤浠�0寮�濮嬶紝鎵�浠ラ渶瑕佸姞1
-                int day = calendar.get(Calendar.DAY_OF_MONTH);
-                redCardBinding.redRechargeDate.setText("鏈崱鏈�鍚庤喘姘存棩鏈燂細" + year + "骞�" + month + "鏈�" + day + "鏃�");
-            } else {
-                redCardBinding.redRechargeDate.setText("鏈崱鏈�鍚庤喘姘存棩鏈燂細鏃�");
-            }
-            redCardBinding.redInitCode.setText(cardNumber);
-            redCardBinding.redRechargeNumber.setText("鏈崱鍏呭�兼鏁帮細" + userCard.getRechargeTimes() + " 娆�");
-//            redCardBinding.redTotalWater.setText("鎬荤敤姘撮噺锛�" + MornyUtil.changeF2Y(userCard.getTotalWater()) + " 鍚�");
-//            redCardBinding.redTotalPower.setText("鎬荤敤鐢甸噺锛�" + MornyUtil.changeF2Y(userCard.getTotalElectric()) + " 搴�");
-            redCardBinding.redRemainderBlance.setText("鍓╀綑閲戦锛�" + MornyUtil.changeF2Y(userCard.getBalance()) + " 鍏�");
-//            redCardBinding.redRemainderWater.setText("鍓╀綑姘撮噺锛�" + MornyUtil.changeF2Y(userCard.getSurplusWater()) + " 鍚�");
-        }
     }
 
 
@@ -102,8 +85,6 @@
         String[] cardTypes = cardType.split(",");
         if (cardTypes != null && cardTypes.length == 2) {
             cardNumber = cardType.split(",")[0];
-            cardNumber = HexUtil.spaceHex(cardNumber);
-            cardNumber = HexUtil.HighLowHex(cardNumber);
             cardType = cardType.split(",")[1];
         }
         List<byte[]> data = NfcReadHelper.getInstence(intent, this).getOnesectorData();
@@ -123,13 +104,7 @@
                 if (!data.isEmpty()) {
                     if (!TextUtils.isEmpty(cardNumber)) {
                         userCard = UserCard.getBean(data);
-                        List<UserCardBean> userCardBeans = baseDao.userCardDao().findUserName(cardNumber);
-                        if (userCardBeans != null && !userCardBeans.isEmpty()) {
-                            UserCardBean userName = userCardBeans.get(0);
-                            setUserData(userName.getUserName(), state, cardNumber);
-                        } else {
-                            setUserData("鏈煡璇㈠埌鐢ㄦ埛鍚�", state, cardNumber);
-                        }
+                        getUserInfoAndCardInfo(cardNumber);
                     } else {
 
                     }
@@ -141,14 +116,12 @@
             case CardCommon.MANAGE_CRAD://绠$悊鍗�
                 ManageCard manageCard = ManageCard.getBean(data);
                 viweGone(false);
-                 userCardStr = manageCard.getUserCard().toUpperCase();
-                userCardStr = HexUtil.spaceHex(userCardStr);
-                userCardStr = HexUtil.HighLowHex(userCardStr);
+                userCardStr = manageCard.getUserCard().toUpperCase();
                 redCardBinding.readCardTypeTV.setText("褰撳墠涓虹鐞嗗崱" + "\n\n"
                         + "鍘熷鍗″彿锛�" + userCardStr);
-                if (manageCard.getType()==(byte) 1){
+                if (manageCard.getType() == (byte) 1) {
                     //褰�01鏃跺皢1鎵囧尯0鍧楀師绠$悊鍗′俊鎭敼鎴愮敤鎴峰崱鍐呭
-                     confirmDialog=new ConfirmDialog(this, "鏄惁纭琛ュ崱锛岃鍗″皢鎴愪负鏂扮敤鎴峰崱锛熷苟涓斾笉瑕佺Щ鍔ㄥ崱鐗�", new View.OnClickListener() {
+                    confirmDialog = new ConfirmDialog(this, "鏄惁纭琛ュ崱锛岃鍗″皢鎴愪负鏂扮敤鎴峰崱锛熷苟涓斾笉瑕佺Щ鍔ㄥ崱鐗�", new View.OnClickListener() {
                         @Override
                         public void onClick(View v) {
                             ProgressDialog.show(ReadCardAcitivy.this);
@@ -162,21 +135,21 @@
                                     baseDao.userCardDao().update(userName);
                                 }
 
-                                NFCWriteHelper nfcWriteHelper=   NFCWriteHelper.getInstence(intent,ReadCardAcitivy.this);
+                                NFCWriteHelper nfcWriteHelper = NFCWriteHelper.getInstence(intent, ReadCardAcitivy.this);
                                 adminData = baseDao.adminDao().findFirst();
-                                ManagerToUserCard managerToUserCard=new ManagerToUserCard();
+                                ManagerToUserCard managerToUserCard = new ManagerToUserCard();
                                 managerToUserCard.setArerNumber(Integer.valueOf(adminData.getSerial()));
                                 managerToUserCard.setDeviceNumberl(Integer.valueOf(adminData.getAddressCode()));
                                 managerToUserCard.setTotalElectric(manageCard.getTotalElectric());
-                                if (nfcWriteHelper.writeData(managerToUserCard.getZeroBytes(),1,0)){
+                                if (nfcWriteHelper.writeData(managerToUserCard.getZeroBytes(), 1, 0)) {
                                     TipUtil.show(ReadCardAcitivy.this, "琛ュ崱鎴愬姛", () -> ReadCardAcitivy.this.finish());
-                                }else {
+                                } else {
                                     TipUtil.show(ReadCardAcitivy.this, "琛ュ崱澶辫触锛岃閲嶆柊鍒峰崱", () -> ReadCardAcitivy.this.finish());
                                 }
 
 
                             } catch (Exception e) {
-                               e.printStackTrace();
+                                e.printStackTrace();
                             }
                             stopAnim();
                         }
@@ -237,8 +210,7 @@
                 if (!data.isEmpty()) {
                     RegionCard regionCard = RegionCard.getBean(data);
                     StringBuilder stringBuilder = new StringBuilder();
-                    stringBuilder.append("鍖哄煙鍦板潃锛�").append(regionCard.getRegion()).append("\n");
-                    stringBuilder.append("鎺у埗鍣ㄧ紪鍙凤細").append(regionCard.getControllerCodel()).append("\n");
+                    stringBuilder.append("鍖哄煙鍙凤細").append(regionCard.getArerNumber());
                     redCardBinding.readCardDataTV.setText(stringBuilder.toString());
                 } else {
                     TipUtil.show("鍗$墖璇嗗埆閿欒,璇烽噸璇曪紒");
@@ -285,5 +257,48 @@
         // or avi.smoothToHide();
     }
 
+    /**
+     * 鑾峰彇鍗′俊鎭拰鐢ㄦ埛淇℃伅
+     *
+     * @param iccardCode
+     */
+    public void getUserInfoAndCardInfo(String iccardCode) {
+        Map<String, Object> data = new HashMap<>();
+        //ic鍗′俊鎭痠d
+        data.put("iccardNum", iccardCode);
+        ApiManager.getInstance().requestPostLoading(this, "api/sjgg/iccard/peasant/getIccardInfoVoByCardCode", CardInfoResult.class, data, new SubscriberListener<BaseResponse<CardInfoResult>>() {
+            @Override
+            public void onNext(BaseResponse<CardInfoResult> t) {
+                String state = "";
+                if (t.isSuccess()) {
+                    setUserData(t.getData());
+                }
+            }
+        });
+    }
+
+    private void setUserData(CardInfoResult cardInfoResult) {
+        viweGone(true);
+        if (cardInfoResult != null) {
+            redCardBinding.redName.setText(cardInfoResult.getPeasantName());
+            redCardBinding.redCardCode.setText(cardNumber);
+            redCardBinding.redUserCode.setText(cardInfoResult.getIccardCode());
+            redCardBinding.redBlance.setText(MornyUtil.changeF2Y(userCard.getBalance())+"鍏�");
+            redCardBinding.redElectric.setText(MornyUtil.changeF2Y(userCard.getSurplusElecticity())+"搴�");
+            redCardBinding.redTotalMorny.setText(MornyUtil.changeF2Y(userCard.getTotalMorny())+"鍏�");
+            redCardBinding.redPhone.setText(cardInfoResult.getPeasantPhone());
+            redCardBinding.redCodeId.setText(cardInfoResult.getPeasantIdNumber());
+            if (cardInfoResult.getIccardStatus() == 0) {
+                redCardBinding.redStatu.setText("姝e父");
+            } else if (cardInfoResult.getIccardStatus() == 1) {
+                redCardBinding.redStatu.setText("宸叉敞閿�");
+            } else {
+                redCardBinding.redStatu.setText("宸叉寕澶�");
+            }
+
+        }
+
+
+    }
 
 }
diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/RechargeActivity.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/RechargeActivity.java
index b95f18c..3dc5ce1 100644
--- a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/RechargeActivity.java
+++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/RechargeActivity.java
@@ -1,6 +1,7 @@
 package com.dayu.qiheonlinelibrary.activity;
 
 import android.annotation.SuppressLint;
+import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
 import android.text.Editable;
@@ -11,22 +12,37 @@
 import android.widget.EditText;
 
 import com.dayu.baselibrary.tools.HexUtil;
+import com.dayu.baselibrary.utils.DeviceUtils;
 import com.dayu.baselibrary.utils.MornyUtil;
 import com.dayu.baselibrary.utils.TipUtil;
 
 
+import com.dayu.baselibrary.utils.ToastUtil;
+import com.dayu.baselibrary.view.TipDialog;
+import com.dayu.qiheonlinelibrary.QHOnLineApplication;
 import com.dayu.qiheonlinelibrary.R;
+import com.dayu.qiheonlinelibrary.bean.CardInfoResult;
+import com.dayu.qiheonlinelibrary.bean.RechargeResult;
 import com.dayu.qiheonlinelibrary.card.UserCard;
 import com.dayu.qiheonlinelibrary.databinding.ActivityRechargeQhlBinding;
 import com.dayu.qiheonlinelibrary.dbBean.AdminDataBean;
 import com.dayu.qiheonlinelibrary.dbBean.ElectricPriceBean;
+import com.dayu.qiheonlinelibrary.dbBean.RechargeBean;
 import com.dayu.qiheonlinelibrary.dbBean.UserCardBean;
+import com.dayu.qiheonlinelibrary.net.ApiManager;
+import com.dayu.qiheonlinelibrary.net.BaseResponse;
+import com.dayu.qiheonlinelibrary.net.RSAUtile;
+import com.dayu.qiheonlinelibrary.net.subscribers.SubscriberListener;
 import com.dayu.qiheonlinelibrary.tools.NfcReadHelper;
 import com.dayu.qiheonlinelibrary.utils.CardCommon;
 import com.tencent.bugly.crashreport.CrashReport;
 
+import java.text.SimpleDateFormat;
 import java.util.Calendar;
+import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 
 /**
@@ -42,13 +58,15 @@
     ActivityRechargeQhlBinding binding;
     public static RechargeActivity rechargeActivity;
 
-    AdminDataBean adminData;
-    String userName;
-    String cardNumber = null;
-    UserCardBean userCardBean;
-    int waterPrice;
+
+    String cardNumber = null;//瀹炰綋鍗″彿
+    RechargeBean rechargeBean;
+
     String rechageWater;//鍏呭�肩殑姘撮噺
-    ElectricPriceBean priceBean;
+
+    String cardType;//鍗$姸鎬�
+
+    CardInfoResult cardInfoResult;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -58,7 +76,6 @@
             setContentView(binding.getRoot());
             setPricePoint(binding.rechargeWater);
             rechargeActivity = this;
-            waterPrice = baseDao.adminDao().findFirst().getWaterPrice();
             initView();
         } catch (Exception e) {
             e.printStackTrace();
@@ -79,98 +96,50 @@
 
 
     private void readAllData() {
-        String cardType = NfcReadHelper.getInstence(intent, this).getCradTypeAndCardNumber();
+        cardType = NfcReadHelper.getInstence(intent, this).getCradTypeAndCardNumber();
 
         String[] cardTypes = cardType.split(",");
         if (cardTypes != null && cardTypes.length == 2) {
             cardNumber = cardType.split(",")[0];
-            cardNumber = HexUtil.spaceHex(cardNumber);
-            cardNumber = HexUtil.HighLowHex(cardNumber);
             cardType = cardType.split(",")[1];
         }
-        List<byte[]> data = NfcReadHelper.getInstence(intent, this).getOnesectorData();
+        getUserInfoAndCardInfo(cardNumber);
 
-        if (!data.isEmpty()) {
-            if (!TextUtils.isEmpty(cardNumber)) {
-                setUserData(cardType, cardNumber, data);
-                if(priceBean!=null){
-                    binding.redRechargeElectric.setText("鐢甸噺鍗曚环锛�"+priceBean.getPrice()+"鍏�/搴�");
-                }
-            } else {
-                TipUtil.show(this, "璇诲彇鍗$墖澶辫触锛岃閲嶆柊璐村崱");
-            }
-        } else {
-            TipUtil.show(this, "鍗$墖璇嗗埆閿欒,璇烽噸璇曪紒");
-        }
     }
 
 
-    @SuppressLint("ResourceAsColor")
-    private void setUserData(String cardType, String cardNumber, List<byte[]> data) {
-
-
+    private void setUserData(String cardNumber, String userName, String lastRechargeTime, float iccardBalanceMoney, List<byte[]> data) {
         String state = "";
         if (cardType.equalsIgnoreCase(CardCommon.USER_CARD_TYPE_1)) {
             state = "缁堢鍐欏崱";
             binding.rechargeLL.setVisibility(View.VISIBLE);
             binding.rechargeRegistBtn.setVisibility(View.VISIBLE);
-            binding.redStatu.setTextColor(R.color.black);
+            binding.redStatu.setTextColor(this.getResources().getColor(R.color.black));
         } else if (cardType.equalsIgnoreCase(CardCommon.USER_CARD_TYPE_2)) {
-            state = "鏈埛鍗″叧娉�,褰撳墠涓嶅彲鍏呭��";
-            binding.rechargeLL.setVisibility(View.GONE);
-            binding.rechargeRegistBtn.setVisibility(View.GONE);
-            binding.redStatu.setTextColor(com.dayu.baselibrary.R.color.red);
+            setCardState("鏈埛鍗″叧娉�,褰撳墠涓嶅彲鍏呭��");
         } else if (cardType.equalsIgnoreCase(CardCommon.USER_CARD_TYPE_3)) {
-            state = "鍙犲姞鍏呭��";
-            binding.rechargeLL.setVisibility(View.GONE);
-            binding.rechargeRegistBtn.setVisibility(View.GONE);
+            setCardState("鍙犲姞鍏呭��");
         } else {
             TipUtil.show(this, "闈炵敤鎴峰崱锛屼笉鑳藉厖鍊�");
             return;
         }
 
-
         userCard = UserCard.getBean(data);
-        List<UserCardBean> userCardBeans = baseDao.userCardDao().findUserName(cardNumber);
-        AdminDataBean adminDataBean = baseDao.adminDao().findFirst();
 
+        if (Integer.valueOf(QHOnLineApplication.getInstance().arerNumber) == userCard.getArerNumber()) {
 
-        if (Integer.valueOf(adminDataBean.getAddressCode()) == userCard.getArerNumber()) {
-            if (!userCardBeans.isEmpty()) {
-                userCardBean = userCardBeans.get(0);
-                this.userName = userCardBean.getUserName();
-            } else {
-                userCardBean = new UserCardBean();
-                userCardBean.setCardNumber(cardNumber);
-                userCardBean.setUserName("鏈煡鐢ㄦ埛");
-                userCardBean.setPhone("鏈煡");
-                userCardBean.setUserID("鏈煡");
-                userCardBean.setAddressCode(String.valueOf(userCard.getArerNumber()));
-                userCardBean.setSerial(String.valueOf(userCard.getArerNumber()));
-                this.userName = "鏈煡鐢ㄦ埛";
-            }
             binding.rechargeReadLL.setVisibility(View.GONE);
             binding.rechargeTextLL.setVisibility(View.VISIBLE);
             binding.userName.setText(userName);
             binding.redStatu.setText(state);
+            binding.redInitCode.setText(cardNumber);
+            binding.redRechargeDate.setText("鏈崱鏈�鍚庤喘姘存棩鏈燂細\n\n" + lastRechargeTime);
             if (userCard != null) {
-                Calendar calendar = userCard.getRechargeDate();
-                if (calendar != null) {
-                    int year = calendar.get(Calendar.YEAR);
-                    int month = calendar.get(Calendar.MONTH); // 鏈堜唤浠�0寮�濮嬶紝鎵�浠ラ渶瑕佸姞1
-                    int day = calendar.get(Calendar.DAY_OF_MONTH);
-                    binding.redRechargeDate.setText("鏈崱鏈�鍚庤喘姘存棩鏈燂細" + year + "骞�" + month + "鏈�" + day + "鏃�");
-                } else {
-                    binding.redRechargeDate.setText("鏈崱鏈�鍚庤喘姘存棩鏈燂細鏃�");
-                }
-                binding.redInitCode.setText(cardNumber);
-//                binding.redRechargeNumber.setText("鏈崱鍏呭�兼鏁帮細" + userCard.getRechargeTimes() + " 娆�");
-//                binding.redTotalWater.setText("鎬荤敤姘撮噺锛�" + MornyUtil.changeF2Y(userCard.getTotalWater()) + " 鍚�");
-//                binding.redTotalPower.setText("鎬荤敤鐢甸噺锛�" + MornyUtil.changeF2Y(userCard.getTotalElectric()) + " 搴�");
-                binding.redRemainderBlance.setText(MornyUtil.changeF2Y(userCard.getBalance()) + " 鍏�");
-                binding.redRemainderWater.setText("鍓╀綑姘撮噺锛�" + MornyUtil.changeF2Y(userCard.getSurplusWater()) + " 鍚�");
-//                binding.redWaterPrice.setText("姣忕珛鏂圭背姘翠环鏍硷細" + MornyUtil.changeF2Y(adminData.getWaterPrice()) + " 鍏�");
+
+                binding.redRemainderBlance.setText(String.valueOf(iccardBalanceMoney) + " 鍏�");
             }
+
+            binding.redRechargeElectric.setText("鐢甸噺鍗曚环锛�" + QHOnLineApplication.getInstance().electriclePriceStr + "鍏�/搴�");
 
         } else {
             TipUtil.show(this, "闈炴湰鍖哄煙鍗n涓嶈兘鍏呭�硷紒锛侊紒");
@@ -179,29 +148,13 @@
 
     }
 
-
     private void initView() {
-        try {
-            adminData = baseDao.adminDao().findFirst();
-            priceBean = baseDao.electricPriceDao().findFirst();
-        } catch (Exception e) {
-            e.printStackTrace();
-            CrashReport.postCatchedException(e);
-        }
         binding.rechargeRegistBtn.setOnClickListener(v -> {
             String morny = binding.rechargeWater.getText().toString();
             if (!TextUtils.isEmpty(morny)) {
-                Intent intent = new Intent(RechargeActivity.this, NFCWreatActivity.class);
-                //褰撳墠閲戦鍗曚綅涓哄厓
-                intent.putExtra("morny", morny);
-                intent.putExtra("userName", userName);
-                intent.putExtra("cardNumber", cardNumber);
-                intent.putExtra("userCard", userCard);
-                intent.putExtra("userCardBean", userCardBean);
-//                intent.putExtra("rechageWater", rechageWater);
-                startActivity(intent);
+                rechaege(morny);
             } else {
-                TipUtil.show(RechargeActivity.this, "璇疯緭鍏ュ厖鍊奸噾棰濓紙鍏冿級");
+                TipUtil.show(RechargeActivity.this, "璇疯緭鍏ュ厖鍊奸噾棰�");
             }
         });
     }
@@ -236,7 +189,7 @@
                 }
                 String morny = editText.getText().toString();
                 if (!TextUtils.isEmpty(morny)) {
-                    rechageWater = MornyUtil.intDiv(MornyUtil.changeY2F(editText.getText().toString()), waterPrice);
+//                    rechageWater = MornyUtil.intDiv(MornyUtil.changeY2F(editText.getText().toString()), waterPrice);
 //                    binding.redRechargeWater.setText("鍏呭�兼按閲忥細" + rechageWater + " 绔嬫柟绫�(鍚�)");
                 }
 
@@ -264,4 +217,126 @@
         super.onDestroy();
         rechargeActivity = null;
     }
+
+
+    private void startNfcActivity(String morny, String balance, float rechargeElectric, float iccardBalanceElectric, float totalMorny, String iccardRechargeRecordId) {
+
+        //娣诲姞鍏呭�间俊鎭�
+        rechargeBean = new RechargeBean();
+        rechargeBean.setCardNumber(cardNumber);
+        rechargeBean.setUserCode(userCard.getUserCode());
+        rechargeBean.setUserName("");
+        rechargeBean.setPersonId(cardInfoResult.getPeasantId());
+        rechargeBean.setSerial(DeviceUtils.getSN());
+        rechargeBean.setArerNumber(QHOnLineApplication.getInstance().arerNumber);
+        rechargeBean.setMorny(morny);
+        rechargeBean.setBalance(balance);
+        rechargeBean.setRechargeElectric(String.valueOf(rechargeElectric));
+        rechargeBean.setPrice(QHOnLineApplication.getInstance().electriclePriceStr);
+        rechargeBean.setSurplusElectic(String.valueOf(iccardBalanceElectric));
+        long time = System.currentTimeMillis();
+        rechargeBean.setRechargeDate(time);
+        rechargeBean.setUserId("");
+        rechargeBean.setTotalMorny(String.valueOf(totalMorny));
+        rechargeBean.setState(1);
+        rechargeBean.setOrderId(iccardRechargeRecordId);
+
+        userCard.setCardWriteState(0);
+        userCard.setCardState(1);
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTimeInMillis(time);
+        userCard.setBalance(MornyUtil.changeY2F(String.valueOf(balance)));
+        userCard.setSurplusElecticity(MornyUtil.changeY2F(String.valueOf(iccardBalanceElectric)));
+        String sumMorny = MornyUtil.sumPrice(Float.valueOf(MornyUtil.changeF2Y(userCard.getTotalMorny())), Float.valueOf(morny));
+        userCard.setTotalMorny(MornyUtil.changeY2F(sumMorny));
+        userCard.setRechargeDate(calendar);
+
+
+        Intent intent = new Intent(RechargeActivity.this, NFCWreatActivity.class);
+        intent.putExtra("morny", morny);
+        intent.putExtra("userCard", userCard);
+        intent.putExtra("rechargeBean", rechargeBean);
+        startActivity(intent);
+    }
+
+
+    /**
+     * IC鍗″厖鍊�
+     *
+     * @param morny
+     */
+    public void rechaege(String morny) {
+        Map<String, Object> data = new HashMap<>();
+        //缁堢璁惧鍙�
+        data.put("equipCode", DeviceUtils.getSN());
+        //ic鍗′俊鎭痠d
+        data.put("iccardNum", cardNumber);
+        //浜ゆ槗姘磋垂閲戦锛堝厓锛�
+        data.put("rechargeWaterMoney", morny);
+        //鍗″唴鍓╀綑閲戦锛堝厓锛�
+        data.put("iccardBalanceMoney", MornyUtil.changeF2Y(userCard.getBalance()));
+        //鍗″唴鍓╀綑姘撮噺锛坢鲁锛�
+        data.put("iccardBalanceAmonunt", "0");
+        //鍗″唴鍓╀綑鐢甸噺
+        data.put("iccardBalanceElectric", MornyUtil.changeF2Y(userCard.getSurplusElecticity()));
+        ApiManager.getInstance().requestPostLoading(this, "api/sjgg/iccard/recharge/rechargeCard", RechargeResult.class, data, new SubscriberListener<BaseResponse<RechargeResult>>() {
+            @Override
+            public void onNext(BaseResponse<RechargeResult> t) {
+                if (t.isSuccess()) {
+                    RechargeResult rechargeResult = t.getData();
+                    startNfcActivity(morny, rechargeResult.getIccardBalanceMoney(), rechargeResult.getRechargeElectricAmount(), rechargeResult.getIccardBalanceElectric(), rechargeResult.getTotalRechargeMoney(), rechargeResult.getIccardRechargeRecordId());
+                }
+            }
+        });
+    }
+
+
+    /**
+     * 鑾峰彇鍗′俊鎭拰鐢ㄦ埛淇℃伅
+     *
+     * @param iccardCode
+     */
+    public void getUserInfoAndCardInfo(String iccardCode) {
+        Map<String, Object> data = new HashMap<>();
+        //ic鍗′俊鎭痠d
+        data.put("iccardNum", iccardCode);
+        ApiManager.getInstance().requestPostLoading(this, "api/sjgg/iccard/peasant/getIccardInfoVoByCardCode", CardInfoResult.class, data, new SubscriberListener<BaseResponse<CardInfoResult>>() {
+            @Override
+            public void onNext(BaseResponse<CardInfoResult> t) {
+                String state = "";
+                if (t.isSuccess()) {
+                    //ic鍗$姸鎬� 0 姝e父 1 宸叉敞閿� 2 宸叉寕澶�
+                    if (t.getData().getIccardStatus() == 0) {
+                        List<byte[]> data = NfcReadHelper.getInstence(intent, RechargeActivity.this).getOnesectorData();
+                        if (!data.isEmpty()) {
+                            if (!TextUtils.isEmpty(cardNumber)) {
+                                cardInfoResult = t.getData();
+                                setUserData(cardNumber, cardInfoResult.getPeasantName(), cardInfoResult.getLastRechargeTime(), cardInfoResult.getIccardBalanceMoney(), data);
+                            } else {
+                                TipUtil.show(RechargeActivity.this, "璇诲彇鍗$墖澶辫触锛岃閲嶆柊璐村崱");
+                            }
+                        } else {
+                            TipUtil.show(RechargeActivity.this, "鍗$墖璇嗗埆閿欒,璇烽噸璇曪紒");
+                        }
+                    } else if (t.getData().getIccardStatus() == 1) {
+                        TipUtil.show(RechargeActivity.this, "褰撳墠鍗″凡娉ㄩ攢");
+                    } else {
+                        TipUtil.show(RechargeActivity.this, "褰撳墠鍗″凡鎸傚け");
+                    }
+
+
+                }
+            }
+        });
+    }
+
+
+    private void setCardState(String state) {
+        binding.rechargeLL.setVisibility(View.GONE);
+        binding.rechargeRegistBtn.setVisibility(View.GONE);
+        binding.redStatu.setTextColor(RechargeActivity.this.getResources().getColor(com.dayu.baselibrary.R.color.red));
+        binding.redStatu.setText(state);
+    }
+
+
 }
diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/RechargeDetailActivity.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/RechargeDetailActivity.java
index 9db5b53..b1eac98 100644
--- a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/RechargeDetailActivity.java
+++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/RechargeDetailActivity.java
@@ -69,7 +69,7 @@
         }
         binding.redName.setText("鐢ㄦ埛濮撳悕锛�" + userName);
 //        binding.redRemainderBlance.setText("鍓╀綑閲戦锛�" + MornyUtil.changeF2Y(balance) + " 鍏�");
-        binding.redSurplusWater.setText("鍓╀綑姘撮噺锛�" + MornyUtil.changeF2Y(userCard.getSurplusWater()) + " 鍚�");
+//        binding.redSurplusWater.setText("鍓╀綑姘撮噺锛�" + MornyUtil.changeF2Y(userCard.getSurplusWater()) + " 鍚�");
         binding.redStatu.setText("鍗$姸鎬侊細" + statu);
         if (userCard != null) {
             binding.redInitCode.setText("褰撳墠鍗″彿锛�" + cardNumber);
diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/SysActivity.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/SysActivity.java
index 87f98e8..5e03ddf 100644
--- a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/SysActivity.java
+++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/SysActivity.java
@@ -2,9 +2,11 @@
 
 import android.content.Intent;
 import android.os.Bundle;
+import android.text.TextUtils;
 import android.view.LayoutInflater;
 
 import com.dayu.baselibrary.utils.TipUtil;
+import com.dayu.qiheonlinelibrary.QHOnLineApplication;
 import com.dayu.qiheonlinelibrary.card.CleanCard;
 import com.dayu.qiheonlinelibrary.card.ElectricPriceCard;
 import com.dayu.qiheonlinelibrary.card.PassWordCard;
@@ -41,7 +43,7 @@
         //鍒朵綔绠$悊鍗�
         adminBinding.adminAdmin.setOnClickListener(v -> {
 
-            AdminCardDialog dialog=new AdminCardDialog(this);
+            AdminCardDialog dialog = new AdminCardDialog(this);
             dialog.show();
 
         });
@@ -71,23 +73,21 @@
 
             Intent intent = new Intent(SysActivity.this, NFCWreatActivity.class);
             RegionCard regionCard = new RegionCard();
-            AdminDataBean adminDataBean = baseDao.adminDao().findFirst();
-            regionCard.setRegion(Integer.valueOf(adminDataBean.getAddressCode()));
-            regionCard.setControllerCodel(Integer.valueOf(adminDataBean.getAddressCode()));
+            regionCard.setArerNumber(Integer.valueOf(QHOnLineApplication.getInstance().arerNumber));
             intent.putExtra("regionCard", regionCard);
             startActivity(intent);
         });
         //鍒朵綔璁剧疆鐢ㄦ埛鐢甸噺鍗曚环鍗�
         adminBinding.adminElectricCard.setOnClickListener(v -> {
             Intent intent = new Intent(SysActivity.this, NFCWreatActivity.class);
-            ElectricPriceBean electricPriceBean = baseDao.electricPriceDao().findFirst();
-            if (electricPriceBean != null) {
+
+            if (!TextUtils.isEmpty(QHOnLineApplication.getInstance().electriclePriceStr)) {
                 ElectricPriceCard electricPriceCard = new ElectricPriceCard();
-                electricPriceCard.setElectricPrice(electricPriceBean.getPrice());
+                electricPriceCard.setElectricPrice(Float.valueOf(QHOnLineApplication.getInstance().electriclePriceStr));
                 intent.putExtra("electricPriceCard", electricPriceCard);
                 startActivity(intent);
             } else {
-                TipUtil.show(this, "璇峰厛鍦ㄥ弬鏁拌缃唴璁剧疆鐢甸噺鍗曚环");
+                TipUtil.show(this, "鏈幏鍙栧埌鐢典环");
             }
 
         });
diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/UserSearchActivity.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/UserSearchActivity.java
new file mode 100644
index 0000000..b45759d
--- /dev/null
+++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/UserSearchActivity.java
@@ -0,0 +1,131 @@
+package com.dayu.qiheonlinelibrary.activity;
+
+import static com.dayu.baselibrary.view.TitleBar.ClickType_RIGHT_TEXT;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+
+import androidx.recyclerview.widget.LinearLayoutManager;
+
+import com.dayu.qiheonlinelibrary.adapter.UserSearchAdapter;
+import com.dayu.qiheonlinelibrary.bean.UserListResult;
+import com.dayu.qiheonlinelibrary.databinding.ActivityUserSearchQhlBinding;
+import com.dayu.qiheonlinelibrary.net.ApiManager;
+import com.dayu.qiheonlinelibrary.net.BaseResponse;
+import com.dayu.qiheonlinelibrary.net.subscribers.SubscriberListener;
+import com.dayu.qiheonlinelibrary.view.UserSearchDialog;
+import com.scwang.smart.refresh.footer.ClassicsFooter;
+import com.scwang.smart.refresh.layout.api.RefreshLayout;
+import com.scwang.smart.refresh.layout.listener.OnLoadMoreListener;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * author: zuo
+ * Date: 2024-08-07
+ * Time: 18:13
+ * 澶囨敞锛氱敤鎴锋悳绱�
+ */
+public class UserSearchActivity extends BaseActivity {
+    ActivityUserSearchQhlBinding binding;
+    UserSearchDialog userSearchDialog;
+    RefreshLayout myRefreshLayout;
+    UserSearchAdapter adapter;
+
+    int page = 1;
+    int size = 10;
+    String name;
+    String cardID;
+    List<UserListResult.Records> records = new ArrayList<>();
+
+    int type;//褰撳墠鎿嶄綔绫诲瀷
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        binding = ActivityUserSearchQhlBinding.inflate(LayoutInflater.from(this));
+        setContentView(binding.getRoot());
+        type = this.getIntent().getIntExtra("type", 0);
+        initView();
+        showDialog();
+    }
+
+    private void initView() {
+        myRefreshLayout = (RefreshLayout) binding.refreshLayout;
+        myRefreshLayout.setEnableRefresh(false);
+        myRefreshLayout.setRefreshFooter(new ClassicsFooter(this));
+        myRefreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
+            @Override
+            public void onLoadMore(RefreshLayout refreshlayout) {
+                page = page + 1;
+                selectUser(cardID, name, false);
+            }
+        });
+        adapter = new UserSearchAdapter(this, records, new UserSearchAdapter.OnItemClickListener() {
+            @Override
+            public void onItemClick(int position) {
+                Intent intent = new Intent(UserSearchActivity.this, CardSearchActivity.class);
+                intent.putExtra("pearsontId", records.get(position).getPeasantId());
+                intent.putExtra("type", type);
+                UserSearchActivity.this.startActivity(intent);
+                UserSearchActivity.this.finish();
+            }
+        });
+        LinearLayoutManager layoutManager = new LinearLayoutManager(this);
+        binding.recyclerView.setLayoutManager(layoutManager);
+        binding.recyclerView.setAdapter(adapter);
+        titleBar.setOnItemclickListner(ClickType_RIGHT_TEXT, new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                showDialog();
+            }
+        });
+
+    }
+
+    private void showDialog() {
+        userSearchDialog = new UserSearchDialog(this, (name, cardId) -> {
+            UserSearchActivity.this.name = name;
+            UserSearchActivity.this.cardID = cardId;
+
+            selectUser(cardId, name, true);
+        });
+        userSearchDialog.show();
+    }
+
+    /**
+     * 鏌ヨ鐢ㄦ埛
+     *
+     * @param peasantIdNumber
+     */
+    private void selectUser(String peasantIdNumber, String name, boolean isRefresh) {
+        if (isRefresh) {
+            page = 1;
+            records.clear();
+        }
+        Map<String, Object> data = new HashMap<>();
+        data.put("peasantIdNumber", peasantIdNumber);
+        data.put("peasantName", name);
+        data.put("current", page);
+        data.put("pageSize", size);
+        ApiManager.getInstance().requestPostLoading(this, "api/sjgg/base/peasant/pagePeasantVo", UserListResult.class, data, new SubscriberListener<BaseResponse<UserListResult>>() {
+            @Override
+            public void onNext(BaseResponse<UserListResult> t) {
+                if (t.isSuccess()) {
+                    if (t.getData().getTotal() == records.size()) {
+                        myRefreshLayout.finishLoadMoreWithNoMoreData();
+                    } else {
+                        records.addAll(t.getData().getRecords());
+                    }
+                    adapter.notifyDataSetChanged();
+                    myRefreshLayout.finishLoadMore();
+                }
+            }
+        });
+    }
+}
diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/adapter/CardAdapter.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/adapter/CardAdapter.java
new file mode 100644
index 0000000..6ecc6fa
--- /dev/null
+++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/adapter/CardAdapter.java
@@ -0,0 +1,121 @@
+package com.dayu.qiheonlinelibrary.adapter;
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.ViewGroup;
+
+import androidx.annotation.NonNull;
+import androidx.databinding.DataBindingUtil;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.dayu.baselibrary.databinding.ItemNoMoreBinding;
+import com.dayu.qiheonlinelibrary.R;
+import com.dayu.qiheonlinelibrary.bean.CardInfoListResult;
+import com.dayu.qiheonlinelibrary.bean.UserListResult;
+import com.dayu.qiheonlinelibrary.databinding.QiheLineItemUserBinding;
+import com.dayu.qiheonlinelibrary.databinding.QiheLineItenCardBinding;
+
+import java.util.List;
+
+/**
+ * author: zuo
+ * Date: 2024-08-08
+ * Time: 17:26
+ * 澶囨敞锛�
+ */
+public class CardAdapter extends BaseRecyclerAdapter<RecyclerView.ViewHolder> {
+
+    List<CardInfoListResult.Records> records;
+    Context mContext;
+    OnItemClickListener onItemClickListener;
+
+    public interface OnItemClickListener {
+        void onItemClick(int position);
+    }
+
+    public CardAdapter(Context context, List<CardInfoListResult.Records> rechargeList, OnItemClickListener onItemClickListener) {
+        mContext = context;
+        this.onItemClickListener = onItemClickListener;
+        this.records = rechargeList;
+    }
+
+
+    @NonNull
+    @Override
+    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+        if (viewType == VIEW_TYPE_EMPTY) {
+            ItemNoMoreBinding emptyView = DataBindingUtil.inflate((LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE), com.dayu.baselibrary.R.layout.item_no_more, parent, false);
+            return new ViewHolderEmpty(emptyView);
+        } else {
+            QiheLineItenCardBinding binding = DataBindingUtil.inflate((LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE), R.layout.qihe_line_iten_card, parent, false);
+
+            return new ViewHolder(binding);
+        }
+
+    }
+
+    @Override
+    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
+        if (holder instanceof ViewHolder) {
+            if (records.size() > 0) {
+                try {
+                    CardInfoListResult.Records record = records.get(position);
+                    ((ViewHolder) holder).getBinding().cardId.setText(record.getIccardNum());
+                    ((ViewHolder) holder).getBinding().userCode.setText(record.getIccardCode());
+                    ((ViewHolder) holder).getBinding().balance.setText(record.getIccardBalanceMoney() + "鍏�");
+                    ((ViewHolder) holder).getBinding().totalMorny.setText(record.getTotalRechargeMoney() + "鍏�");
+                    ((ViewHolder) holder).getBinding().balanceElectic.setText(record.getIccardBalanceElectric());
+                    ((ViewHolder) holder).getBinding().lastRechargeTime.setText("鏈�鍚庡厖鍊兼椂闂达細" + record.getLastRechargeTime());
+                    if (record.getIccardStatus() == 0) {
+                        ((ViewHolder) holder).getBinding().state.setText("姝e父");
+                    } else if (record.getIccardStatus() == 1) {
+                        ((ViewHolder) holder).getBinding().state.setText("宸叉敞閿�");
+                    } else {
+                        ((ViewHolder) holder).getBinding().state.setText("宸叉寕澶�");
+                    }
+                    ((ViewHolder) holder).getBinding().item.setOnClickListener(v -> onItemClickListener.onItemClick(position));
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+    }
+
+    @Override
+    public int getItemCount() {
+        //鍚屾椂杩欓噷涔熼渶瑕佹坊鍔犲垽鏂紝濡傛灉mData.size()涓�0鐨勮瘽锛屽彧寮曞叆涓�涓竷灞�锛屽氨鏄痚mptyView
+        // 閭d箞锛岃繖涓猺ecyclerView鐨刬temCount涓�1
+        if (records.size() == 0) {
+            return 1;
+        }
+        return records.size();
+    }
+
+    @Override
+    public int getItemViewType(int position) {
+        if (records.size() == 0) {
+            return VIEW_TYPE_EMPTY;
+        } else {
+            return VIEW_TYPE_ITEM;
+        }
+    }
+
+
+    static class ViewHolder extends RecyclerView.ViewHolder {
+        QiheLineItenCardBinding mBinding;
+
+        public QiheLineItenCardBinding getBinding() {
+            return mBinding;
+        }
+
+        public void setBinding(QiheLineItenCardBinding binding) {
+            this.mBinding = binding;
+        }
+
+        public ViewHolder(QiheLineItenCardBinding itemView) {
+            super(itemView.getRoot());
+            this.mBinding = itemView;
+
+        }
+    }
+}
diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/adapter/RechargeAdapter.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/adapter/RechargeAdapter.java
index 070d9c7..99ac7e7 100644
--- a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/adapter/RechargeAdapter.java
+++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/adapter/RechargeAdapter.java
@@ -55,7 +55,7 @@
 //                ((ViewHolder) holder).getBinding().rachagerWater.setText("鍏呭�兼按閲�:" + rechargeList.get(position).getRechargeWater() + " 鍚�");
                 ((ViewHolder) holder).getBinding().balance.setText("鍏呭�兼椂浣欓:" + rechargeList.get(position).getBalance() + " 鍏�");
 //                ((ViewHolder) holder).getBinding().surplusWater.setText("鍓╀綑姘撮噺:" + rechargeList.get(position).getSurplusWater()  + " 鍚�");
-                ((ViewHolder) holder).getBinding().date.setText("鏃ユ湡:" + DateUtil.dateToStamp(rechargeList.get(position).getDate(), DateUtil.type1));
+                ((ViewHolder) holder).getBinding().date.setText("鏃ユ湡:" + DateUtil.dateToStamp(rechargeList.get(position).getRechargeDate(), DateUtil.type1));
             }
         }
     }
diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/adapter/UserSearchAdapter.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/adapter/UserSearchAdapter.java
new file mode 100644
index 0000000..bac6a4f
--- /dev/null
+++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/adapter/UserSearchAdapter.java
@@ -0,0 +1,111 @@
+package com.dayu.qiheonlinelibrary.adapter;
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.ViewGroup;
+
+import androidx.annotation.NonNull;
+import androidx.databinding.DataBindingUtil;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.dayu.baselibrary.databinding.ItemNoMoreBinding;
+import com.dayu.qiheonlinelibrary.R;
+import com.dayu.qiheonlinelibrary.bean.UserListResult;
+import com.dayu.qiheonlinelibrary.databinding.QiheLineItemUserBinding;
+
+import java.util.List;
+
+/**
+ * author: zuo
+ * Date: 2024-08-08
+ * Time: 10:13
+ * 澶囨敞锛�
+ */
+public class UserSearchAdapter extends BaseRecyclerAdapter<RecyclerView.ViewHolder> {
+
+    List<UserListResult.Records> records;
+    Context mContext;
+    OnItemClickListener onItemClickListener;
+
+    public interface OnItemClickListener {
+        void onItemClick(int position);
+    }
+
+    public UserSearchAdapter(Context context, List<UserListResult.Records> rechargeList, OnItemClickListener onItemClickListener) {
+        mContext = context;
+        this.onItemClickListener = onItemClickListener;
+        this.records = rechargeList;
+    }
+
+
+    @NonNull
+    @Override
+    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+        if (viewType == VIEW_TYPE_EMPTY) {
+            ItemNoMoreBinding emptyView = DataBindingUtil.inflate((LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE), com.dayu.baselibrary.R.layout.item_no_more, parent, false);
+            return new ViewHolderEmpty(emptyView);
+        } else {
+            QiheLineItemUserBinding binding = DataBindingUtil.inflate((LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE), R.layout.qihe_line_item_user, parent, false);
+
+            return new ViewHolder(binding);
+        }
+
+    }
+
+    @Override
+    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
+        if (holder instanceof ViewHolder) {
+            if (records.size() > 0) {
+                try {
+                    ((ViewHolder) holder).getBinding().userName.setText(records.get(position).getPeasantName());
+                    ((ViewHolder) holder).getBinding().cardID.setText(records.get(position).getPeasantIdNumber());
+                    ((ViewHolder) holder).getBinding().phone.setText(records.get(position).getPeasantPhone());
+                    ((ViewHolder) holder).getBinding().address.setText(records.get(position).getAdcdName());
+                    ((ViewHolder) holder).getBinding().state.setText(records.get(position).getState() == 0 ? "鏈惎鐢�" : "鍚敤");
+                    ((ViewHolder) holder).getBinding().item.setOnClickListener(v -> onItemClickListener.onItemClick(position));
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+    }
+
+    @Override
+    public int getItemCount() {
+        //鍚屾椂杩欓噷涔熼渶瑕佹坊鍔犲垽鏂紝濡傛灉mData.size()涓�0鐨勮瘽锛屽彧寮曞叆涓�涓竷灞�锛屽氨鏄痚mptyView
+        // 閭d箞锛岃繖涓猺ecyclerView鐨刬temCount涓�1
+        if (records.size() == 0) {
+            return 1;
+        }
+        return records.size();
+    }
+
+    @Override
+    public int getItemViewType(int position) {
+        if (records.size() == 0) {
+            return VIEW_TYPE_EMPTY;
+        } else {
+            return VIEW_TYPE_ITEM;
+        }
+    }
+
+
+    static class ViewHolder extends RecyclerView.ViewHolder {
+        QiheLineItemUserBinding mBinding;
+
+        public QiheLineItemUserBinding getBinding() {
+            return mBinding;
+        }
+
+        public void setBinding(QiheLineItemUserBinding binding) {
+            this.mBinding = binding;
+        }
+
+        public ViewHolder(QiheLineItemUserBinding itemView) {
+            super(itemView.getRoot());
+            this.mBinding = itemView;
+
+        }
+    }
+}
+
diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/bean/AddUserResult.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/bean/AddUserResult.java
new file mode 100644
index 0000000..4cc68fa
--- /dev/null
+++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/bean/AddUserResult.java
@@ -0,0 +1,22 @@
+package com.dayu.qiheonlinelibrary.bean;
+
+/**
+ * author: zuo
+ * Date: 2024-08-05
+ * Time: 16:13
+ * 澶囨敞锛�
+ */
+public class AddUserResult {
+// {"state":1,"updatedTime":"2024-08-05 16:12:29","accountType":0,"planId":"","preRechargeMoney":0.00,"adcdName":"鐒﹀簷鏉戝浼�","iccardBalanceMoney":"","updatedBy":"1816297106145103873","peasantType":"","compensateMoney":0.00,"createdTime":"2024-08-05 16:12:29","refunds":0.00,"peasantId":"1820372286394867713","priceType":"","createdBy":"1816297106145103873","adcd":"371425102301","peasantIdNumber":"130107199210160023","peasantCode":"37142510230100013","peasantName":"娴嬭瘯","peasantPhone":"15802220723","contractedLandArea":"","address":"","planName":""}
+
+
+    public String peasantId;
+
+    public String getPeasantId() {
+        return peasantId;
+    }
+
+    public void setPeasantId(String peasantId) {
+        this.peasantId = peasantId;
+    }
+}
diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/bean/CardInfoListResult.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/bean/CardInfoListResult.java
new file mode 100644
index 0000000..69d41a1
--- /dev/null
+++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/bean/CardInfoListResult.java
@@ -0,0 +1,165 @@
+package com.dayu.qiheonlinelibrary.bean;
+
+import java.util.List;
+
+/**
+ * author: zuo
+ * Date: 2024-08-08
+ * Time: 14:43
+ * 澶囨敞锛�
+ */
+public class CardInfoListResult {
+
+    int total;//鎬绘暟
+
+    int pages;
+
+    int size;
+
+    List<Records> records;
+
+    public int getTotal() {
+        return total;
+    }
+
+    public void setTotal(int total) {
+        this.total = total;
+    }
+
+    public int getPages() {
+        return pages;
+    }
+
+    public void setPages(int pages) {
+        this.pages = pages;
+    }
+
+    public int getSize() {
+        return size;
+    }
+
+    public void setSize(int size) {
+        this.size = size;
+    }
+
+    public List<Records> getRecords() {
+        return records;
+    }
+
+    public void setRecords(List<Records> records) {
+        this.records = records;
+    }
+
+    public class Records {
+        String iccardInfoId;//ic鍗′俊鎭痠d
+        String iccardNum;//瀹炰綋鍗″彿
+
+        String totalRechargeMoney;//绱鍏呭�奸噾棰濓紙鍏冿級
+
+        int iccardStatus;//ic鍗$姸鎬� 0 姝e父 1 宸叉敞閿� 2 宸叉寕澶�
+        String peasantId;//鐢ㄦ埛id
+
+        String yearRechargeMoney;// 鏈勾鍏呭�奸噾棰�
+
+        String lastRechargeTime;
+
+
+        String iccardOpenTime;//鐢ㄦ埛寮�鍗d
+
+
+        String iccardBalanceMoney;//鍗″唴鍓╀綑閲戦锛堝厓锛�
+
+        String iccardCode;//鐢ㄦ埛鍗″彿锛堝啓鍦ㄥ崱閲岀殑鐢ㄦ埛缂栧彿锛�
+
+        String iccardBalanceElectric;// 鍗″唴鍓╀綑鐢甸噺
+
+        public String getIccardBalanceElectric() {
+            return iccardBalanceElectric;
+        }
+
+        public void setIccardBalanceElectric(String iccardBalanceElectric) {
+            this.iccardBalanceElectric = iccardBalanceElectric;
+        }
+
+        public String getIccardInfoId() {
+            return iccardInfoId;
+        }
+
+        public void setIccardInfoId(String iccardInfoId) {
+            this.iccardInfoId = iccardInfoId;
+        }
+
+        public String getIccardNum() {
+            return iccardNum;
+        }
+
+        public void setIccardNum(String iccardNum) {
+            this.iccardNum = iccardNum;
+        }
+
+        public String getTotalRechargeMoney() {
+            return totalRechargeMoney;
+        }
+
+        public void setTotalRechargeMoney(String totalRechargeMoney) {
+            this.totalRechargeMoney = totalRechargeMoney;
+        }
+
+        public int getIccardStatus() {
+            return iccardStatus;
+        }
+
+        public void setIccardStatus(int iccardStatus) {
+            this.iccardStatus = iccardStatus;
+        }
+
+        public String getPeasantId() {
+            return peasantId;
+        }
+
+        public void setPeasantId(String peasantId) {
+            this.peasantId = peasantId;
+        }
+
+        public String getYearRechargeMoney() {
+            return yearRechargeMoney;
+        }
+
+        public void setYearRechargeMoney(String yearRechargeMoney) {
+            this.yearRechargeMoney = yearRechargeMoney;
+        }
+
+        public String getLastRechargeTime() {
+            return lastRechargeTime;
+        }
+
+        public void setLastRechargeTime(String lastRechargeTime) {
+            this.lastRechargeTime = lastRechargeTime;
+        }
+
+        public String getIccardOpenTime() {
+            return iccardOpenTime;
+        }
+
+        public void setIccardOpenTime(String iccardOpenTime) {
+            this.iccardOpenTime = iccardOpenTime;
+        }
+
+        public String getIccardBalanceMoney() {
+            return iccardBalanceMoney;
+        }
+
+        public void setIccardBalanceMoney(String iccardBalanceMoney) {
+            this.iccardBalanceMoney = iccardBalanceMoney;
+        }
+
+        public String getIccardCode() {
+            return iccardCode;
+        }
+
+        public void setIccardCode(String iccardCode) {
+            this.iccardCode = iccardCode;
+        }
+    }
+
+}
diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/bean/CardInfoResult.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/bean/CardInfoResult.java
new file mode 100644
index 0000000..217d9c2
--- /dev/null
+++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/bean/CardInfoResult.java
@@ -0,0 +1,137 @@
+package com.dayu.qiheonlinelibrary.bean;
+
+/**
+ * author: zuo
+ * Date: 2024-08-06
+ * Time: 16:51
+ * 澶囨敞锛氶�氳繃瀹炰綋鍗″彿鏌ヨ鍒扮殑淇℃伅
+ */
+public class CardInfoResult {
+//{"chargeMethod":"","iccardCancelTime":"","lastRechargeTime":"2024-08-06 15:21:59","thisSaleMoney":"","totalRechargeWaterAmount":0.00,"iccardBalanceAmonunt":0.00,"iccardInfoId":"1820721965431267330","iccardProtocolName":"","totalRechargeElectricAmount":0.00,"logicState":1,"username":"","state":1,"familySize":"","yearRechargeMoney":0.00,"thisSaleAmount":"","onlyRechargeMoney":"","identityCard":"","iccardBrand":"","iccardBalanceMoney":0.00,"openOperatorUsername":"","adName":"","rechargeWaterAmount":"","openOperatorUserId":"1816297106145103873","lastSwipeTime":"","address":"","yearCompensateMoney":0.00,"iccardProtocolOpenMoney":"","peasantId":"1820374742679953410","reissueTimes":0,"iccardProtocolReissueMoney":"","iccardProtocolId":"","yearRechargeWaterAmount":0.00,"iccardBalanceElectric":0.00,"iccardStatus":0,"phone":"","lastRechargeMoney":0.00,"iccardOpenTime":"2024-08-06 15:21:59","yearRechargeElectricAmount":0.00,"reissueRechargeRecordId":"","iccardPrice":1.50,"iccardNum":"3714251023011","accountType":0,"equipCode":"","rechargeWaterMoney":"","totalRechargeMoney":0.00,"executeWaterPrice":"","iccardType":1,"iccardCode":"4440DABA"}
+
+    int iccardStatus;//ic鍗$姸鎬� 0 姝e父 1 宸叉敞閿� 2 宸叉寕澶�
+    String peasantId;//鐢ㄦ埛id
+    float totalRechargeMoney;// 绱鍏呭�奸噾棰�
+    float yearRechargeMoney;// 鏈勾鍏呭�奸噾棰�
+
+    String lastRechargeTime;
+
+    String iccardInfoId;//ic鍗″钩鍙癷d
+
+    String iccardOpenTime;//鐢ㄦ埛寮�鍗d
+
+    float iccardBalanceMoney;//鍗″唴鍓╀綑閲戦锛堝厓锛�
+    String iccardCode;//鐢ㄦ埛鍗″彿锛堝啓鍦ㄥ崱閲岀殑鐢ㄦ埛缂栧彿锛�
+
+    String peasantName;//鐢ㄦ埛鍚嶇О
+
+    String peasantIdNumber;//韬唤璇佸彿
+
+    String peasantPhone;//鎵嬫満鍙�
+
+    String iccardBalanceElectric;// 鍗″唴鍓╀綑鐢甸噺
+
+    public String getIccardBalanceElectric() {
+        return iccardBalanceElectric;
+    }
+
+    public void setIccardBalanceElectric(String iccardBalanceElectric) {
+        this.iccardBalanceElectric = iccardBalanceElectric;
+    }
+
+    public String getPeasantName() {
+        return peasantName;
+    }
+
+    public void setPeasantName(String peasantName) {
+        this.peasantName = peasantName;
+    }
+
+    public String getPeasantIdNumber() {
+        return peasantIdNumber;
+    }
+
+    public void setPeasantIdNumber(String peasantIdNumber) {
+        this.peasantIdNumber = peasantIdNumber;
+    }
+
+    public String getPeasantPhone() {
+        return peasantPhone;
+    }
+
+    public void setPeasantPhone(String peasantPhone) {
+        this.peasantPhone = peasantPhone;
+    }
+
+    public String getIccardCode() {
+        return iccardCode;
+    }
+
+    public void setIccardCode(String iccardCode) {
+        this.iccardCode = iccardCode;
+    }
+
+    public float getIccardBalanceMoney() {
+        return iccardBalanceMoney;
+    }
+
+    public void setIccardBalanceMoney(float iccardBalanceMoney) {
+        this.iccardBalanceMoney = iccardBalanceMoney;
+    }
+
+    public int getIccardStatus() {
+        return iccardStatus;
+    }
+
+    public void setIccardStatus(int iccardStatus) {
+        this.iccardStatus = iccardStatus;
+    }
+
+    public String getPeasantId() {
+        return peasantId;
+    }
+
+    public void setPeasantId(String peasantId) {
+        this.peasantId = peasantId;
+    }
+
+    public float getTotalRechargeMoney() {
+        return totalRechargeMoney;
+    }
+
+    public void setTotalRechargeMoney(float totalRechargeMoney) {
+        this.totalRechargeMoney = totalRechargeMoney;
+    }
+
+    public float getYearRechargeMoney() {
+        return yearRechargeMoney;
+    }
+
+    public void setYearRechargeMoney(float yearRechargeMoney) {
+        this.yearRechargeMoney = yearRechargeMoney;
+    }
+
+    public String getLastRechargeTime() {
+        return lastRechargeTime;
+    }
+
+    public void setLastRechargeTime(String lastRechargeTime) {
+        this.lastRechargeTime = lastRechargeTime;
+    }
+
+    public String getIccardInfoId() {
+        return iccardInfoId;
+    }
+
+    public void setIccardInfoId(String iccardInfoId) {
+        this.iccardInfoId = iccardInfoId;
+    }
+
+    public String getIccardOpenTime() {
+        return iccardOpenTime;
+    }
+
+    public void setIccardOpenTime(String iccardOpenTime) {
+        this.iccardOpenTime = iccardOpenTime;
+    }
+}
diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/bean/LoginResult.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/bean/LoginResult.java
new file mode 100644
index 0000000..64cf5c4
--- /dev/null
+++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/bean/LoginResult.java
@@ -0,0 +1,56 @@
+package com.dayu.qiheonlinelibrary.bean;
+
+import java.util.List;
+
+/**
+ * author: zuo
+ * Date: 2024-07-30
+ * Time: 16:06
+ * 澶囨敞锛�
+ */
+public class LoginResult {
+    //{"code":"0","msg":"鎿嶄綔鎴愬姛","data":{"chargeMethod":"","iccardCancelTime":"","lastRechargeTime":"2024-08-05 17:04:15","thisSaleMoney":"","totalRechargeWaterAmount":0.00,"iccardBalanceAmonunt":0.00,"iccardInfoId":"1820385315354320898","iccardProtocolName":"","totalRechargeElectricAmount":0.00,"logicState":1,"username":"","state":1,"familySize":"","yearRechargeMoney":0.00,"thisSaleAmount":"","onlyRechargeMoney":"","identityCard":"","iccardBrand":"","iccardBalanceMoney":0.00,"openOperatorUsername":"","adName":"","rechargeWaterAmount":"","openOperatorUserId":"1816297106145103873","lastSwipeTime":"","address":"","yearCompensateMoney":0.00,"iccardProtocolOpenMoney":"","peasantId":"1820374742679953410","reissueTimes":0,"iccardProtocolReissueMoney":"","iccardProtocolId":"","yearRechargeWaterAmount":0.00,"iccardBalanceElectric":0.00,"iccardStatus":0,"phone":"","lastRechargeMoney":0.00,"iccardOpenTime":"","yearRechargeElectricAmount":0.00,"reissueRechargeRecordId":"","iccardPrice":1.50,"iccardNum":"3714251023011","accountType":0,"equipCode":"","rechargeWaterMoney":"","totalRechargeMoney":0.00,"executeWaterPrice":"","iccardType":1,"iccardCode":"BADA4044"}}
+
+
+    OtherData otherData;
+
+    public OtherData getOtherData() {
+        return otherData;
+    }
+
+    public void setOtherData(OtherData otherData) {
+        this.otherData = otherData;
+    }
+
+    public class OtherData {
+        List<String> adcdList;//璇ョ敤鎴风殑鍦板潃缂栫爜
+        String tenantAdnm;//鍘垮悕绉�
+        List<String> adnmList;//鏉戝浼氬悕绉�
+
+        public List<String> getAdcdList() {
+            return adcdList;
+        }
+
+        public void setAdcdList(List<String> adcdList) {
+            this.adcdList = adcdList;
+        }
+
+        public String getTenantAdnm() {
+            return tenantAdnm;
+        }
+
+        public void setTenantAdnm(String tenantAdnm) {
+            this.tenantAdnm = tenantAdnm;
+        }
+
+        public List<String> getAdnmList() {
+            return adnmList;
+        }
+
+        public void setAdnmList(List<String> adnmList) {
+            this.adnmList = adnmList;
+        }
+    }
+
+
+}
diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/bean/OpenCardResult.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/bean/OpenCardResult.java
new file mode 100644
index 0000000..9230906
--- /dev/null
+++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/bean/OpenCardResult.java
@@ -0,0 +1,31 @@
+package com.dayu.qiheonlinelibrary.bean;
+
+/**
+ * author: zuo
+ * Date: 2024-08-05
+ * Time: 16:23
+ * 澶囨敞锛�
+ */
+public class OpenCardResult {
+// {"code":"0","msg":"鎿嶄綔鎴愬姛","data":{"iccardBalanceMoney":0,"lastSwipeTime":"","rechargeOperatorUsername":"","rechargeType":0,"iccardCode":"3714251023010002","rechargeCallbackType":"","iccardNum":"","lastRechargeTime":"","iccardBalanceAmonunt":0,"thisSaleAmount":"","remark":"寰呭啓鍗★紝寮�鍗′氦鏄撲腑","username":"","rechargeRecordNum":"1821459146525384704","totalRechargeMoney":"","iccardType":"","reissueTimes":"","yearRechargeElectricAmount":"","rechargeWaterAmount":"","iccardRechargeRecordId":"1821459146567327745","rechargeOperatorUserId":"1816297106145103873","chargeMethod":"","yearRechargeMoney":"","rechargeElectricAmount":"","iccardProtocolName":"","equipCode":"","thisSaleMoney":"","iccardBalanceElectric":"","rechargeCardMoney":5,"peasantId":"1821458177314004994","totalRechargeElectricAmount":"","rechargeStatus":1,"writeCardStatus":1,"lastRechargeMoney":"","totalRechargeWaterAmount":"","executeWaterPrice":"","adName":"","yearCompensateMoney":"","iccardBrand":"","rechargeWaterMoney":"","yearRechargeWaterAmount":"","rechargeMoney":5,"iccardInfoId":"1821459146349223937","rechargeTime":"","iccardPrice":1.50016}}
+
+    String iccardRechargeRecordId;//ic鍗′氦鏄撹褰昳d
+
+    String iccardCode;//骞冲彴鐢熸垚鐨勫瓨鍦ㄥ崱鍐呯殑鐢ㄦ埛缂栧彿
+
+    public String getIccardCode() {
+        return iccardCode;
+    }
+
+    public void setIccardCode(String iccardCode) {
+        this.iccardCode = iccardCode;
+    }
+
+    public String getIccardRechargeRecordId() {
+        return iccardRechargeRecordId;
+    }
+
+    public void setIccardRechargeRecordId(String iccardRechargeRecordId) {
+        this.iccardRechargeRecordId = iccardRechargeRecordId;
+    }
+}
diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/bean/PricePlanResult.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/bean/PricePlanResult.java
new file mode 100644
index 0000000..6fbb818
--- /dev/null
+++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/bean/PricePlanResult.java
@@ -0,0 +1,166 @@
+package com.dayu.qiheonlinelibrary.bean;
+
+import com.dayu.baselibrary.utils.MornyUtil;
+
+import java.util.List;
+
+/**
+ * author: zuo
+ * Date: 2024-08-05
+ * Time: 16:00
+ * 澶囨敞锛氭按浠风鐞嗗垪琛�
+ */
+public class PricePlanResult {
+
+//    {
+//        "code": "0",
+//            "msg": "鎿嶄綔鎴愬姛",
+//            "data": {
+//        "records": [
+//        {
+//            "priceMethod": 2,
+//                "priceTypeName": "鎸夋埛闃舵姘翠环",
+//                "cardManagementFee": 5,
+//                "itemList": [
+//            {
+//                "ladder": 1,
+//                    "planId": "1816390728315052033",
+//                    "updatedTime": "2024-07-25 16:31:11",
+//                    "ladderName": "绗竴闃舵",
+//                    "logicState": 1,
+//                    "price": 0,
+//                    "planItemId": "1816390728386355201",
+//                    "createdBy": "1761933307362938881",
+//                    "tenantId": "1761933241344593922",
+//                    "waterPrice": "",
+//                    "endWaterVolume": 0,
+//                    "createdTime": "2024-07-25 16:31:11",
+//                    "updatedBy": "1761933307362938881",
+//                    "initialWaterVolume": 0
+//            },
+//            {
+//                "ladder": 2,
+//                    "planId": "1816390728315052033",
+//                    "updatedTime": "2024-07-25 16:31:11",
+//                    "ladderName": "绗簩闃舵",
+//                    "logicState": 1,
+//                    "price": 0,
+//                    "planItemId": "1816390728407326722",
+//                    "createdBy": "1761933307362938881",
+//                    "tenantId": "1761933241344593922",
+//                    "waterPrice": "",
+//                    "endWaterVolume": "",
+//                    "createdTime": "2024-07-25 16:31:11",
+//                    "updatedBy": "1761933307362938881",
+//                    "initialWaterVolume": 0
+//            },
+//            {
+//                "ladder": 3,
+//                    "planId": "1816390728315052033",
+//                    "updatedTime": "2024-07-25 16:31:11",
+//                    "ladderName": "绗笁闃舵",
+//                    "logicState": 1,
+//                    "price": 0,
+//                    "planItemId": "1816390728415715330",
+//                    "createdBy": "1761933307362938881",
+//                    "tenantId": "1761933241344593922",
+//                    "waterPrice": "",
+//                    "endWaterVolume": "",
+//                    "createdTime": "2024-07-25 16:31:11",
+//                    "updatedBy": "1761933307362938881",
+//                    "initialWaterVolume": 0
+//            }
+//                ],
+//            "weratio": 4.688,
+//                "cropTypeName": "",
+//                "unitPrice": 0.32,
+//                "planId": "1816390728315052033",
+//                "adnm": "榻愭渤鍘�",
+//                "cropType": "",
+//                "state": 1,
+//                "adId": "371425000000",
+//                "priceType": 2,
+//                "createdTime": "2024-07-25 16:31:11",
+//                "planName": "鍩虹姘翠环"
+//        }
+//        ],
+//        "total": "1",
+//                "size": "50",
+//                "current": "1",
+//                "orders": [
+//
+//        ],
+//        "optimizeCountSql": true,
+//                "searchCount": true,
+//                "countId": "",
+//                "maxLimit": "",
+//                "pages": "1"
+//    }
+//    }
+
+
+    int total;
+    int pages;
+    int size;
+
+
+    List<Records> records;
+
+    public int getTotal() {
+        return total;
+    }
+
+    public void setTotal(int total) {
+        this.total = total;
+    }
+
+    public int getPages() {
+        return pages;
+    }
+
+    public void setPages(int pages) {
+        this.pages = pages;
+    }
+
+    public int getSize() {
+        return size;
+    }
+
+    public void setSize(int size) {
+        this.size = size;
+    }
+
+    public List<Records> getRecords() {
+        return records;
+    }
+
+    public void setRecords(List<Records> records) {
+        this.records = records;
+    }
+
+    public class Records {
+        String planId;
+
+        float weratio;//姘翠环 涔樹互绯绘暟寰楀嚭鐢典环
+        float unitPrice;//绯绘暟
+
+        public String getElectricityPrice() {
+            try {
+                return MornyUtil.multiplyPrice(weratio, unitPrice);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+            return "";
+        }
+
+        public String getPlanId() {
+            return planId;
+        }
+
+        public void setPlanId(String planId) {
+            this.planId = planId;
+        }
+    }
+
+
+}
diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/bean/RechargeResult.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/bean/RechargeResult.java
new file mode 100644
index 0000000..8d092bb
--- /dev/null
+++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/bean/RechargeResult.java
@@ -0,0 +1,71 @@
+package com.dayu.qiheonlinelibrary.bean;
+
+/**
+ * author: zuo
+ * Date: 2024-08-07
+ * Time: 11:08
+ * 澶囨敞锛�
+ */
+public class RechargeResult {
+    //{"iccardBalanceMoney":2,"lastSwipeTime":"","rechargeOperatorUsername":"","rechargeType":1,"iccardCode":"4440DABA","rechargeCallbackType":"","iccardNum":"","lastRechargeTime":"","iccardBalanceAmonunt":6.25,"thisSaleAmount":"","remark":"寰呭啓鍗★紝鍏呭�间氦鏄撲腑","username":"","rechargeRecordNum":"1821020394581663744","totalRechargeMoney":0.00,"iccardType":"","reissueTimes":"","yearRechargeElectricAmount":0.00,"rechargeWaterAmount":6.25,"iccardRechargeRecordId":"1821020394594246658","rechargeOperatorUserId":"1816297106145103873","chargeMethod":"","yearRechargeMoney":0.00,"rechargeElectricAmount":1.33,"iccardProtocolName":"","equipCode":"","thisSaleMoney":"","iccardBalanceElectric":1.33,"rechargeCardMoney":"","peasantId":"1820374742679953410","totalRechargeElectricAmount":0.00,"rechargeStatus":1,"writeCardStatus":1,"lastRechargeMoney":"","totalRechargeWaterAmount":0.00,"executeWaterPrice":"","adName":"","yearCompensateMoney":"","iccardBrand":"","rechargeWaterMoney":2,"yearRechargeWaterAmount":0.00,"rechargeMoney":2,"iccardInfoId":"","rechargeTime":"","iccardPrice":1.50}
+
+    String iccardBalanceMoney;//鍗″唴鍓╀綑閲戦锛堝厓锛�
+
+    float totalRechargeMoney;// 绱鍏呭�奸噾棰�
+
+    float yearRechargeMoney;// 鏈勾鍏呭�奸噾棰�
+
+    float rechargeElectricAmount;//浜ゆ槗鐢甸噺
+
+    float iccardBalanceElectric;//鍗″唴鍓╀綑鐢甸噺
+
+    String iccardRechargeRecordId;//璁㈠崟鍙�
+
+    public String getIccardBalanceMoney() {
+        return iccardBalanceMoney;
+    }
+
+    public void setIccardBalanceMoney(String iccardBalanceMoney) {
+        this.iccardBalanceMoney = iccardBalanceMoney;
+    }
+
+    public float getTotalRechargeMoney() {
+        return totalRechargeMoney;
+    }
+
+    public void setTotalRechargeMoney(float totalRechargeMoney) {
+        this.totalRechargeMoney = totalRechargeMoney;
+    }
+
+    public float getYearRechargeMoney() {
+        return yearRechargeMoney;
+    }
+
+    public void setYearRechargeMoney(float yearRechargeMoney) {
+        this.yearRechargeMoney = yearRechargeMoney;
+    }
+
+    public float getRechargeElectricAmount() {
+        return rechargeElectricAmount;
+    }
+
+    public void setRechargeElectricAmount(float rechargeElectricAmount) {
+        this.rechargeElectricAmount = rechargeElectricAmount;
+    }
+
+    public float getIccardBalanceElectric() {
+        return iccardBalanceElectric;
+    }
+
+    public void setIccardBalanceElectric(float iccardBalanceElectric) {
+        this.iccardBalanceElectric = iccardBalanceElectric;
+    }
+
+    public String getIccardRechargeRecordId() {
+        return iccardRechargeRecordId;
+    }
+
+    public void setIccardRechargeRecordId(String iccardRechargeRecordId) {
+        this.iccardRechargeRecordId = iccardRechargeRecordId;
+    }
+}
diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/bean/ReplaceCardResult.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/bean/ReplaceCardResult.java
new file mode 100644
index 0000000..7164176
--- /dev/null
+++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/bean/ReplaceCardResult.java
@@ -0,0 +1,70 @@
+package com.dayu.qiheonlinelibrary.bean;
+
+/**
+ * author: zuo
+ * Date: 2024-08-09
+ * Time: 16:29
+ * 澶囨敞锛氳ˉ鍗¤繑鍥炲弬鏁�
+ */
+public class ReplaceCardResult {
+    //{"code":"0","msg":"鎿嶄綔鎴愬姛","data":{"iccardBalanceMoney":5.00,"lastSwipeTime":"","rechargeOperatorUsername":"","rechargeType":0,"iccardCode":"3714251023010005","rechargeCallbackType":"","iccardNum":"","lastRechargeTime":"","iccardBalanceAmonunt":15.63,"thisSaleAmount":"","remark":"寰呭啓鍗★紝琛ュ崱寮�鍗′氦鏄撲腑","username":"","rechargeRecordNum":"1821825921016406016","totalRechargeMoney":"","iccardType":"","reissueTimes":"","yearRechargeElectricAmount":"","rechargeWaterAmount":"","iccardRechargeRecordId":"1821825921020600321","rechargeOperatorUserId":"1816297106145103873","chargeMethod":"","yearRechargeMoney":"","rechargeElectricAmount":"","iccardProtocolName":"","equipCode":"","thisSaleMoney":"","iccardBalanceElectric":3.33,"rechargeCardMoney":4,"peasantId":"1821458177314004994","totalRechargeElectricAmount":"","rechargeStatus":1,"writeCardStatus":1,"lastRechargeMoney":"","totalRechargeWaterAmount":"","executeWaterPrice":"","adName":"","yearCompensateMoney":"","iccardBrand":"","rechargeWaterMoney":"","yearRechargeWaterAmount":"","rechargeMoney":4,"iccardInfoId":"1821825920739581954","rechargeTime":"","iccardPrice":1.50}}
+
+
+    String iccardBalanceMoney;//鍗″唴鍓╀綑閲戦锛堝厓锛�
+    String iccardBalanceElectric;//鍗″唴鍓╀綑鐢甸噺
+
+    String iccardCode;//鐢ㄦ埛鍗″彿锛堝啓鍦ㄥ崱閲岀殑鐢ㄦ埛缂栧彿锛�
+    String totalRechargeMoney;//绱鍏呭�奸噾棰濓紙鍏冿級
+
+    String lastRechargeTime;//鏈�鍚庡厖鍊兼椂闂�
+
+    String iccardRechargeRecordId;//ic鍗′氦鏄撹褰昳d
+
+    public String getIccardRechargeRecordId() {
+        return iccardRechargeRecordId;
+    }
+
+    public void setIccardRechargeRecordId(String iccardRechargeRecordId) {
+        this.iccardRechargeRecordId = iccardRechargeRecordId;
+    }
+
+    public String getIccardBalanceMoney() {
+        return iccardBalanceMoney;
+    }
+
+    public void setIccardBalanceMoney(String iccardBalanceMoney) {
+        this.iccardBalanceMoney = iccardBalanceMoney;
+    }
+
+    public String getIccardBalanceElectric() {
+        return iccardBalanceElectric;
+    }
+
+    public void setIccardBalanceElectric(String iccardBalanceElectric) {
+        this.iccardBalanceElectric = iccardBalanceElectric;
+    }
+
+    public String getIccardCode() {
+        return iccardCode;
+    }
+
+    public void setIccardCode(String iccardCode) {
+        this.iccardCode = iccardCode;
+    }
+
+    public String getTotalRechargeMoney() {
+        return totalRechargeMoney;
+    }
+
+    public void setTotalRechargeMoney(String totalRechargeMoney) {
+        this.totalRechargeMoney = totalRechargeMoney;
+    }
+
+    public String getLastRechargeTime() {
+        return lastRechargeTime;
+    }
+
+    public void setLastRechargeTime(String lastRechargeTime) {
+        this.lastRechargeTime = lastRechargeTime;
+    }
+}
diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/bean/UserListResult.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/bean/UserListResult.java
new file mode 100644
index 0000000..c31efa2
--- /dev/null
+++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/bean/UserListResult.java
@@ -0,0 +1,118 @@
+package com.dayu.qiheonlinelibrary.bean;
+
+import java.util.List;
+
+/**
+ * author: zuo
+ * Date: 2024-07-31
+ * Time: 15:28
+ * 澶囨敞锛�
+ */
+public class UserListResult {
+
+    int total;//鎬绘暟
+
+    int pages;
+
+    int size;
+
+    List<Records> records;
+
+    public List<Records> getRecords() {
+        return records;
+    }
+
+    public void setRecords(List<Records> records) {
+        this.records = records;
+    }
+
+    public class Records {
+        String peasantId;
+        String peasantName;//鐢ㄦ埛鍚嶇О
+        String peasantIdNumber;//鐢ㄦ埛韬唤璇佸彿
+        String peasantPhone;//鎵嬫満鍙�
+        String adcd;//鍦板潃鐮�
+        String adcdName;//鍦板潃锛氱劍搴欐潙濮斾細
+        int state;//鐘舵��  0 鏈惎鐢� 1 鍚敤
+
+        public String getPeasantName() {
+            return peasantName;
+        }
+
+        public void setPeasantName(String peasantName) {
+            this.peasantName = peasantName;
+        }
+
+        public String getPeasantIdNumber() {
+            return peasantIdNumber;
+        }
+
+        public void setPeasantIdNumber(String peasantIdNumber) {
+            this.peasantIdNumber = peasantIdNumber;
+        }
+
+        public String getPeasantPhone() {
+            return peasantPhone;
+        }
+
+        public void setPeasantPhone(String peasantPhone) {
+            this.peasantPhone = peasantPhone;
+        }
+
+        public String getAdcd() {
+            return adcd;
+        }
+
+        public void setAdcd(String adcd) {
+            this.adcd = adcd;
+        }
+
+        public String getAdcdName() {
+            return adcdName;
+        }
+
+        public void setAdcdName(String adcdName) {
+            this.adcdName = adcdName;
+        }
+
+        public int getState() {
+            return state;
+        }
+
+        public void setState(int state) {
+            this.state = state;
+        }
+
+        public String getPeasantId() {
+            return peasantId;
+        }
+
+        public void setPeasantId(String peasantId) {
+            this.peasantId = peasantId;
+        }
+    }
+
+    public int getPages() {
+        return pages;
+    }
+
+    public void setPages(int pages) {
+        this.pages = pages;
+    }
+
+    public int getSize() {
+        return size;
+    }
+
+    public void setSize(int size) {
+        this.size = size;
+    }
+
+    public int getTotal() {
+        return total;
+    }
+
+    public void setTotal(int total) {
+        this.total = total;
+    }
+}
diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/card/RegionCard.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/card/RegionCard.java
index 3285855..339bca6 100644
--- a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/card/RegionCard.java
+++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/card/RegionCard.java
@@ -17,25 +17,15 @@
 
     public String cardType = CardCommon.REGION;//鍗″懡浠�
 
-    public int region;//鍖哄煙鍦板潃(浣庡墠楂樺悗) 鍙互璇嗗埆鏌愬幙闀囨潙
-
-    public int controllerCodel;// 鎺у埗鍣ㄧ紪鍙�(浣庡墠楂樺悗) 鏈尯鍩熷唴鎺у埗鍣ㄧ紪鍙�
+    public int arerNumber;//鍖哄煙鍙�(搴曚綅鍦ㄥ墠楂樹綅鍦ㄥ悗)
 
 
-    public int getRegion() {
-        return region;
+    public int getArerNumber() {
+        return arerNumber;
     }
 
-    public void setRegion(int region) {
-        this.region = region;
-    }
-
-    public int getControllerCodel() {
-        return controllerCodel;
-    }
-
-    public void setControllerCodel(int controllerCodel) {
-        this.controllerCodel = controllerCodel;
+    public void setArerNumber(int arerNumber) {
+        this.arerNumber = arerNumber;
     }
 
     public byte[] toByte() {
@@ -49,14 +39,9 @@
         byte[] zero = data.get(0);
         regionCard.cardType = HexUtil.byteToHex(zero[0]);
 
-        byte[] regionByte = new byte[2];
-        System.arraycopy(zero, 1, regionByte, 0, regionByte.length);
-        regionCard.region = HexUtil.get16To10LowHightByBytes(regionByte);
-
-
-        byte[] controllerCodelByte = new byte[2];
-        System.arraycopy(zero, 3, controllerCodelByte, 0, controllerCodelByte.length);
-        regionCard.controllerCodel = HexUtil.get16To10LowHightByBytes(controllerCodelByte);
+        byte[] arerNumberByte = new byte[4];
+        System.arraycopy(zero, 1, arerNumberByte, 0, arerNumberByte.length);
+        regionCard.arerNumber = HexUtil.get16To10LowHightByBytes(arerNumberByte);
 
 
         return regionCard;
@@ -70,20 +55,13 @@
         public byte[] toByte() {
             byte[] data = new byte[16];
             data[0] = HexUtil.hexToByte(cardType);
-            byte[] regionBytes = new byte[2];
-            byte[] regionDatas = HexUtil.hexToByteArray(HexUtil.get10To16LowHigh(region));
-            System.arraycopy(regionDatas, 0, regionBytes, 0, regionDatas.length);
-            if (regionBytes != null) {
-                System.arraycopy(regionBytes, 0, data, 1, regionBytes.length);
+            //鍖哄煙鍙�
+            byte[] arerNumberBytes = new byte[4];
+            byte[] arerNumberDatas = HexUtil.hexToByteArray(HexUtil.get10To16LowHigh(arerNumber));
+            System.arraycopy(arerNumberDatas, 0, arerNumberBytes, 0, arerNumberDatas.length);
+            if (arerNumberBytes != null) {
+                System.arraycopy(arerNumberBytes, 0, data, 1, arerNumberBytes.length);
             }
-            byte[] controllerCodelBytes = new byte[2];
-            byte[] controllerCodelDatas = HexUtil.hexToByteArray(HexUtil.get10To16LowHigh(controllerCodel));
-            System.arraycopy(controllerCodelDatas, 0, controllerCodelBytes, 0, controllerCodelDatas.length);
-            if (controllerCodelBytes != null) {
-                System.arraycopy(controllerCodelBytes, 0, data, 3, controllerCodelBytes.length);
-            }
-
-
             data[15] = getByteSum(data);
             return data;
         }
diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/card/UserCard.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/card/UserCard.java
index b26f931..e25d34a 100644
--- a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/card/UserCard.java
+++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/card/UserCard.java
@@ -1,5 +1,6 @@
 package com.dayu.qiheonlinelibrary.card;
 
+import com.dayu.baselibrary.tools.BcdUtil;
 import com.dayu.baselibrary.tools.HexUtil;
 
 import com.dayu.qiheonlinelibrary.utils.CardCommon;
@@ -20,18 +21,23 @@
 
     public int arerNumber;//鍖哄煙鍙�(搴曚綅鍦ㄥ墠楂樹綅鍦ㄥ悗)
 
-    public int deviceNumberl;//璁惧缂栧彿(搴曚綅鍦ㄥ墠楂樹綅鍦ㄥ悗)
-    public short rechargeTimes;//鍏呭�兼鏁�
+    public String userCode;//鐢ㄦ埛缂栧彿BCD鐪佸競鍘夸埂鏉�
 
-    public int totalWater;//鐢ㄦ埛鎬荤敤姘撮噺  搴曚綅鍦ㄥ墠锛岄珮浣嶅湪鍚�2浣嶅皬鏁扮偣  鍚袱涓皬鏁扮偣鐨勬暣鏁�
+    public int userCodeNumber;//鐢ㄦ埛缂栧彿(楂樹綅鍦ㄥ墠浣庝綅鍦ㄥ悗锛�
 
-    public int totalElectric;//鎬荤敤鐢甸噺浣� 搴曚綅鍦ㄥ墠锛岄珮浣嶅湪鍚�  1浣嶅皬鏁扮偣  鍚�1浣嶅皬鏁扮偣鐨勬暣鏁�
+    public int cardWriteState;//绠$悊鍗¤繑鍐欐満鍒� 00:涓績鍐�01:鎺у埗鍣ㄨ繑鍐�
+
+    public int cardState;//鐜板満鍗$姸鎬�  00:鏃у崱 01:鏂板崱
 
     public int balance;//鍓╀綑閲戦 搴曚綅鍦ㄥ墠  2浣嶅皬鏁扮偣锛屽崟浣嶅垎
 
-    public int surplusWater;//鍓╀綑姘撮噺 搴曚綅鍦ㄥ墠  2浣嶅皬鏁扮偣銆�鍗曚綅绔嬫柟绫� (璺熶环鏍间竴鏍峰厛涔樹互100)
+    public int surplusElecticity;//鍓╀綑鐢甸噺 搴曚綅鍦ㄥ墠  2浣嶅皬鏁扮偣銆�鍗曚綅绔嬫柟绫� (璺熶环鏍间竴鏍峰厛涔樹互100)
+
+    public int totalMorny;//绱鍏呭�奸噾棰�
 
     public Calendar rechargeDate;// 璐按鏃堕棿 BCD
+
+    public Float electricPrice;//鐢靛崟浠凤紝淇濈暀涓変綅灏忔暟
 
 
     /**
@@ -47,24 +53,21 @@
 
             userCard.cardType = HexUtil.byteToHex(zero[0]);
 
-            byte[] arerNumberByte = new byte[2];
+            byte[] arerNumberByte = new byte[4];
             System.arraycopy(zero, 1, arerNumberByte, 0, arerNumberByte.length);
             userCard.arerNumber =  HexUtil.get16To10LowHightByBytes(arerNumberByte);
-
-            byte[] deviceNumberlByte = new byte[2];
-            System.arraycopy(zero, 3, deviceNumberlByte, 0, deviceNumberlByte.length);
-            userCard.deviceNumberl =  HexUtil.get16To10LowHightByBytes(deviceNumberlByte);
-
-            userCard.rechargeTimes = HexUtil.hexToByte(HexUtil.byteToHex(zero[5]));
-
-            byte[] totalWaterByte = new byte[4];
-            System.arraycopy(zero, 6, totalWaterByte, 0, totalWaterByte.length);
-            userCard.totalWater = HexUtil.get16To10LowHightByBytes(totalWaterByte);
-
-            byte[] totalElectricByte = new byte[4];
-            System.arraycopy(zero, 10, totalElectricByte, 0, totalElectricByte.length);
-            userCard.totalElectric = HexUtil.get16To10LowHightByBytes(totalElectricByte);
-
+            byte[] userCodeByte = new byte[6];
+            System.arraycopy(zero, 5, userCodeByte, 0, userCodeByte.length);
+            userCard.userCode= BcdUtil.bcdToStr(userCodeByte);
+            byte[] userCodeNumber = new byte[2];
+            System.arraycopy(zero, 10, userCodeNumber, 0, userCodeNumber.length);
+            userCard.userCodeNumber=HexUtil.get16To10LowHightByBytes(userCodeNumber);
+            byte[] cardWriteState = new byte[1];
+            System.arraycopy(zero, 13, cardWriteState, 0, cardWriteState.length);
+            userCard.cardWriteState=HexUtil.get16To10LowHightByBytes(cardWriteState);
+            byte[] cardState = new byte[1];
+            System.arraycopy(zero, 14, cardState, 0, cardState.length);
+            userCard.cardState=HexUtil.get16To10LowHightByBytes(cardState);
             //绗�1鍧楄В鏋�
             byte[] one = data.get(1);
             byte[] balanceByte = new byte[4];
@@ -73,18 +76,25 @@
 
             byte[] surplusWaterByte = new byte[4];
             System.arraycopy(one, 4, surplusWaterByte, 0, surplusWaterByte.length);
-            userCard.surplusWater = HexUtil.get16To10LowHightByBytes(surplusWaterByte);
+            userCard.surplusElecticity = HexUtil.get16To10LowHightByBytes(surplusWaterByte);
+
+            byte[] totalMorny = new byte[4];
+            System.arraycopy(one, 8, totalMorny, 0, totalMorny.length);
+            userCard.totalMorny = HexUtil.get16To10LowHightByBytes(totalMorny);
 
             byte[] rechargeDateByte = new byte[3];
             System.arraycopy(one, 12, rechargeDateByte, 0, rechargeDateByte.length);
-
             int year = HexUtil.getBcdToInt(one[12]);
             int month = HexUtil.getBcdToInt(one[13]);
             int day = HexUtil.getBcdToInt(one[14]);
-
             Calendar calendar = Calendar.getInstance();
             calendar.set(2000 + year, month, day, 0, 0, 0);
             userCard.rechargeDate = calendar;
+
+            byte[] two = data.get(2);
+            byte[] electricPriceByte = new byte[4];
+            System.arraycopy(two, 8, electricPriceByte, 0, electricPriceByte.length);
+            userCard.electricPrice = HexUtil.hexToFloatLowHigh(electricPriceByte);
 
             return userCard;
 
@@ -105,37 +115,45 @@
                 byte[] data = new byte[16];
                 data[0] = HexUtil.hexToByte(cardType);
                 //鍖哄煙鍙�
-                byte[] arerNumberBytes = new byte[2];
+                byte[] arerNumberBytes = new byte[4];
                 byte[] arerNumberDatas = HexUtil.hexToByteArray(HexUtil.get10To16LowHigh(arerNumber));
                 System.arraycopy(arerNumberDatas, 0, arerNumberBytes, 0, arerNumberDatas.length);
                 if (arerNumberBytes != null) {
                     System.arraycopy(arerNumberBytes, 0, data, 1, arerNumberBytes.length);
                 }
-                //璁惧缂栧彿
-                byte[] deviceNumberlBytes = new byte[2];
-                byte[] deviceNumberlDatas = HexUtil.hexToByteArray(HexUtil.get10To16LowHigh(deviceNumberl));
-                System.arraycopy(deviceNumberlDatas, 0, deviceNumberlBytes, 0, deviceNumberlDatas.length);
-                if (deviceNumberlBytes != null) {
-                    System.arraycopy(deviceNumberlBytes, 0, data, 3, deviceNumberlBytes.length);
-                }
-                //鍏呭�兼鏁�
-                byte rechargeTimesByte = HexUtil.hexToByte(HexUtil.get10to16(rechargeTimes));
-                data[5] = rechargeTimesByte;
 
-                //鐢ㄦ埛鎬荤敤姘撮噺
-                byte[] totalWaterBytes = new byte[4];
-                byte[] totalWaterDatas = HexUtil.hexToByteArray(HexUtil.get10To16LowHigh(totalWater));
-                System.arraycopy(totalWaterDatas, 0, totalWaterBytes, 0, totalWaterDatas.length);
-                if (totalWaterBytes != null) {
-                    System.arraycopy(totalWaterBytes, 0, data, 6, totalWaterBytes.length);
+
+                //鐢ㄦ埛缂栧彿(鍦板潃)
+                byte[] userCodeBytes = new byte[6];
+                byte[] userCodeDatas = BcdUtil.strToBcd(userCode);
+                System.arraycopy(userCodeDatas, 0, userCodeBytes, 0, userCodeDatas.length);
+                if (userCodeBytes != null) {
+                    System.arraycopy(userCodeBytes, 0, data, 5, userCodeBytes.length);
                 }
-                //鎬荤敤鐢甸噺浣�
-                byte[] totalElectricBytes = new byte[4];
-                byte[] totalElectricDatas = HexUtil.hexToByteArray(HexUtil.get10To16LowHigh(totalElectric));
-                System.arraycopy(totalElectricDatas, 0, totalElectricBytes, 0, totalElectricDatas.length);
-                if (totalElectricBytes != null) {
-                    System.arraycopy(totalElectricBytes, 0, data, 10, totalElectricBytes.length);
+                //鐢ㄦ埛缂栧彿(鑷)
+                byte[] userCodeNumberBytes = new byte[2];
+                byte[] userCodeNumberDatas = HexUtil.hexToByteArray(HexUtil.get10To16LowHigh(userCodeNumber));
+                System.arraycopy(userCodeNumberDatas, 0, userCodeNumberBytes, 0, userCodeNumberDatas.length);
+                if (userCodeNumberBytes != null) {
+                    System.arraycopy(userCodeNumberBytes, 0, data, 11, userCodeNumberBytes.length);
                 }
+                //绠$悊鍗¤繑鍐欐満鍒� 00:涓績鍐�01:鎺у埗鍣ㄨ繑鍐�
+                byte[] cardWriteStateBytes = new byte[1];
+                byte[] cardWriteStateDatas = HexUtil.hexToByteArray(HexUtil.get10To16LowHigh(cardWriteState));
+                System.arraycopy(cardWriteStateDatas, 0, cardWriteStateBytes, 0, cardWriteStateDatas.length);
+                if (cardWriteStateBytes != null) {
+                    System.arraycopy(cardWriteStateBytes, 0, data, 13, cardWriteStateBytes.length);
+                }
+
+                //绠$悊鍗¤繑鍐欐満鍒� 00:涓績鍐�01:鎺у埗鍣ㄨ繑鍐�
+                byte[] cardStateBytes = new byte[1];
+                byte[] cardStateDatas = HexUtil.hexToByteArray(HexUtil.get10To16LowHigh(cardState));
+                System.arraycopy(cardStateDatas, 0, cardStateBytes, 0, cardStateDatas.length);
+                if (cardStateBytes != null) {
+                    System.arraycopy(cardStateBytes, 0, data, 13, cardStateBytes.length);
+                }
+
+
                 data[15] = getByteSum(data);
                 return data;
             } catch (Exception e) {
@@ -164,11 +182,17 @@
                     System.arraycopy(balanceBytes, 0, data, 0, balanceBytes.length);
                 }
 
-                byte[] surplusWaterBytes = new byte[4];
-                byte[] surplusWaterDatas = HexUtil.hexToByteArray(HexUtil.get10To16LowHigh(surplusWater));
-                System.arraycopy(surplusWaterDatas, 0, surplusWaterBytes, 0, surplusWaterDatas.length);
-                if (surplusWaterBytes != null) {
-                    System.arraycopy(surplusWaterBytes, 0, data, 4, surplusWaterBytes.length);
+                byte[] surplusElecticityBytes = new byte[4];
+                byte[] surplusElecticityDatas = HexUtil.hexToByteArray(HexUtil.get10To16LowHigh(surplusElecticity));
+                System.arraycopy(surplusElecticityDatas, 0, surplusElecticityBytes, 0, surplusElecticityDatas.length);
+                if (surplusElecticityBytes != null) {
+                    System.arraycopy(surplusElecticityBytes, 0, data, 4, surplusElecticityBytes.length);
+                }
+                byte[] totalMornyBytes = new byte[4];
+                byte[] totalMornyDatas = HexUtil.hexToByteArray(HexUtil.get10To16LowHigh(totalMorny));
+                System.arraycopy(totalMornyDatas, 0, totalMornyBytes, 0, totalMornyDatas.length);
+                if (totalMornyBytes != null) {
+                    System.arraycopy(totalMornyBytes, 0, data, 8, totalMornyBytes.length);
                 }
 
                 if (rechargeDate != null) {
@@ -202,6 +226,7 @@
         public byte[] toBytes() {
             byte[] data = new byte[16];
 
+
             try {
                 byte[] balanceBytes = new byte[4];
                 byte[] balanceDatas = HexUtil.hexToByteArray(HexUtil.get10To16LowHigh(balance));
@@ -210,11 +235,18 @@
                     System.arraycopy(balanceBytes, 0, data, 0, balanceBytes.length);
                 }
 
-                byte[] surplusWaterBytes = new byte[4];
-                byte[] surplusWaterDatas = HexUtil.hexToByteArray(HexUtil.get10To16LowHigh(surplusWater));
-                System.arraycopy(surplusWaterDatas, 0, surplusWaterBytes, 0, surplusWaterDatas.length);
-                if (surplusWaterBytes != null) {
-                    System.arraycopy(surplusWaterBytes, 0, data, 4, surplusWaterBytes.length);
+                byte[] surplusElecticityBytes = new byte[4];
+                byte[] surplusElecticityDatas = HexUtil.hexToByteArray(HexUtil.get10To16LowHigh(surplusElecticity));
+                System.arraycopy(surplusElecticityDatas, 0, surplusElecticityBytes, 0, surplusElecticityDatas.length);
+                if (surplusElecticityBytes != null) {
+                    System.arraycopy(surplusElecticityBytes, 0, data, 4, surplusElecticityBytes.length);
+                }
+
+                byte[] electricPriceBytes = new byte[4];
+                byte[] electricPriceDatas = HexUtil.hexToByteArray(HexUtil.floatToHexLowHigh(electricPrice));
+                System.arraycopy(electricPriceDatas, 0, electricPriceBytes, 0, electricPriceDatas.length);
+                if (electricPriceBytes != null) {
+                    System.arraycopy(electricPriceBytes, 0, data, 8, electricPriceBytes.length);
                 }
 
                 if (rechargeDate != null) {
@@ -229,6 +261,7 @@
                     data[13] = bcdMonth;
                     data[14] = bcdDay;
                 }
+
 
                 data[15] = getByteSum(data);
             } catch (Exception e) {
@@ -271,36 +304,36 @@
         this.arerNumber = arerNumber;
     }
 
-    public int getDeviceNumberl() {
-        return deviceNumberl;
+    public String getUserCode() {
+        return userCode;
     }
 
-    public void setDeviceNumberl(int deviceNumberl) {
-        this.deviceNumberl = deviceNumberl;
+    public void setUserCode(String userCode) {
+        this.userCode = userCode;
     }
 
-    public short getRechargeTimes() {
-        return rechargeTimes;
+    public int getUserCodeNumber() {
+        return userCodeNumber;
     }
 
-    public void setRechargeTimes(short rechargeTimes) {
-        this.rechargeTimes = rechargeTimes;
+    public void setUserCodeNumber(int userCodeNumber) {
+        this.userCodeNumber = userCodeNumber;
     }
 
-    public int getTotalWater() {
-        return totalWater;
+    public int getCardWriteState() {
+        return cardWriteState;
     }
 
-    public void setTotalWater(int totalWater) {
-        this.totalWater = totalWater;
+    public void setCardWriteState(int cardWriteState) {
+        this.cardWriteState = cardWriteState;
     }
 
-    public int getTotalElectric() {
-        return totalElectric;
+    public int getCardState() {
+        return cardState;
     }
 
-    public void setTotalElectric(int totalElectric) {
-        this.totalElectric = totalElectric;
+    public void setCardState(int cardState) {
+        this.cardState = cardState;
     }
 
     public int getBalance() {
@@ -311,12 +344,20 @@
         this.balance = balance;
     }
 
-    public int getSurplusWater() {
-        return surplusWater;
+    public int getSurplusElecticity() {
+        return surplusElecticity;
     }
 
-    public void setSurplusWater(int surplusWater) {
-        this.surplusWater = surplusWater;
+    public void setSurplusElecticity(int surplusElecticity) {
+        this.surplusElecticity = surplusElecticity;
+    }
+
+    public int getTotalMorny() {
+        return totalMorny;
+    }
+
+    public void setTotalMorny(int totalMorny) {
+        this.totalMorny = totalMorny;
     }
 
     public Calendar getRechargeDate() {
@@ -327,5 +368,11 @@
         this.rechargeDate = rechargeDate;
     }
 
+    public Float getElectricPrice() {
+        return electricPrice;
+    }
 
+    public void setElectricPrice(Float electricPrice) {
+        this.electricPrice = electricPrice;
+    }
 }
diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/dao/QHOnLineAppDatabase.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/dao/QHOnLineAppDatabase.java
index 76e7f9e..b257ea6 100644
--- a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/dao/QHOnLineAppDatabase.java
+++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/dao/QHOnLineAppDatabase.java
@@ -23,12 +23,11 @@
  * Date: 2023-11-05 16:23
  * Description:
  */
-@Database(entities = {RegionBean.class, PassWordCardBean.class, CardData.class, DeviceNumber.class, IdentityBean.class, DomainBean.class, ElectricPriceBean.class, IpBean.class, AdminDataBean.class,  UserCardBean.class, RechargeBean.class, PowerBean.class}, version = 1, exportSchema = false)
+@Database(entities = {RegionBean.class, PassWordCardBean.class, CardData.class, DeviceNumber.class, IdentityBean.class, DomainBean.class, ElectricPriceBean.class, IpBean.class, AdminDataBean.class, UserCardBean.class, RechargeBean.class, PowerBean.class}, version = 1, exportSchema = false)
 public abstract class QHOnLineAppDatabase extends RoomDatabase {
 
 
     public abstract AdminDataDao adminDao();
-
 
 
     public abstract UserCardDao userCardDao();
diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/dao/BaseDaoSingleton.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/dao/QHOnlineBaseDaoSingleton.java
similarity index 96%
rename from qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/dao/BaseDaoSingleton.java
rename to qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/dao/QHOnlineBaseDaoSingleton.java
index 776fb80..6439e11 100644
--- a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/dao/BaseDaoSingleton.java
+++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/dao/QHOnlineBaseDaoSingleton.java
@@ -13,7 +13,7 @@
  * Date: 2023-11-06 16:58
  * Description: 鍒涘缓鏁版嵁搴撳疄渚�
  */
-public class BaseDaoSingleton {
+public class QHOnlineBaseDaoSingleton {
     public static QHOnLineAppDatabase baseDao;
     public static QHOnLineAppDatabase AsynchBaseDao;
     public static String SqlitePath = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + ".dayu" + File.separator + "data" + File.separator;
diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/dao/RechargeDao.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/dao/RechargeDao.java
index 483fae9..b057c8e 100644
--- a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/dao/RechargeDao.java
+++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/dao/RechargeDao.java
@@ -31,15 +31,15 @@
     @Delete
     void delete(RechargeBean passWord);
 
-    @Query("select  * from RechargeBean order by date desc")
+    @Query("select  * from RechargeBean order by rechargeDate desc")
     LiveData<List<RechargeBean>> findAll();
 
-    @Query("select  * from RechargeBean where date>=:beginTime and date<=:endTime")
+    @Query("select  * from RechargeBean where rechargeDate>=:beginTime and rechargeDate<=:endTime")
     LiveData<List<RechargeBean>> findByTime(long beginTime, long endTime);
 
-    @Query("select  * from RechargeBean where date>=:beginTime and date<=:endTime")
+    @Query("select  * from RechargeBean where rechargeDate>=:beginTime and rechargeDate<=:endTime")
     List<RechargeBean> ansyFindByTime(long beginTime, long endTime);
 
-    @Query("select  * from RechargeBean order by date desc LIMIT :limit OFFSET :offset")
+    @Query("select  * from RechargeBean order by rechargeDate desc LIMIT :limit OFFSET :offset")
     List<RechargeBean> findAll(int offset,int limit);
 }
diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/dbBean/RechargeBean.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/dbBean/RechargeBean.java
index a5740d1..1987c09 100644
--- a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/dbBean/RechargeBean.java
+++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/dbBean/RechargeBean.java
@@ -3,6 +3,8 @@
 import androidx.room.Entity;
 import androidx.room.PrimaryKey;
 
+import java.io.Serializable;
+
 /**
  * Copyright (C), 2023,
  * Author: zuo
@@ -10,38 +12,55 @@
  * Description: 鍏呭�煎疄浣撶被
  */
 @Entity
-public class RechargeBean {
+public class RechargeBean implements Serializable {
 
     @PrimaryKey(autoGenerate = true)
     public long id;
+
+    public String cardNumber;//鍗″彿锛堝疄浣撳崱鍙凤級
+    private String userCode;//鍏呭�兼満鐢熸垚鐨勭敤鎴风紪鍙�
+    private String userName;
+    private String personId;//鏈嶅姟鍣ㄨ繑鍥炵殑鐢ㄦ埛id
     private String serial;//璁惧搴忓垪鍙�
-    public String userName;
-    public String userId;//鐢ㄦ埛韬唤璇佸彿
-    public long date;
-    public String morny;//鍏呭�奸噾棰� 鍗曚綅鍏�
-    public String rechargeWater;//鍏呭�兼按閲�
-    public String balance;//浣欓 鍗曚綅鍏�
-    public String total_morn;//鎬诲厖鍊奸噾棰�
+    private String arerNumber;//鍖哄煙鍙�
+    private String morny;//鍏呭�奸噾棰� 鍗曚綅鍏�
+    private String balance;//浣欓 鍗曚綅鍏�
+    private String rechargeElectric;//鍏呭�肩數閲�
+
+    private String price;//鐢靛崟浠�
+
+    private String surplusElectic;//鍓╀綑鐢甸噺
+    private long rechargeDate;//鍏呭�兼椂闂�
+
+    private String userId;//鐢ㄦ埛韬唤璇佸彿
+
+    private String rechargeWater;//鍏呭�兼按閲�
+
+    private String totalMorny;//鎬诲厖鍊奸噾棰�
     //鐘舵�� 0鏈笂浼� 1鎴愬姛涓婁紶
-    public int state = 0;
+    private int state = 0;
 
-    public String cardNumber;//鍗″彿
-    public String surplusWater;//鍓╀綑姘撮噺 搴曚綅鍦ㄥ墠  2浣嶅皬鏁扮偣銆�鍗曚綅鍏�/绔嬫柟绫� ()
+    private String surplusWater;//鍓╀綑姘撮噺 搴曚綅鍦ㄥ墠  2浣嶅皬鏁扮偣銆�鍗曚綅鍏�/绔嬫柟绫� ()
 
-    public String getRechargeWater() {
-        return rechargeWater;
+    private String orderId;//鍏呭�艰鍗曞彿
+
+    private String deductionMorny;//琛ユ墸閽辨 鍏呭�艰ˉ鎵i噾棰�=鍏呭�奸噾棰�+鍏呭�煎墠璇诲彇鐨勫崱鍐呬綑棰�-鍏呭�煎洖璋冭繑鍥炲崱鍐呬綑棰�
+
+
+    public String getDeductionMorny() {
+        return deductionMorny;
     }
 
-    public void setRechargeWater(String rechargeWater) {
-        this.rechargeWater = rechargeWater;
+    public void setDeductionMorny(String deductionMorny) {
+        this.deductionMorny = deductionMorny;
     }
 
-    public String getSurplusWater() {
-        return surplusWater;
+    public String getOrderId() {
+        return orderId;
     }
 
-    public void setSurplusWater(String surplusWater) {
-        this.surplusWater = surplusWater;
+    public void setOrderId(String orderId) {
+        this.orderId = orderId;
     }
 
     public String getCardNumber() {
@@ -52,36 +71,12 @@
         this.cardNumber = cardNumber;
     }
 
-    public String getTotal_morn() {
-        return total_morn;
+    public String getUserCode() {
+        return userCode;
     }
 
-    public String getUserId() {
-        return userId;
-    }
-
-    public void setUserId(String userId) {
-        this.userId = userId;
-    }
-
-    public void setTotal_morn(String total_morn) {
-        this.total_morn = total_morn;
-    }
-
-    public int getState() {
-        return state;
-    }
-
-    public void setState(int state) {
-        this.state = state;
-    }
-
-    public String getSerial() {
-        return serial;
-    }
-
-    public void setSerial(String serial) {
-        this.serial = serial;
+    public void setUserCode(String userCode) {
+        this.userCode = userCode;
     }
 
     public String getUserName() {
@@ -92,13 +87,28 @@
         this.userName = userName;
     }
 
-
-    public long getDate() {
-        return date;
+    public String getPersonId() {
+        return personId;
     }
 
-    public void setDate(long date) {
-        this.date = date;
+    public void setPersonId(String personId) {
+        this.personId = personId;
+    }
+
+    public String getSerial() {
+        return serial;
+    }
+
+    public void setSerial(String serial) {
+        this.serial = serial;
+    }
+
+    public String getArerNumber() {
+        return arerNumber;
+    }
+
+    public void setArerNumber(String arerNumber) {
+        this.arerNumber = arerNumber;
     }
 
     public String getMorny() {
@@ -116,4 +126,77 @@
     public void setBalance(String balance) {
         this.balance = balance;
     }
+
+    public String getRechargeElectric() {
+        return rechargeElectric;
+    }
+
+    public void setRechargeElectric(String rechargeElectric) {
+        this.rechargeElectric = rechargeElectric;
+    }
+
+    public String getPrice() {
+        return price;
+    }
+
+    public void setPrice(String price) {
+        this.price = price;
+    }
+
+    public String getSurplusElectic() {
+        return surplusElectic;
+    }
+
+    public void setSurplusElectic(String surplusElectic) {
+        this.surplusElectic = surplusElectic;
+    }
+
+    public long getRechargeDate() {
+        return rechargeDate;
+    }
+
+    public void setRechargeDate(long rechargeDate) {
+        this.rechargeDate = rechargeDate;
+    }
+
+    public String getUserId() {
+        return userId;
+    }
+
+    public void setUserId(String userId) {
+        this.userId = userId;
+    }
+
+    public String getRechargeWater() {
+        return rechargeWater;
+    }
+
+    public void setRechargeWater(String rechargeWater) {
+        this.rechargeWater = rechargeWater;
+    }
+
+
+    public String getTotalMorny() {
+        return totalMorny;
+    }
+
+    public void setTotalMorny(String totalMorny) {
+        this.totalMorny = totalMorny;
+    }
+
+    public int getState() {
+        return state;
+    }
+
+    public void setState(int state) {
+        this.state = state;
+    }
+
+    public String getSurplusWater() {
+        return surplusWater;
+    }
+
+    public void setSurplusWater(String surplusWater) {
+        this.surplusWater = surplusWater;
+    }
 }
diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/dbBean/UserCardBean.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/dbBean/UserCardBean.java
index c017d6b..73d980a 100644
--- a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/dbBean/UserCardBean.java
+++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/dbBean/UserCardBean.java
@@ -13,23 +13,19 @@
 public class UserCardBean implements Serializable {
     @PrimaryKey(autoGenerate = true)
     public long id;
-    private String serial ;//璁惧搴忓垪鍙凤紙涔熸槸璁惧缂栧彿锛�
-
+    private String cardNumber;//鍗″彿锛堝疄浣撳崱鍙凤級
+    private String userCode;//鍏呭�兼満鐢熸垚鐨勭敤鎴风紪鍙�
     private String userName ;//鐢ㄦ埛鍚嶇О
     private String userID ;//韬唤璇佸彿
+    private String phone;//鐢佃瘽
+    private String personId;//鏈嶅姟鍣ㄨ繑鍥炵殑鐢ㄦ埛id
+    private int cardMorny;//寮�鍗¢噾棰�
+    private String addressCode;//鍦板潃缂栧彿
+    private String addressName;//鍦板潃鍚嶇О
+    private String arerNumber;//鍖哄煙鍙�
+    private long date;//寮�鍗℃椂闂�
+    private String serial ;//璁惧搴忓垪鍙凤紙涔熸槸璁惧缂栧彿锛�
 
-    private String cardNumber;//鍗″彿
-
-    private long date;
-    private String phone;
-    //鐘舵�� 0绌洪棽 1浣跨敤
-    private int St = 0;
-    //鏈嶅姟鍣ㄨ繑鍥炵殑鍐滄埛娉ㄥ唽缂栧彿
-    private String initPeasantCode;
-    //鐘舵�� 0鏈笂浼� 1鎴愬姛涓婁紶
-    private int state = 0;
-
-    private String addressCode;//鍖哄煙鍙�
 
     public String getCardNumber() {
         return cardNumber;
@@ -37,6 +33,54 @@
 
     public void setCardNumber(String cardNumber) {
         this.cardNumber = cardNumber;
+    }
+
+    public String getUserCode() {
+        return userCode;
+    }
+
+    public void setUserCode(String userCode) {
+        this.userCode = userCode;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public String getUserID() {
+        return userID;
+    }
+
+    public void setUserID(String userID) {
+        this.userID = userID;
+    }
+
+    public String getPhone() {
+        return phone;
+    }
+
+    public void setPhone(String phone) {
+        this.phone = phone;
+    }
+
+    public String getPersonId() {
+        return personId;
+    }
+
+    public void setPersonId(String personId) {
+        this.personId = personId;
+    }
+
+    public int getCardMorny() {
+        return cardMorny;
+    }
+
+    public void setCardMorny(int cardMorny) {
+        this.cardMorny = cardMorny;
     }
 
     public String getAddressCode() {
@@ -47,60 +91,21 @@
         this.addressCode = addressCode;
     }
 
-    public String getSerial() {
-        return serial;
+    public String getAddressName() {
+        return addressName;
     }
 
-    public void setSerial(String serial) {
-        this.serial = serial;
+    public void setAddressName(String addressName) {
+        this.addressName = addressName;
     }
 
-    public String getInitPeasantCode() {
-        return initPeasantCode;
+    public String getArerNumber() {
+        return arerNumber;
     }
 
-    public void setInitPeasantCode(String initPeasantCode) {
-        this.initPeasantCode = initPeasantCode;
+    public void setArerNumber(String arerNumber) {
+        this.arerNumber = arerNumber;
     }
-
-    public int getSt() {
-        return St;
-    }
-
-    public void setSt(int st) {
-        St = st;
-    }
-
-
-
-    public String getPhone() {
-        return phone;
-    }
-
-    public void setPhone(String phone) {
-        this.phone = phone;
-    }
-
-
-
-    public int getState() {
-        return state;
-    }
-
-    public void setState(int state) {
-        this.state = state;
-    }
-
-
-
-    public String getUserName() {
-        return userName;
-    }
-
-    public void setUserName(String userName) {
-        this.userName = userName;
-    }
-
 
     public long getDate() {
         return date;
@@ -110,13 +115,11 @@
         this.date = date;
     }
 
-
-
-    public String getUserID() {
-        return userID;
+    public String getSerial() {
+        return serial;
     }
 
-    public void setUserID(String userID) {
-        this.userID = userID;
+    public void setSerial(String serial) {
+        this.serial = serial;
     }
 }
diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/ApiManager.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/ApiManager.java
index 846b7b0..6746ef3 100644
--- a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/ApiManager.java
+++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/ApiManager.java
@@ -1,8 +1,10 @@
 package com.dayu.qiheonlinelibrary.net;
 
 import android.content.Context;
+import android.content.Intent;
 
 
+import com.dayu.baselibrary.business.BusinessProvider;
 import com.dayu.qiheonlinelibrary.net.subscribers.BaseProgressSubscriber;
 import com.dayu.qiheonlinelibrary.net.subscribers.ProgressSubscriber;
 import com.dayu.qiheonlinelibrary.net.subscribers.SubscriberListener;
@@ -99,7 +101,11 @@
                 observable = apiService.requestGet(path, params);
             }
         } else {
-            observable = apiService.requestPost(path, params);
+            if (params != null) {
+                observable = apiService.requestPost(path, params);
+            } else {
+                observable = apiService.requestPost(path);
+            }
         }
 
         mySubscriber = new ProgressSubscriber(context, hideLoading, listener);
@@ -110,10 +116,18 @@
                         if (o instanceof BaseResponse) {
                             BaseResponse tem = (BaseResponse) o;
                             BaseResponse<T> response = new BaseResponse<>();
+                            //鏈櫥褰曟垨鐧诲綍瓒呮椂锛岃閲嶆柊鐧诲綍
+                            if (tem.getCode()==100401){
+                                if (BusinessProvider.getBusinessProvider()!=null){
+                                    BusinessProvider.getBusinessProvider().startLoginNavigotor.navigateToLogin(context);
+                                }
+
+                            }
+
                             response.setCode(tem.getCode());
                             response.setMsg(tem.getMsg());
-
-                            if (tClass != null && tem.getData() instanceof Map) {
+                            if (tClass!= null) {
+                            if ( tem.getData() instanceof Map) {
                                 try {
 //                                    response.setData(MyJsonParser.getBeanFromMap((Map<String, Object>) tem.getData(), tClass));
                                     String jsonData = MyJsonParser.getJsontoMap((Map) tem.getData());
@@ -121,16 +135,18 @@
                                 } catch (Exception e) {
                                     e.printStackTrace();
                                 }
-                            } else if (tClass != null && tem.getData() instanceof List) {
+                            } else if (  tem.getData() instanceof List) {
                                 try {
                                     response.setData((T) MyJsonParser.getListByJson(MyJsonParser.getJsonbyList((List) tem.getData()), tClass));
                                 } catch (Exception e) {
                                     e.printStackTrace();
                                 }
-                            } else if (tClass != null && tem.getData() instanceof Integer) {
+                            } else if (  tem.getData() instanceof Integer) {
+                                response.setData((T) tem.getData());
+                            }  else if (tem.getData() instanceof Boolean){
                                 response.setData((T) tem.getData());
                             }
-                            if (tClass != null && tClass.getName() instanceof String && tem.getData() instanceof String) {
+                            if ( tClass.getName() instanceof String && tem.getData() instanceof String) {
                                 try {
                                     response.setData((T) tem.getData());
                                 } catch (Exception e) {
@@ -138,9 +154,7 @@
                                 }
                             }
                             return response;
-
-
-                        }
+                        }}
 
                         return null;
                     }
@@ -150,11 +164,6 @@
                 .subscribe(mySubscriber);
 
     }
-
-
-
-
-
 
 
 }
\ No newline at end of file
diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/ApiService.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/ApiService.java
index 988dbc7..0e2b367 100644
--- a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/ApiService.java
+++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/ApiService.java
@@ -32,7 +32,8 @@
     //    @FormUrlEncoded
     @POST()
     Observable<BaseResponse> requestPost(@Url String url, @Body Map<String, Object> params);
-
+    @POST()
+    Observable<BaseResponse> requestPost(@Url String url);
     @GET("{url}")
     Observable<BaseResponse> requestGet(@Path("url") String url, @QueryMap Map<String, Object> params);
 
diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/BaseResponse.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/BaseResponse.java
index 374110d..e000ea4 100644
--- a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/BaseResponse.java
+++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/BaseResponse.java
@@ -1,18 +1,30 @@
 package com.dayu.qiheonlinelibrary.net;
 
 
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import okhttp3.Handshake;
+import okhttp3.Headers;
+import okhttp3.MediaType;
+import okhttp3.Protocol;
+import okhttp3.Request;
+import okhttp3.Response;
+import okhttp3.ResponseBody;
+import okhttp3.internal.connection.Exchange;
+import okio.BufferedSource;
+
 /**
  * Copyright (C), 2023,
  * Author: zuo
  * Date: 2023-03-27 15:17
  * Description:
  */
-public class BaseResponse<T> {
+public class BaseResponse<T>  {
     private int code;
     private String msg;
     private T data;
     private String stackErrorInfo;//鍫嗘爤閿欒鎻忚堪
-
 
     public int getCode() {
         return code;
@@ -60,4 +72,5 @@
         this.data = data;
     }
 
+
 }
diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/Constants.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/Constants.java
index 40e742d..fe00c70 100644
--- a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/Constants.java
+++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/Constants.java
@@ -7,7 +7,7 @@
  * Description:
  */
 public class Constants {
-    public static final String BASE_URL = "http://yzgb.yunguangai.cn/api/";
+    public static final String BASE_URL = "http://120.46.45.35:20081/";
 
     /**
      * 浠h〃璇锋眰鎴愬姛
diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/MyIntercepterApplication.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/MyIntercepterApplication.java
index 717fea2..e8ae1a8 100644
--- a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/MyIntercepterApplication.java
+++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/MyIntercepterApplication.java
@@ -1,5 +1,7 @@
 package com.dayu.qiheonlinelibrary.net;
 
+import android.text.TextUtils;
+
 import com.dayu.qiheonlinelibrary.QHOnLineApplication;
 import com.dayu.qiheonlinelibrary.utils.SharedPreferencesHelper;
 import com.dayu.qiheonlinelibrary.utils.ToastUtil;
@@ -52,16 +54,9 @@
             if (request.method().equals("GET")) {
                 builder.url(request.url().toString());
             } else {
-
-                RequestBody body = request.body();
-                if (body instanceof FormBody) {
-                    FormBody oldFormBody = (FormBody) body;
-                    if (oldFormBody != null && oldFormBody.size() > 0) {
-                        //澶勭悊body
-                    }
+                if (!TextUtils.isEmpty(QHOnLineApplication.getInstance().tokenStr)) {
+                    builder.addHeader("Token-Cloud", QHOnLineApplication.getInstance().tokenStr);
                 }
-                builder.addHeader("os", "app");
-                builder.addHeader("Authorization", SharedPreferencesHelper.getInstance(QHOnLineApplication.qhAloneApplication.application).get("token", ""));
             }
             return builder.build();
         } catch (Exception e) {
diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/RSAUtile.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/RSAUtile.java
index c2f1654..4d98b06 100644
--- a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/RSAUtile.java
+++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/RSAUtile.java
@@ -1,11 +1,22 @@
 package com.dayu.qiheonlinelibrary.net;
 
+import java.io.ByteArrayInputStream;
+import java.io.UnsupportedEncodingException;
 import java.nio.charset.StandardCharsets;
+import java.security.InvalidKeyException;
 import java.security.KeyFactory;
+import java.security.NoSuchAlgorithmException;
 import java.security.PublicKey;
+import java.security.cert.CertificateFactory;
+import java.security.cert.X509Certificate;
+import java.security.spec.InvalidKeySpecException;
 import java.security.spec.X509EncodedKeySpec;
+import java.util.Base64;
 
+import javax.crypto.BadPaddingException;
 import javax.crypto.Cipher;
+import javax.crypto.IllegalBlockSizeException;
+import javax.crypto.NoSuchPaddingException;
 
 /**
  * author: zuo
@@ -15,18 +26,42 @@
  */
 public class RSAUtile {
 
- public static byte[] encryptByPublicKey(String data, String publicKey) throws Exception {
-  // 寰楀埌鍏挜
-  X509EncodedKeySpec keySpec = new X509EncodedKeySpec(publicKey.getBytes(StandardCharsets.UTF_8));
-  KeyFactory kf = KeyFactory.getInstance("RSA");
-  PublicKey keyPublic = kf.generatePublic(keySpec);
 
-  // 鍔犲瘑鏁版嵁
-  Cipher cp = Cipher.getInstance("RSA/ECB/PKCS1Padding");
-  cp.init(Cipher.ENCRYPT_MODE, keyPublic);
-  return cp.doFinal(data.getBytes(StandardCharsets.UTF_8));
- }
 
 
+    public static String encryptByPublicKey(String data, String publicKeyPEM) {
+        try {
+            // 寰楀埌鍏挜
+            publicKeyPEM = publicKeyPEM.replace("-----BEGIN PUBLIC KEY-----", "")
+                    .replace("-----END PUBLIC KEY-----", "")
+                    .replaceAll("\\s+", "");
+            // 瑙g爜Base64缂栫爜鐨勫叕閽�
+            byte[] decoded = new byte[0];
+            if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
+                decoded = Base64.getDecoder().decode(publicKeyPEM);
+            } else {
+                decoded = android.util.Base64.decode(publicKeyPEM, android.util.Base64.DEFAULT);
+            }
+            // 鐢熸垚鍏挜
+            X509EncodedKeySpec spec = new X509EncodedKeySpec(decoded);
+            KeyFactory keyFactory = KeyFactory.getInstance("RSA");
+            PublicKey publicKey = keyFactory.generatePublic(spec);
+            // 鍔犲瘑鏁版嵁
+            Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
+            cipher.init(Cipher.ENCRYPT_MODE, publicKey);
+            byte[] encryptedBytes = cipher.doFinal(data.getBytes("UTF-8"));
+            String encryptedData = null;
+            if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
+                encryptedData = Base64.getEncoder().encodeToString(encryptedBytes);
+            } else {
+                encryptedData = android.util.Base64.encodeToString(encryptedBytes, android.util.Base64.DEFAULT);
+            }
+            return encryptedData;
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return "";
+    }
+
 
 }
diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/progress/NetLoadingDialog.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/progress/NetLoadingDialog.java
index 9072ac8..1b138eb 100644
--- a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/progress/NetLoadingDialog.java
+++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/progress/NetLoadingDialog.java
@@ -44,12 +44,6 @@
     public void startAnim() {
         try {
             this.show();
-//            mHandler.postDelayed(new Runnable() {
-//                @Override
-//                public void run() {
-//                    mAnimationDrawable.start();
-//                }
-//            }, 100);
         } catch (Exception e) {
 
         }
@@ -57,7 +51,7 @@
 
     public void stopAnim() {
         try {
-//            mAnimationDrawable.stop();
+
             this.dismiss();
         } catch (Exception e) {
 
diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/tools/BaseNFCHelper.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/tools/BaseNFCHelper.java
index 318e271..ccafb6d 100644
--- a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/tools/BaseNFCHelper.java
+++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/tools/BaseNFCHelper.java
@@ -38,7 +38,7 @@
 
 
     static {
-        System.loadLibrary("qihealone-native-lib");
+        System.loadLibrary("qiheonline-native-lib");
     }
 
     public native String getSafeKey(Object object);
diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/utils/DeviceNumberUtils.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/utils/DeviceNumberUtils.java
deleted file mode 100644
index ad6a362..0000000
--- a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/utils/DeviceNumberUtils.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package com.dayu.qiheonlinelibrary.utils;
-
-
-import com.dayu.qiheonlinelibrary.QHOnLineApplication;
-import com.dayu.qiheonlinelibrary.dao.BaseDaoSingleton;
-import com.dayu.qiheonlinelibrary.dbBean.DeviceNumber;
-
-/**
- * Created by Android Studio.
- * author: zuo
- * Date: 2023-11-20
- * Time: 16:33
- * 澶囨敞锛� 鑾峰彇鏈嶅姟鍣ㄨ繑鍥炵殑璁惧鍙风殑宸ュ叿绫�
- */
-public class DeviceNumberUtils {
-
-    //   鑾峰彇鍏呭�兼満璁惧搴忓垪鍙�
-    public static String getDeviceNumber() {
-        DeviceNumber deviceNumber = BaseDaoSingleton.getInstance(QHOnLineApplication.getInstance().application).deviceNumberDao().findFirst();
-        if (deviceNumber != null) {
-            return deviceNumber.getDeviceRegistrationNumber();
-        } else {
-            return "";
-        }
-    }
-
-    //    璁剧疆鍏呭�兼満璁惧搴忓垪鍙�
-    public static void setDeviceNumber(String deviceRegistrationNumber) {
-        DeviceNumber deviceNumber = BaseDaoSingleton.getInstance(QHOnLineApplication.getInstance().application).deviceNumberDao().findFirst();
-        if (deviceNumber != null) {
-            deviceNumber.setDeviceRegistrationNumber(deviceRegistrationNumber);
-        } else {
-            deviceNumber = new DeviceNumber();
-            deviceNumber.setDeviceRegistrationNumber(deviceRegistrationNumber);
-        }
-        BaseDaoSingleton.getInstance(QHOnLineApplication.getInstance().application).deviceNumberDao().insert(deviceNumber);
-    }
-}
diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/utils/ExcelUtil.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/utils/ExcelUtil.java
index f63a5f3..e5a691d 100644
--- a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/utils/ExcelUtil.java
+++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/utils/ExcelUtil.java
@@ -133,7 +133,7 @@
                         list.add(projectBean.getSerial());
                         list.add(projectBean.getUserName());
                         list.add(projectBean.getCardNumber());
-                        list.add(DateUtil.dateToStamp(projectBean.getDate(), DateUtil.type2));
+                        list.add(DateUtil.dateToStamp(projectBean.getRechargeDate(), DateUtil.type2));
                         list.add(projectBean.getMorny());
                         list.add(projectBean.getBalance());
                     } else {
diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/utils/NFCWreatUtils.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/utils/NFCWreatUtils.java
new file mode 100644
index 0000000..a0e4e9d
--- /dev/null
+++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/utils/NFCWreatUtils.java
@@ -0,0 +1,141 @@
+package com.dayu.qiheonlinelibrary.utils;
+
+import android.app.Activity;
+import android.content.Intent;
+
+import com.dayu.qiheonlinelibrary.card.CleanCard;
+import com.dayu.qiheonlinelibrary.card.CleanUserCard;
+import com.dayu.qiheonlinelibrary.card.ConfigurationPowerCard;
+import com.dayu.qiheonlinelibrary.card.ConfigureDeviceRegistrationCrad;
+import com.dayu.qiheonlinelibrary.card.DomainCard;
+import com.dayu.qiheonlinelibrary.card.ElectricPriceCard;
+import com.dayu.qiheonlinelibrary.card.ManageCard;
+import com.dayu.qiheonlinelibrary.card.PassWordCard;
+import com.dayu.qiheonlinelibrary.card.RegionCard;
+import com.dayu.qiheonlinelibrary.card.RegisteredCard;
+import com.dayu.qiheonlinelibrary.dao.QHOnLineAppDatabase;
+import com.dayu.qiheonlinelibrary.tools.NFCWriteHelper;
+
+/**
+ * author: zuo
+ * Date: 2024-08-02
+ * Time: 18:01
+ * 澶囨敞锛�
+ */
+public class NFCWreatUtils {
+    Activity activity;
+    QHOnLineAppDatabase baseDao;
+    static NFCWreatUtils nfcWreatUtils;
+
+    public static NFCWreatUtils getInstance(Activity activity, QHOnLineAppDatabase baseDao) {
+        if (nfcWreatUtils == null) {
+            nfcWreatUtils = new NFCWreatUtils();
+            nfcWreatUtils.activity = activity;
+            nfcWreatUtils.baseDao = baseDao;
+        }
+        return nfcWreatUtils;
+    }
+
+
+    public boolean setmanageCard( Intent intent, final ManageCard manageCard) {
+        return NFCWriteHelper.getInstence(intent, activity).writeData(manageCard.toByte(baseDao), 1, 0);
+    }
+
+    /**
+     * 鍒朵綔娓呴浂鍗�
+     *
+     * @param intent
+     * @param clearOrInitCard
+     */
+    public boolean setClean( Intent intent, CleanCard clearOrInitCard) {
+        return NFCWriteHelper.getInstence(intent, activity).writeData(clearOrInitCard.toByte(baseDao), 1, 0);
+    }
+
+    /**
+     * 淇濆瓨鍖哄煙琛ㄥ彿鍗�
+     *
+     * @param intent
+     * @param regionCard
+     */
+    public boolean setRegionCard(Intent intent, RegionCard regionCard) {
+        return NFCWriteHelper.getInstence(intent, activity).writeData(regionCard.toByte(), 1, 0);
+    }
+
+    /**
+     * 瀵嗙爜鍗�
+     *
+     * @param intent
+     * @param passWordCard
+     */
+    public boolean setPassWordCard(Intent intent, PassWordCard passWordCard) {
+        return NFCWriteHelper.getInstence(intent, activity).writeData(passWordCard.toByte(baseDao), 1, 0);
+    }
+
+    /**
+     * 鐢ㄦ埛鐢甸噺鍗曚环
+     *
+     * @param intent
+     * @param electricPriceCard
+     */
+    public boolean setElectricPriceCard(Intent intent, ElectricPriceCard electricPriceCard) {
+        return NFCWriteHelper.getInstence(intent, activity).writeData(electricPriceCard.toByte(baseDao), 1, 0);
+    }
+
+    /**
+     * 閲嶆柊娉ㄥ唽璁惧鍗�
+     *
+     * @param intent
+     * @param registeredCard
+     */
+    public boolean setRegisteredCard(Intent intent, RegisteredCard registeredCard) {
+        return NFCWriteHelper.getInstence(intent, activity).writeData(registeredCard.toByte(baseDao), 1, 0);
+    }
+
+    /**
+     * 鍒犻櫎鍏ㄩ儴鐢ㄦ埛鍗�
+     *
+     * @param intent
+     * @param cleanUserCard
+     */
+    public boolean setCleanUserCard(Intent intent, CleanUserCard cleanUserCard) {
+        return NFCWriteHelper.getInstence(intent, activity).writeData(cleanUserCard.toByte(baseDao), 1, 0);
+    }
+
+    /**
+     * 璁剧疆鍩熷悕鍗�
+     *
+     * @param intent
+     * @param domainCard
+     */
+    public boolean setDomainCard(Intent intent, DomainCard domainCard) {
+        boolean domainCrdFlag;
+        try {
+            domainCrdFlag = NFCWriteHelper.getInstence(intent, activity).writeData(domainCard.getZeroByte(), 1, 0);
+            if (!domainCrdFlag) {
+                return false;
+            }
+            domainCrdFlag = NFCWriteHelper.getInstence(intent, activity).writeData(domainCard.getOneByte(), 1, 1);
+            if (!domainCrdFlag) {
+                return false;
+            }
+            domainCrdFlag = NFCWriteHelper.getInstence(intent, activity).writeData(domainCard.getTwoByte(), 1, 2);
+        } catch (Exception e) {
+            domainCrdFlag = false;
+            throw new RuntimeException(e);
+        }
+        return false;
+    }
+
+
+    public boolean setConfigDeviceRegiest(Intent intent, ConfigureDeviceRegistrationCrad configureDeviceRegistrationCrad) {
+        return NFCWriteHelper.getInstence(intent, activity).writeData(configureDeviceRegistrationCrad.toByte(baseDao), 1, 0);
+    }
+
+    public boolean setConfigurationPower(Intent intent, ConfigurationPowerCard configurationPowerCard) {
+        try {
+            return NFCWriteHelper.getInstence(intent, activity).writeData(configurationPowerCard.toByte(baseDao), 1, 0);
+        } catch (Exception e) {
+            return false;
+        }
+    }
+}
diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/view/ChooseReplacementDialog.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/view/ChooseReplacementDialog.java
new file mode 100644
index 0000000..480f393
--- /dev/null
+++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/view/ChooseReplacementDialog.java
@@ -0,0 +1,85 @@
+package com.dayu.qiheonlinelibrary.view;
+
+import static android.view.Gravity.CENTER;
+import static com.dayu.baselibrary.utils.BaseCommon.REPLACE_HAS_CARD;
+import static com.dayu.baselibrary.utils.BaseCommon.REPLACE_NO_CARD;
+
+import android.app.Activity;
+import android.app.Dialog;
+import android.view.ViewGroup;
+import android.view.WindowManager;
+import android.widget.RadioGroup;
+import android.widget.TextView;
+
+import com.dayu.baselibrary.dao.BaseDaoSingleton;
+import com.dayu.baselibrary.dao.LibraryDao;
+import com.dayu.baselibrary.dbbean.LibraryBean;
+import com.dayu.baselibrary.view.ConfirmDialog;
+import com.dayu.qiheonlinelibrary.R;
+
+/**
+ * author: zuo
+ * Date: 2024-08-09
+ * Time: 10:05
+ * 澶囨敞锛氶�夋嫨琛ュ崱绫诲瀷
+ */
+public class ChooseReplacementDialog extends Dialog {
+
+    Activity mContext;
+    boolean ischose = false;
+    OnCallBack mOnCallBack;
+    int type;
+
+    public ChooseReplacementDialog(Activity context, OnCallBack onCallBack) {
+        super(context, com.dayu.baselibrary.R.style.ws_pay_showSelfDialog);
+        mContext = context;
+        mOnCallBack = onCallBack;
+        initView();
+    }
+
+    private void initView() {
+        getWindow().setGravity(CENTER);
+        setContentView(R.layout.dialog_chose_type);
+        setCanceledOnTouchOutside(false);
+        setCancelable(false);
+        RadioGroup radioGroup = findViewById(com.dayu.baselibrary.R.id.radioLibrary);
+
+
+        radioGroup.setOnCheckedChangeListener((group, checkedId) -> {
+            ischose = true;
+            // 褰撻�変腑鐨凴adioButton鍙戠敓鍙樺寲鏃惰皟鐢�
+            if (checkedId == R.id.hasCard) {
+                type = REPLACE_HAS_CARD;
+
+            } else if (checkedId == R.id.noCard) {
+                type = REPLACE_NO_CARD;
+            }
+        });
+        TextView okBtn = findViewById(com.dayu.baselibrary.R.id.ok);
+        okBtn.setOnClickListener(v -> {
+            if (ischose) {
+                mOnCallBack.listener(type);
+            }
+        });
+
+    }
+
+    @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 OnCallBack {
+        void listener(int type);
+    }
+}
diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/view/ReplacementPriceDialog.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/view/ReplacementPriceDialog.java
new file mode 100644
index 0000000..45f97aa
--- /dev/null
+++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/view/ReplacementPriceDialog.java
@@ -0,0 +1,149 @@
+package com.dayu.qiheonlinelibrary.view;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.text.Editable;
+import android.text.TextUtils;
+import android.text.TextWatcher;
+import android.view.Gravity;
+import android.view.KeyEvent;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.WindowManager;
+import android.widget.EditText;
+import android.widget.TextView;
+
+import com.dayu.baselibrary.utils.TipUtil;
+import com.dayu.baselibrary.view.EdtDialog;
+import com.dayu.qiheonlinelibrary.R;
+
+/**
+ * author: zuo
+ * Date: 2024-08-09
+ * Time: 14:52
+ * 澶囨敞锛氳ˉ鍗″伐鏈垂
+ */
+public class ReplacementPriceDialog extends Dialog {
+
+    Intent intent;
+    Context mContext;
+    DialogBack mDialogBack;
+
+    String mTitle;
+
+
+    public ReplacementPriceDialog(Context context, DialogBack dialogBack) {
+        super(context, com.dayu.baselibrary.R.style.ws_pay_showSelfDialog);
+        mContext = context;
+        mDialogBack = dialogBack;
+        initView();
+    }
+
+
+    private void initView() {
+        getWindow().setGravity(Gravity.CENTER);
+        setContentView(R.layout.dialog_replace_price);
+        setCanceledOnTouchOutside(false);
+        TextView textView = (TextView) this.findViewById(com.dayu.baselibrary.R.id.pw_ok);
+        EditText editText = (EditText) this.findViewById(com.dayu.baselibrary.R.id.pw_et);
+        setPricePoint(editText);
+        TextView title = this.findViewById(com.dayu.baselibrary.R.id.title);
+        if (!TextUtils.isEmpty(mTitle)) {
+            title.setVisibility(View.VISIBLE);
+            title.setText(mTitle);
+        }
+        textView.setOnClickListener(v -> {
+            String data = editText.getText().toString();
+            if (TextUtils.isEmpty(data)) {
+                TipUtil.show("璇疯緭鍏ュ伐鏈垂");
+            } else {
+                if (mDialogBack != null) {
+                    mDialogBack.onOk(data);
+                }
+            }
+
+        });
+        // 璁剧疆 OnKeyListener 鎷︽埅杩斿洖閿簨浠�
+        setOnKeyListener((dialog, keyCode, event) -> {
+            if (keyCode == KeyEvent.KEYCODE_BACK) {
+                // 鎷︽埅杩斿洖閿簨浠讹紝杩斿洖 true
+                return true;
+            }
+            return false;
+        });
+    }
+
+    @Override
+    public void show() {
+
+        super.show();
+        /**
+         * 璁剧疆瀹藉害鍏ㄥ睆锛岃璁剧疆鍦╯how鐨勫悗闈�
+         */
+        WindowManager.LayoutParams layoutParams = getWindow().getAttributes();
+        layoutParams.gravity = 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 DialogBack {
+        void onOk(String data);
+    }
+
+
+    //鏍¢獙閲戦
+    public void setPricePoint(final EditText editText) {
+        editText.addTextChangedListener(new TextWatcher() {
+            @Override
+            public void onTextChanged(CharSequence s, int start, int before,
+                                      int count) {
+                if (s.toString().contains(".")) {
+                    if (s.length() - 1 - s.toString().indexOf(".") > 2) {
+                        s = s.toString().subSequence(0,
+                                s.toString().indexOf(".") + 3);
+                        editText.setText(s);
+                        editText.setSelection(s.length());
+                    }
+                }
+                if (s.toString().trim().substring(0).equals(".")) {
+                    s = "0" + s;
+                    editText.setText(s);
+                    editText.setSelection(2);
+                }
+
+                if (s.toString().startsWith("0")
+                        && s.toString().trim().length() > 1) {
+                    if (!s.toString().substring(1, 2).equals(".")) {
+                        editText.setText(s.subSequence(0, 1));
+                        editText.setSelection(1);
+                    }
+                }
+                String morny = editText.getText().toString();
+                if (!TextUtils.isEmpty(morny)) {
+//                    rechageWater = MornyUtil.intDiv(MornyUtil.changeY2F(editText.getText().toString()), waterPrice);
+//                    binding.redRechargeWater.setText("鍏呭�兼按閲忥細" + rechageWater + " 绔嬫柟绫�(鍚�)");
+                }
+
+
+            }
+
+            @Override
+            public void beforeTextChanged(CharSequence s, int start, int count,
+                                          int after) {
+
+            }
+
+            @Override
+            public void afterTextChanged(Editable s) {
+                // TODO Auto-generated method stub
+
+            }
+
+        });
+
+    }
+}
diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/view/UserSearchDialog.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/view/UserSearchDialog.java
new file mode 100644
index 0000000..245828c
--- /dev/null
+++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/view/UserSearchDialog.java
@@ -0,0 +1,89 @@
+package com.dayu.qiheonlinelibrary.view;
+
+import static android.view.Gravity.CENTER;
+
+import android.app.Dialog;
+import android.content.DialogInterface;
+import android.text.TextUtils;
+import android.view.KeyEvent;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.WindowManager;
+import android.widget.EditText;
+import android.widget.TextView;
+
+import com.dayu.baselibrary.utils.ToastUtil;
+import com.dayu.baselibrary.view.EdtDialog;
+import com.dayu.qiheonlinelibrary.R;
+import com.dayu.qiheonlinelibrary.activity.BaseActivity;
+
+/**
+ * author: zuo
+ * Date: 2024-08-07
+ * Time: 18:27
+ * 澶囨敞锛氭悳绱㈢敤鎴�
+ */
+public class UserSearchDialog extends Dialog {
+    BaseActivity mContext;
+    EditText etName, etCardId;
+
+    public interface SearchCallBack {
+        void onBack(String name, String cardId);
+    }
+
+    SearchCallBack searchCallBack;
+
+    public UserSearchDialog(BaseActivity context, SearchCallBack searchCallBack) {
+        super(context, com.dayu.baselibrary.R.style.ws_pay_showSelfDialog);
+        mContext = context;
+        this.searchCallBack = searchCallBack;
+        initView();
+    }
+
+    private void initView() {
+        getWindow().setGravity(CENTER);
+        setContentView(R.layout.dialog_search_user);
+        setCanceledOnTouchOutside(false);
+
+        etName = findViewById(R.id.etName);
+        etCardId = findViewById(R.id.etCardId);
+        TextView ok = findViewById(R.id.pw_ok);
+        ok.setOnClickListener(v -> {
+            String name = etName.getText().toString();
+            String cardId = etCardId.getText().toString();
+            if (!TextUtils.isEmpty(name) || !TextUtils.isEmpty(cardId)) {
+                if (searchCallBack != null) {
+                    searchCallBack.onBack(name, cardId);
+                    UserSearchDialog.this.dismiss();
+                }
+            } else {
+                ToastUtil.show("璇疯緭鍏ュ鍚嶆垨韬唤璇佸彿");
+            }
+        });
+        // 璁剧疆 OnKeyListener 鎷︽埅杩斿洖閿簨浠�
+        setOnKeyListener(new DialogInterface.OnKeyListener() {
+            @Override
+            public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
+                if (keyCode == KeyEvent.KEYCODE_BACK) {
+                    // 鎷︽埅杩斿洖閿簨浠讹紝杩斿洖 true
+                    return true;
+                }
+                return false;
+            }
+        });
+    }
+
+    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);
+    }
+}
diff --git a/qiheonlinelibrary/src/main/res/layout/activity_admin_qhl.xml b/qiheonlinelibrary/src/main/res/layout/activity_admin_qhl.xml
index 149320a..4b6e80c 100644
--- a/qiheonlinelibrary/src/main/res/layout/activity_admin_qhl.xml
+++ b/qiheonlinelibrary/src/main/res/layout/activity_admin_qhl.xml
@@ -32,7 +32,8 @@
                 android:padding="5dp"
                 android:text="鍒朵綔绠$悊鍗�"
                 android:textColor="@color/text_selecter_color"
-                android:textSize="@dimen/text_size" />
+                android:textSize="@dimen/text_size"
+                android:visibility="gone" />
 
             <TextView
                 android:id="@+id/admin_cleanZero"
@@ -42,9 +43,9 @@
                 android:layout_marginTop="20dp"
                 android:padding="5dp"
                 android:text="鍒朵綔娓呴浂鍗�"
-                android:visibility="gone"
                 android:textColor="@color/text_selecter_color"
-                android:textSize="@dimen/text_size" />
+                android:textSize="@dimen/text_size"
+                android:visibility="gone" />
 
 
             <TextView
@@ -52,12 +53,12 @@
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_marginLeft="20dp"
-                android:visibility="gone"
                 android:layout_marginTop="20dp"
                 android:padding="5dp"
                 android:text="鍒朵綔瀵嗙爜鍗�"
                 android:textColor="@color/text_selecter_color"
-                android:textSize="@dimen/text_size" />
+                android:textSize="@dimen/text_size"
+                android:visibility="gone" />
 
 
             <TextView
diff --git a/qiheonlinelibrary/src/main/res/layout/activity_card_search_qhl.xml b/qiheonlinelibrary/src/main/res/layout/activity_card_search_qhl.xml
new file mode 100644
index 0000000..3e605f7
--- /dev/null
+++ b/qiheonlinelibrary/src/main/res/layout/activity_card_search_qhl.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <com.dayu.baselibrary.view.TitleBar
+        android:id="@+id/titleBar"
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/dimen_title_height"
+        android:background="@color/title_bar_bg"
+        app:centerText="閫夋嫨鍗�"
+        app:leftImage="@mipmap/icon_back"
+    />
+
+
+    <com.scwang.smart.refresh.layout.SmartRefreshLayout
+        android:id="@+id/refreshLayout"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_below="@+id/titleBar">
+
+        <androidx.recyclerview.widget.RecyclerView
+            android:id="@+id/recyclerView"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:background="#ffffff"
+            android:overScrollMode="never"
+            android:padding="10dp" />
+
+        <com.scwang.smart.refresh.footer.ClassicsFooter
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content" />
+    </com.scwang.smart.refresh.layout.SmartRefreshLayout>
+
+
+</RelativeLayout>
\ No newline at end of file
diff --git a/qiheonlinelibrary/src/main/res/layout/activity_home_qhl.xml b/qiheonlinelibrary/src/main/res/layout/activity_home_qhl.xml
index 7fadb46..9151b59 100644
--- a/qiheonlinelibrary/src/main/res/layout/activity_home_qhl.xml
+++ b/qiheonlinelibrary/src/main/res/layout/activity_home_qhl.xml
@@ -49,7 +49,40 @@
             android:textColor="@color/text_selecter_color"
             android:textSize="@dimen/home_text_size" />
     </LinearLayout>
-
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="50dp"
+        android:layout_gravity="center"
+        android:layout_marginTop="30dp"
+        android:orientation="horizontal">
+        <TextView
+            android:id="@+id/home_loss"
+            android:layout_width="0dp"
+            android:layout_height="match_parent"
+            android:layout_weight="1"
+            android:gravity="center"
+            android:text="鎸傚け"
+            android:textColor="@color/text_selecter_color"
+            android:textSize="@dimen/home_text_size" />
+        <TextView
+            android:id="@+id/home_reportLoss"
+            android:layout_width="0dp"
+            android:layout_height="match_parent"
+            android:layout_weight="1"
+            android:gravity="center"
+            android:text="瑙i櫎鎸傚け"
+            android:textColor="@color/text_selecter_color"
+            android:textSize="@dimen/home_text_size" />
+        <TextView
+            android:id="@+id/home_replacement"
+            android:layout_width="0dp"
+            android:layout_height="match_parent"
+            android:layout_weight="1"
+            android:gravity="center"
+            android:text="琛ュ崱"
+            android:textColor="@color/text_selecter_color"
+            android:textSize="@dimen/home_text_size" />
+    </LinearLayout>
     <LinearLayout
         android:layout_width="match_parent"
         android:layout_height="50dp"
diff --git a/qiheonlinelibrary/src/main/res/layout/activity_my_qhl.xml b/qiheonlinelibrary/src/main/res/layout/activity_my_qhl.xml
index f933594..2a8c7c8 100644
--- a/qiheonlinelibrary/src/main/res/layout/activity_my_qhl.xml
+++ b/qiheonlinelibrary/src/main/res/layout/activity_my_qhl.xml
@@ -46,7 +46,26 @@
 
             </LinearLayout>
 
+<LinearLayout
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content">
 
+    <TextView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="鍖哄煙鍚嶇О锛�"
+        android:textColor="@color/text_selecter_color"
+        android:textSize="@dimen/text_size" />
+
+    <TextView
+        android:id="@+id/my_adName"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:textColor="@color/text_selecter_color"
+        android:textSize="@dimen/text_size" />
+
+
+</LinearLayout>
             <LinearLayout
                 android:id="@+id/my_admin"
                 android:layout_width="match_parent"
@@ -173,6 +192,7 @@
                 android:layout_height="wrap_content"
                 android:layout_marginTop="15dp"
                 android:text="鐧诲綍瀵嗙爜璁剧疆"
+                android:visibility="gone"
                 android:textColor="@color/text_selecter_color"
                 android:textSize="@dimen/text_size" />
 
diff --git a/qiheonlinelibrary/src/main/res/layout/activity_new_card_qhl.xml b/qiheonlinelibrary/src/main/res/layout/activity_new_card_qhl.xml
index 58933f4..e916674 100644
--- a/qiheonlinelibrary/src/main/res/layout/activity_new_card_qhl.xml
+++ b/qiheonlinelibrary/src/main/res/layout/activity_new_card_qhl.xml
@@ -35,7 +35,7 @@
                     android:textSize="@dimen/new_card_size" />
 
                 <TextView
-                    android:id="@+id/newCard_villageNum"
+                    android:id="@+id/newCard_arerNumber"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                     android:inputType="number"
@@ -53,7 +53,7 @@
                 <TextView
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:text="濮� 鍚嶏細"
+                    android:text="濮�    鍚嶏細"
                     android:textSize="@dimen/new_card_size" />
 
                 <EditText
@@ -61,6 +61,7 @@
                     android:layout_width="0dp"
                     android:layout_height="wrap_content"
                     android:layout_weight="1"
+                    android:text="娴嬭瘯"
                     android:textSize="@dimen/new_card_size" />
 
                 <ImageView
@@ -90,6 +91,7 @@
                     android:digits="0123456789Xx"
                     android:inputType="text"
                     android:maxLength="18"
+                    android:text="130107199210160024"
                     android:textSize="@dimen/new_card_size" />
 
 
@@ -137,7 +139,7 @@
                 <TextView
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:text="鐢�  璇濓細"
+                    android:text="鐢�     璇濓細"
                     android:textSize="@dimen/new_card_size" />
 
                 <EditText
@@ -146,9 +148,30 @@
                     android:layout_height="wrap_content"
                     android:inputType="number"
                     android:maxLength="11"
+                    android:text="15802220723"
                     android:textSize="@dimen/new_card_size" />
             </LinearLayout>
 
+            <LinearLayout
+                style="@style/newCardLL"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content">
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="寮�鍗″伐鏈垂(鍏�)锛�"
+                    android:textSize="@dimen/new_card_size" />
+
+                <EditText
+                    android:id="@+id/newCard_morny"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:inputType="number"
+                    android:text="5"
+
+                    android:textSize="@dimen/new_card_size" />
+            </LinearLayout>
 
         </LinearLayout>
 
diff --git a/qiheonlinelibrary/src/main/res/layout/activity_recharge_qhl.xml b/qiheonlinelibrary/src/main/res/layout/activity_recharge_qhl.xml
index 825e865..6b46f5f 100644
--- a/qiheonlinelibrary/src/main/res/layout/activity_recharge_qhl.xml
+++ b/qiheonlinelibrary/src/main/res/layout/activity_recharge_qhl.xml
@@ -38,206 +38,220 @@
 
     </LinearLayout>
 
-
-    <LinearLayout
-        android:id="@+id/recharge_text_LL"
+    <ScrollView
         android:layout_width="match_parent"
         android:layout_height="match_parent"
-        android:layout_below="@+id/titleBar"
-        android:orientation="vertical"
-        android:padding="20dp"
-        android:visibility="gone">
+        android:layout_above="@+id/recharge_registBtn"
+        android:layout_below="@+id/titleBar">
 
         <LinearLayout
             android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_marginTop="15dp"
-            android:orientation="horizontal">
-
-            <TextView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:text="鍗$姸鎬侊細"
-                android:textSize="@dimen/text_size" />
-
-            <TextView
-                android:id="@+id/red_statu"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:textColor="@color/red"
-                android:textSize="@dimen/new_card_size" />
-
-        </LinearLayout>
-
-        <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_marginTop="15dp"
-            android:orientation="horizontal">
-
-            <TextView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:text="濮撳悕锛�"
-                android:textSize="@dimen/new_card_size" />
-
-            <TextView
-                android:id="@+id/userName"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:textSize="@dimen/new_card_size" />
-
-        </LinearLayout>
-
-        <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_marginTop="15dp"
-            android:orientation="horizontal">
-
-            <TextView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:text="鍗″彿锛�"
-                android:textSize="@dimen/text_size" />
-
-            <TextView
-                android:id="@+id/red_initCode"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:text=""
-                android:textSize="@dimen/new_card_size" />
-
-        </LinearLayout>
-
-        <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_marginTop="15dp"
-            android:orientation="horizontal"
-            android:visibility="visible">
-
-            <TextView
-
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:text="鍓╀綑閲戦锛�"
-                android:textSize="@dimen/text_size" />
-
-            <TextView
-                android:id="@+id/red_remainder_blance"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:textSize="@dimen/new_card_size" />
-
-        </LinearLayout>
-
-        <TextView
-            android:id="@+id/red_remainder_water"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_marginTop="15dp"
-            android:text="鍓╀綑姘撮噺锛�"
-            android:visibility="gone"
-            android:textSize="@dimen/text_size" />
-
-        <TextView
-            android:id="@+id/red_rechargeDate"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_marginTop="15dp"
-            android:text="鏈�鍚庤喘姘存棩鏈燂細"
-            android:textSize="@dimen/text_size"
-            android:visibility="visible" />
-        <TextView
-            android:id="@+id/red_rechargeElectric"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_marginTop="15dp"
-            android:text="鐢甸噺鍗曚环锛�"
-            android:textSize="@dimen/text_size"
-            android:visibility="visible" />
-        <TextView
-            android:id="@+id/red_rechargeNumber"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_marginTop="15dp"
-            android:text="鍏呭�兼鏁帮細"
-            android:textSize="@dimen/text_size"
-            android:visibility="gone" />
-
-        <TextView
-            android:id="@+id/red_total_water"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_marginTop="15dp"
-            android:text="鎬荤敤姘撮噺锛�"
-            android:textSize="@dimen/text_size"
-            android:visibility="gone" />
-
-        <TextView
-            android:id="@+id/red_total_power"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_marginTop="15dp"
-            android:text="鎬荤敤鐢甸噺锛�"
-            android:textSize="@dimen/text_size"
-            android:visibility="gone" />
-
-
-        <TextView
-            android:id="@+id/red_waterPrice"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_marginTop="15dp"
-            android:text="姣忕珛鏂圭背姘翠环鏍硷細"
-            android:textSize="@dimen/text_size"
-            android:visibility="gone" />
-
-        <LinearLayout
-            android:id="@+id/recharge_LL"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_marginTop="15dp"
+            android:layout_height="match_parent"
             android:orientation="vertical">
 
-            <TextView
-                android:id="@+id/red_recharge_water"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:layout_marginTop="15dp"
-                android:text="鍏呭�兼按閲忥細"
-                android:textSize="@dimen/text_size"
-                android:visibility="gone" />
 
             <LinearLayout
-                android:layout_width="wrap_content"
+                android:id="@+id/recharge_text_LL"
+                android:layout_width="match_parent"
                 android:layout_height="match_parent"
-                android:orientation="horizontal">
+                android:layout_below="@+id/titleBar"
+                android:orientation="vertical"
+                android:padding="20dp"
+                android:visibility="gone">
+
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="15dp"
+                    android:orientation="horizontal">
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text="鍗$姸鎬侊細"
+                        android:textSize="@dimen/text_size" />
+
+                    <TextView
+                        android:id="@+id/red_statu"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:textColor="@color/red"
+                        android:textSize="@dimen/new_card_size" />
+
+                </LinearLayout>
+
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="15dp"
+                    android:orientation="horizontal">
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text="濮撳悕锛�"
+                        android:textSize="@dimen/new_card_size" />
+
+                    <TextView
+                        android:id="@+id/userName"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:textSize="@dimen/new_card_size" />
+
+                </LinearLayout>
+
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="15dp"
+                    android:orientation="horizontal">
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text="鍗″彿锛�"
+                        android:textSize="@dimen/text_size" />
+
+                    <TextView
+                        android:id="@+id/red_initCode"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:text=""
+                        android:textSize="@dimen/new_card_size" />
+
+                </LinearLayout>
+
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="15dp"
+                    android:orientation="horizontal"
+                    android:visibility="visible">
+
+                    <TextView
+
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text="鍓╀綑閲戦锛�"
+                        android:textSize="@dimen/text_size" />
+
+                    <TextView
+                        android:id="@+id/red_remainder_blance"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:textSize="@dimen/new_card_size" />
+
+                </LinearLayout>
+
+                <TextView
+                    android:id="@+id/red_remainder_water"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="15dp"
+                    android:text="鍓╀綑姘撮噺锛�"
+                    android:textSize="@dimen/text_size"
+                    android:visibility="gone" />
+
+                <TextView
+                    android:id="@+id/red_rechargeDate"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="15dp"
+                    android:text="鏈�鍚庤喘姘存棩鏈燂細"
+                    android:textSize="@dimen/text_size"
+                    android:visibility="visible" />
+
+                <TextView
+                    android:id="@+id/red_rechargeElectric"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="15dp"
+                    android:text="鐢甸噺鍗曚环锛�"
+                    android:textSize="@dimen/text_size"
+                    android:visibility="visible" />
+
+                <TextView
+                    android:id="@+id/red_rechargeNumber"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="15dp"
+                    android:text="鍏呭�兼鏁帮細"
+                    android:textSize="@dimen/text_size"
+                    android:visibility="gone" />
+
+                <TextView
+                    android:id="@+id/red_total_water"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="15dp"
+                    android:text="鎬荤敤姘撮噺锛�"
+                    android:textSize="@dimen/text_size"
+                    android:visibility="gone" />
+
+                <TextView
+                    android:id="@+id/red_total_power"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="15dp"
+                    android:text="鎬荤敤鐢甸噺锛�"
+                    android:textSize="@dimen/text_size"
+                    android:visibility="gone" />
 
 
                 <TextView
-                    android:id="@+id/recharge_tx"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:text="閲戦锛堝厓锛夛細"
-                    android:textColor="@color/red"
-                    android:textSize="@dimen/new_card_size" />
-
-                <EditText
-                    android:id="@+id/recharge_water"
+                    android:id="@+id/red_waterPrice"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
-                    android:hint="璇疯緭鍏ュ厖鍊肩殑閲戦"
-                    android:inputType="numberDecimal"
-                    android:textSize="@dimen/new_card_size" />
+                    android:layout_marginTop="15dp"
+                    android:text="姣忕珛鏂圭背姘翠环鏍硷細"
+                    android:textSize="@dimen/text_size"
+                    android:visibility="gone" />
 
+                <LinearLayout
+                    android:id="@+id/recharge_LL"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="15dp"
+                    android:orientation="vertical">
+
+                    <TextView
+                        android:id="@+id/red_recharge_water"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="15dp"
+                        android:text="鍏呭�兼按閲忥細"
+                        android:textSize="@dimen/text_size"
+                        android:visibility="gone" />
+
+                    <LinearLayout
+                        android:layout_width="wrap_content"
+                        android:layout_height="match_parent"
+                        android:orientation="horizontal">
+
+
+                        <TextView
+                            android:id="@+id/recharge_tx"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:text="閲戦锛堝厓锛夛細"
+                            android:textColor="@color/red"
+                            android:textSize="@dimen/new_card_size" />
+
+                        <EditText
+                            android:id="@+id/recharge_water"
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:hint="璇疯緭鍏ュ厖鍊肩殑閲戦"
+                            android:inputType="numberDecimal"
+                            android:textSize="@dimen/new_card_size" />
+
+                    </LinearLayout>
+
+
+                </LinearLayout>
             </LinearLayout>
-
-
         </LinearLayout>
-    </LinearLayout>
-
+    </ScrollView>
 
     <TextView
         android:id="@+id/recharge_registBtn"
diff --git a/qiheonlinelibrary/src/main/res/layout/activity_red_card_qhl.xml b/qiheonlinelibrary/src/main/res/layout/activity_red_card_qhl.xml
index b6094af..1115795 100644
--- a/qiheonlinelibrary/src/main/res/layout/activity_red_card_qhl.xml
+++ b/qiheonlinelibrary/src/main/res/layout/activity_red_card_qhl.xml
@@ -26,13 +26,26 @@
             android:layout_margin="20dp"
             android:orientation="vertical">
 
-            <TextView
-                android:id="@+id/red_name"
+            <LinearLayout
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="15dp"
-                android:text="濮撳悕锛�"
-                android:textSize="@dimen/text_size" />
+                android:orientation="horizontal">
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="濮撳悕锛�"
+                    android:textSize="@dimen/text_size" />
+
+                <TextView
+                    android:id="@+id/red_name"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+
+                    android:text=""
+                    android:textSize="@dimen/text_size" />
+            </LinearLayout>
 
             <LinearLayout
                 android:layout_width="match_parent"
@@ -47,75 +60,155 @@
                     android:textSize="@dimen/text_size" />
 
                 <TextView
-                    android:id="@+id/red_initCode"
+                    android:id="@+id/red_cardCode"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                     android:text=""
                     android:textSize="@dimen/text_size" />
             </LinearLayout>
 
-
-            <TextView
-                android:id="@+id/red_remainder_blance"
+            <LinearLayout
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="15dp"
-                android:text="鍓╀綑閲戦锛�"
-                android:textSize="@dimen/text_size"
-                android:visibility="visible" />
+                android:orientation="horizontal">
 
-            <TextView
-                android:id="@+id/red_remainder_water"
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="鐢ㄦ埛缂栧彿锛�"
+                    android:textSize="@dimen/text_size" />
+
+                <TextView
+                    android:id="@+id/red_userCode"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:text=""
+                    android:textSize="@dimen/text_size" />
+            </LinearLayout>
+
+            <LinearLayout
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="15dp"
-                android:text="鍓╀綑姘撮噺锛�"
-                android:textSize="@dimen/text_size"
-                android:visibility="gone"/>
+                android:orientation="horizontal">
 
-            <TextView
-                android:id="@+id/red_rechargeDate"
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="鍓╀綑閲戦锛�"
+                    android:textSize="@dimen/text_size" />
+
+                <TextView
+                    android:id="@+id/red_blance"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:text=""
+                    android:textSize="@dimen/text_size"
+                    android:visibility="visible" />
+            </LinearLayout>
+
+            <LinearLayout
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="15dp"
-                android:text="鏈�鍚庤喘姘存棩鏈燂細"
-                android:textSize="@dimen/text_size"
-                android:visibility="visible" />
+                android:orientation="horizontal">
 
-            <TextView
-                android:id="@+id/red_rechargeNumber"
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="鍓╀綑鐢甸噺锛�"
+                    android:textSize="@dimen/text_size" />
+
+                <TextView
+                    android:id="@+id/red_electric"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:text=""
+                    android:textSize="@dimen/text_size"
+                    android:visibility="visible" />
+            </LinearLayout>
+
+            <LinearLayout
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="15dp"
-                android:text="鍏呭�兼鏁帮細"
-                android:textSize="@dimen/text_size"
-                android:visibility="gone" />
+                android:orientation="horizontal">
 
-            <TextView
-                android:id="@+id/red_total_water"
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="鎬诲厖鍊奸噾棰濓細"
+                    android:textSize="@dimen/text_size" />
+
+                <TextView
+                    android:id="@+id/red_totalMorny"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:text=""
+                    android:textSize="@dimen/text_size"
+                    android:visibility="visible" />
+            </LinearLayout>
+
+            <LinearLayout
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="15dp"
-                android:text="鎬荤敤姘撮噺锛�"
-                android:textSize="@dimen/text_size"
-                android:visibility="gone" />
+                android:orientation="horizontal">
 
-            <TextView
-                android:id="@+id/red_total_power"
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="鎵嬫満鍙凤細"
+                    android:textSize="@dimen/text_size" />
+
+                <TextView
+                    android:id="@+id/red_phone"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:text=""
+                    android:textSize="@dimen/text_size" />
+            </LinearLayout>
+
+            <LinearLayout
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="15dp"
-                android:text="鎬荤敤鐢甸噺锛�"
-                android:textSize="@dimen/text_size"
-                android:visibility="gone" />
+                android:orientation="horizontal">
 
-            <TextView
-                android:id="@+id/red_statu"
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="韬唤璇佸彿锛�"
+                    android:textSize="@dimen/text_size" />
+
+                <TextView
+                    android:id="@+id/red_codeId"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:text=""
+                    android:textSize="@dimen/text_size" />
+            </LinearLayout>
+
+            <LinearLayout
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="15dp"
-                android:text="鍗$姸鎬侊細"
-                android:textSize="@dimen/text_size" />
+                android:orientation="horizontal">
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="鍗$姸鎬侊細"
+                    android:textSize="@dimen/text_size" />
+
+                <TextView
+                    android:id="@+id/red_statu"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:text=""
+                    android:textSize="@dimen/text_size" />
+            </LinearLayout>
 
         </LinearLayout>
 
diff --git a/qiheonlinelibrary/src/main/res/layout/activity_user_search_qhl.xml b/qiheonlinelibrary/src/main/res/layout/activity_user_search_qhl.xml
new file mode 100644
index 0000000..b05f66a
--- /dev/null
+++ b/qiheonlinelibrary/src/main/res/layout/activity_user_search_qhl.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <com.dayu.baselibrary.view.TitleBar
+        android:id="@+id/titleBar"
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/dimen_title_height"
+        android:background="@color/title_bar_bg"
+        app:centerText="閫夋嫨鐢ㄦ埛"
+        app:leftImage="@mipmap/icon_back"
+        app:rightText="鎼滅储" />
+
+
+    <com.scwang.smart.refresh.layout.SmartRefreshLayout
+        android:id="@+id/refreshLayout"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_below="@+id/titleBar">
+
+        <androidx.recyclerview.widget.RecyclerView
+            android:id="@+id/recyclerView"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:background="#ffffff"
+            android:overScrollMode="never"
+            android:padding="10dp" />
+
+        <com.scwang.smart.refresh.footer.ClassicsFooter
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content" />
+    </com.scwang.smart.refresh.layout.SmartRefreshLayout>
+
+
+</RelativeLayout>
\ No newline at end of file
diff --git a/qiheonlinelibrary/src/main/res/layout/dialog_chose_type.xml b/qiheonlinelibrary/src/main/res/layout/dialog_chose_type.xml
new file mode 100644
index 0000000..0c7bff0
--- /dev/null
+++ b/qiheonlinelibrary/src/main/res/layout/dialog_chose_type.xml
@@ -0,0 +1,105 @@
+<?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/hasCard"
+                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/noCard"
+                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/qiheonlinelibrary/src/main/res/layout/dialog_replace_price.xml b/qiheonlinelibrary/src/main/res/layout/dialog_replace_price.xml
new file mode 100644
index 0000000..e1184e8
--- /dev/null
+++ b/qiheonlinelibrary/src/main/res/layout/dialog_replace_price.xml
@@ -0,0 +1,78 @@
+<?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="#00ffffff"
+    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:id="@+id/title"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="20dp"
+            android:layout_marginTop="20dp"
+            android:layout_marginRight="20dp"
+            android:layout_marginBottom="5dp"
+            android:gravity="center"
+            android:text="琛ュ崱宸ユ湰璐�"
+            android:textColor="@color/dialog_btn"
+            android:textSize="25sp"
+            android:textStyle="bold" />
+
+
+        <EditText
+            android:id="@+id/pw_et"
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/edt_height"
+            android:layout_marginLeft="20dp"
+            android:layout_marginTop="20dp"
+            android:layout_marginRight="20dp"
+            android:background="@drawable/editbg"
+            android:hint="璇疯緭鍏ヨˉ鍗″伐鏈垂锛堝厓锛�"
+            android:paddingLeft="10dp"
+            android:textColor="#000000" />
+
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="2px"
+            android:layout_marginTop="20dp"
+            android:background="@color/line_bg" />
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:gravity="center_horizontal"
+            android:orientation="horizontal"
+            android:padding="5dp">
+
+
+
+
+            <TextView
+                android:id="@+id/pw_ok"
+                android:layout_width="0dp"
+                android:layout_height="@dimen/dialog_btn_height"
+                android:layout_weight="1"
+                android:background="@drawable/textview_select_bg"
+                android:gravity="center"
+                android:text="纭�    璁�"
+                android:textColor="@color/dialog_btn"
+                android:textSize="20sp" />
+
+
+        </LinearLayout>
+
+
+    </LinearLayout>
+
+</LinearLayout>
+
diff --git a/qiheonlinelibrary/src/main/res/layout/dialog_search_user.xml b/qiheonlinelibrary/src/main/res/layout/dialog_search_user.xml
new file mode 100644
index 0000000..afdc1c2
--- /dev/null
+++ b/qiheonlinelibrary/src/main/res/layout/dialog_search_user.xml
@@ -0,0 +1,75 @@
+<?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"
+        android:padding="5dp">
+
+        <TextView
+
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="20dp"
+            android:layout_marginTop="20dp"
+            android:layout_marginRight="20dp"
+            android:gravity="center"
+            android:text="鎼滅储鐢ㄦ埛"
+            android:textColor="@color/text_color"
+            android:textSize="20sp"
+            android:textStyle="bold" />
+
+        <EditText
+            android:id="@+id/etName"
+            android:layout_width="match_parent"
+            android:layout_height="50dp"
+            android:layout_marginLeft="20dp"
+            android:layout_marginTop="20dp"
+            android:layout_marginRight="20dp"
+            android:background="@drawable/editbg"
+            android:hint="璇疯緭鍏ョ敤鎴峰悕"
+            android:paddingLeft="15dp"
+            android:textColor="#000000"
+            android:textCursorDrawable="@drawable/cursor_drawable" />
+
+        <EditText
+            android:id="@+id/etCardId"
+            android:layout_width="match_parent"
+            android:layout_height="50dp"
+            android:layout_marginLeft="20dp"
+            android:layout_marginTop="20dp"
+            android:layout_marginRight="20dp"
+            android:background="@drawable/editbg"
+            android:hint="璇疯緭鍏ヨ韩浠借瘉鍙�"
+            android:paddingLeft="15dp"
+            android:textColor="#000000"
+            android:textCursorDrawable="@drawable/cursor_drawable" />
+
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="2px"
+            android:layout_marginTop="20dp"
+            android:background="@color/line_bg" />
+
+        <TextView
+            android:id="@+id/pw_ok"
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/dialog_btn_height"
+            android:gravity="center"
+            android:text="纭�      璁�"
+            android:textColor="@color/dialog_btn"
+            android:textSize="@dimen/text_size" />
+
+    </LinearLayout>
+
+</LinearLayout>
+
diff --git a/qiheonlinelibrary/src/main/res/layout/qihe_line_item_user.xml b/qiheonlinelibrary/src/main/res/layout/qihe_line_item_user.xml
new file mode 100644
index 0000000..78ee506
--- /dev/null
+++ b/qiheonlinelibrary/src/main/res/layout/qihe_line_item_user.xml
@@ -0,0 +1,139 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android">
+
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="vertical">
+
+        <LinearLayout
+            android:id="@+id/item"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="13dp"
+            android:layout_marginTop="10dp"
+            android:layout_marginRight="13dp"
+            android:orientation="vertical">
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+
+                android:orientation="horizontal">
+
+                <TextView
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:text="濮撳悕锛�"
+                    android:textSize="18sp" />
+
+                <TextView
+                    android:id="@+id/userName"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="2"
+                    android:text=""
+                    android:textSize="18sp" />
+            </LinearLayout>
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="3dp"
+                android:orientation="horizontal">
+
+                <TextView
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:text="韬唤璇佸彿锛�"
+                    android:textSize="18sp" />
+
+                <TextView
+                    android:id="@+id/cardID"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="2"
+                    android:text=""
+                    android:textSize="18sp" />
+            </LinearLayout>
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="3dp"
+                android:orientation="horizontal">
+
+                <TextView
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:text="鎵嬫満鍙凤細"
+                    android:textSize="18sp" />
+
+                <TextView
+                    android:id="@+id/phone"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="2"
+                    android:text=""
+                    android:textSize="18sp" />
+            </LinearLayout>
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="3dp"
+                android:orientation="horizontal">
+
+                <TextView
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:text="鍦板潃锛�"
+                    android:textSize="18sp" />
+
+                <TextView
+                    android:id="@+id/address"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="2"
+                    android:text=""
+                    android:textSize="18sp" />
+            </LinearLayout>
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="3dp"
+                android:orientation="horizontal">
+
+                <TextView
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:text="鐘舵�侊細"
+                    android:textSize="18sp" />
+
+                <TextView
+                    android:id="@+id/state"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="2"
+                    android:text=""
+                    android:textSize="18sp" />
+            </LinearLayout>
+        </LinearLayout>
+
+
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="1px"
+            android:layout_marginTop="13dp"
+            android:background="#000000" />
+
+    </LinearLayout>
+</layout>
+
diff --git a/qiheonlinelibrary/src/main/res/layout/qihe_line_iten_card.xml b/qiheonlinelibrary/src/main/res/layout/qihe_line_iten_card.xml
new file mode 100644
index 0000000..ceab31c
--- /dev/null
+++ b/qiheonlinelibrary/src/main/res/layout/qihe_line_iten_card.xml
@@ -0,0 +1,184 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android">
+
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="vertical">
+
+        <LinearLayout
+            android:id="@+id/item"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="13dp"
+            android:layout_marginTop="10dp"
+            android:layout_marginRight="13dp"
+            android:orientation="vertical">
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+
+                android:orientation="horizontal">
+
+                <TextView
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:text="鍗″彿锛�"
+                    android:textSize="18sp" />
+
+                <TextView
+                    android:id="@+id/cardId"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="2"
+                    android:text=""
+                    android:textSize="18sp" />
+            </LinearLayout>
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="3dp"
+                android:orientation="horizontal">
+
+                <TextView
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:text="鐢ㄦ埛缂栧彿锛�"
+                    android:textSize="18sp" />
+
+                <TextView
+                    android:id="@+id/userCode"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="2"
+                    android:text=""
+                    android:textSize="18sp" />
+            </LinearLayout>
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="3dp"
+                android:orientation="horizontal">
+
+                <TextView
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:text="鍗″唴浣欓锛�"
+                    android:textSize="18sp" />
+
+                <TextView
+                    android:id="@+id/balance"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="2"
+                    android:text=""
+                    android:textSize="18sp" />
+            </LinearLayout>
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="3dp"
+                android:orientation="horizontal">
+
+                <TextView
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:text="鍓╀綑鐢甸噺锛�"
+                    android:textSize="18sp" />
+
+                <TextView
+                    android:id="@+id/balanceElectic"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="2"
+                    android:text=""
+                    android:textSize="18sp" />
+            </LinearLayout>
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="3dp"
+                android:orientation="horizontal">
+
+                <TextView
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:text="绱鍏呭�硷細"
+                    android:textSize="18sp" />
+
+                <TextView
+                    android:id="@+id/totalMorny"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="2"
+                    android:text=""
+                    android:textSize="18sp" />
+            </LinearLayout>
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="3dp"
+                android:orientation="horizontal">
+
+                <TextView
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:text="鍗$姸鎬侊細"
+                    android:textSize="18sp" />
+
+                <TextView
+                    android:id="@+id/state"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="2"
+                    android:text=""
+                    android:textSize="18sp" />
+            </LinearLayout>
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="3dp"
+                android:gravity="center"
+                android:orientation="horizontal">
+
+<!--                <TextView-->
+<!--                    android:layout_width="0dp"-->
+<!--                    android:layout_height="wrap_content"-->
+<!--                    android:layout_weight="1"-->
+<!--                    android:text="鏈�鍚庡厖鍊兼椂闂达細"-->
+<!--                    android:textSize="18sp" />-->
+
+                <TextView
+                    android:id="@+id/lastRechargeTime"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+
+                    android:text=""
+                    android:textSize="18sp" />
+            </LinearLayout>
+
+
+        </LinearLayout>
+
+
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="1px"
+            android:layout_marginTop="13dp"
+            android:background="#000000" />
+
+    </LinearLayout>
+</layout>
+

--
Gitblit v1.8.0