From 7f55711fd88ff5dc67bbd386fbecc7bd50bd98c2 Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期四, 06 三月 2025 14:44:04 +0800
Subject: [PATCH] feat(generallibrary): 新增制卡管理功能
---
generallibrary/src/main/java/com/dayu/general/net/NetConstans.kt | 14
qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/RetrofitClient.java | 1
generallibrary/src/main/java/com/dayu/general/activity/BaseNfcActivity.kt | 8
baselibrary/src/main/java/com/dayu/baselibrary/net/BaseApiService.java | 7
generallibrary/src/main/res/drawable/ic_arrow_right.xml | 10
generallibrary/src/main/res/layout/dialog_search.xml | 142 +++++
generallibrary/src/main/java/com/dayu/general/dialog/SearchDialog.kt | 76 +++
generallibrary/src/main/res/layout/fragment_card.xml | 25
baselibrary/src/main/res/layout/custom_titlebar.xml | 7
generallibrary/src/main/java/com/dayu/general/activity/NfcWreatActivity.kt | 48 +
generallibrary/src/main/res/layout/fragment_my.xml | 20
generallibrary/src/main/java/com/dayu/general/net/ApiService.kt | 32 +
generallibrary/src/main/res/drawable/card_ripple_effect.xml | 11
qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/MyIntercepterApplication.java | 9
generallibrary/src/main/AndroidManifest.xml | 4
generallibrary/src/main/java/com/dayu/general/activity/ManageListActivity.kt | 15
generallibrary/src/main/java/com/dayu/general/net/BaseResponse.kt | 16
generallibrary/src/main/java/com/dayu/general/net/MyInercepterApplication.kt | 84 +++
qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/ApiService.java | 7
generallibrary/src/main/java/com/dayu/general/activity/BSCardFragment.kt | 11
generallibrary/src/main/res/layout/activity_new_user_card_ge.xml | 21
generallibrary/src/main/res/layout/activity_manage_list_ge.xml | 156 ++++++
generallibrary/src/main/java/com/dayu/general/bean/card/CardCommon.kt | 184 +++----
generallibrary/src/main/res/layout/activity_nfc_write_ge.xml | 131 +++++
generallibrary/src/main/java/com/dayu/general/net/RetrofitClient.kt | 68 ++
/dev/null | 13
generallibrary/src/main/java/com/dayu/general/activity/SearchUserActivity.kt | 74 ++
generallibrary/src/main/res/layout/fragment_recharge.xml | 31
baselibrary/src/main/res/values/colors.xml | 1
generallibrary/src/main/res/drawable/bg_card.xml | 9
generallibrary/src/main/java/com/dayu/general/net/ApiManager.kt | 176 +++++++
generallibrary/src/main/res/layout/activity_search_user_ge.xml | 41 +
32 files changed, 1,272 insertions(+), 180 deletions(-)
diff --git a/baselibrary/src/main/java/com/dayu/baselibrary/net/BaseApiService.java b/baselibrary/src/main/java/com/dayu/baselibrary/net/BaseApiService.java
new file mode 100644
index 0000000..f6f8882
--- /dev/null
+++ b/baselibrary/src/main/java/com/dayu/baselibrary/net/BaseApiService.java
@@ -0,0 +1,7 @@
+package com.dayu.baselibrary.net;
+
+public interface BaseApiService {
+
+
+
+}
diff --git a/baselibrary/src/main/res/layout/custom_titlebar.xml b/baselibrary/src/main/res/layout/custom_titlebar.xml
index 693296c..ca1e8c3 100644
--- a/baselibrary/src/main/res/layout/custom_titlebar.xml
+++ b/baselibrary/src/main/res/layout/custom_titlebar.xml
@@ -84,14 +84,14 @@
android:layout_weight="2"
android:background="@null"
android:gravity="center_vertical|right"
- android:orientation="horizontal"
- android:paddingRight="15dp">
+ android:orientation="horizontal">
<TextView
android:id="@+id/tv_titlebar_right"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
+ android:layout_marginRight="15dp"
android:background="@null"
android:text="瀹屾垚"
android:textColor="#ffffff"
@@ -103,6 +103,9 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@null"
+ android:paddingLeft="5dp"
+ android:paddingTop="10dp"
+ android:paddingBottom="10dp"
android:src="@null"
android:visibility="visible" />
</LinearLayout>
diff --git a/baselibrary/src/main/res/values/colors.xml b/baselibrary/src/main/res/values/colors.xml
index 948f6bd..af528ef 100644
--- a/baselibrary/src/main/res/values/colors.xml
+++ b/baselibrary/src/main/res/values/colors.xml
@@ -40,4 +40,5 @@
<color name="button_text_color">#555</color>
<color name="button_select_text_color">#0aa666</color>
+ <color name="title_bar_text">#333333</color>
</resources>
\ No newline at end of file
diff --git a/generallibrary/src/main/AndroidManifest.xml b/generallibrary/src/main/AndroidManifest.xml
index 9db0f55..593d0cb 100644
--- a/generallibrary/src/main/AndroidManifest.xml
+++ b/generallibrary/src/main/AndroidManifest.xml
@@ -48,6 +48,10 @@
<!-- </intent-filter>-->
<!-- </activity>-->
<activity android:name="com.dayu.general.activity.NewCardActivity" />
+ <activity android:name="com.dayu.general.activity.ManageListActivity" />
+ <activity android:name="com.dayu.general.activity.SearchUserActivity"/>
+ <activity android:name="com.dayu.general.activity.NfcWreatActivity" />
+ <activity android:name="com.dayu.general.activity.NewCardActivity"/>
<meta-data
diff --git a/generallibrary/src/main/java/com/dayu/general/activity/BSCardFragment.kt b/generallibrary/src/main/java/com/dayu/general/activity/BSCardFragment.kt
index e19da99..806c03e 100644
--- a/generallibrary/src/main/java/com/dayu/general/activity/BSCardFragment.kt
+++ b/generallibrary/src/main/java/com/dayu/general/activity/BSCardFragment.kt
@@ -9,6 +9,11 @@
import com.dayu.general.databinding.FragmentCardBinding
import com.tencent.bugly.proguard.v
+/**
+ * @author: zuo
+ * @desc: 鍒跺崱棣栭〉
+ * @since:2025/3/6
+ */
class BSCardFragment :Fragment() {
private var binding: FragmentCardBinding? = null
@@ -28,7 +33,11 @@
private fun initView() {
binding?.homeNewCard?.setOnClickListener {
- val intent = Intent(context, NewCardActivity::class.java)
+ val intent = Intent(context, SearchUserActivity::class.java)
+ startActivity(intent)
+ }
+ binding?.homeManage?.setOnClickListener {
+ val intent = Intent(context, ManageListActivity::class.java)
startActivity(intent)
}
}
diff --git a/generallibrary/src/main/java/com/dayu/general/activity/BaseNfcActivity.kt b/generallibrary/src/main/java/com/dayu/general/activity/BaseNfcActivity.kt
new file mode 100644
index 0000000..b00bef6
--- /dev/null
+++ b/generallibrary/src/main/java/com/dayu/general/activity/BaseNfcActivity.kt
@@ -0,0 +1,8 @@
+package com.dayu.general.activity
+
+import android.content.Intent
+import com.dayu.baselibrary.activity.BaseNfcActivity
+
+abstract class BaseNfcActivity:BaseNfcActivity() {
+
+}
\ No newline at end of file
diff --git a/generallibrary/src/main/java/com/dayu/general/activity/ManageListActivity.kt b/generallibrary/src/main/java/com/dayu/general/activity/ManageListActivity.kt
new file mode 100644
index 0000000..e612834
--- /dev/null
+++ b/generallibrary/src/main/java/com/dayu/general/activity/ManageListActivity.kt
@@ -0,0 +1,15 @@
+package com.dayu.general.activity
+
+import android.os.Bundle
+import com.dayu.general.databinding.ActivityManageListGeBinding
+
+class ManageListActivity : BaseActivity() {
+
+ var binding: ActivityManageListGeBinding? = null
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ binding = ActivityManageListGeBinding.inflate(layoutInflater)
+ setContentView(binding?.root)
+ }
+
+}
\ No newline at end of file
diff --git a/generallibrary/src/main/java/com/dayu/general/activity/NfcWreatActivity.kt b/generallibrary/src/main/java/com/dayu/general/activity/NfcWreatActivity.kt
new file mode 100644
index 0000000..202d43b
--- /dev/null
+++ b/generallibrary/src/main/java/com/dayu/general/activity/NfcWreatActivity.kt
@@ -0,0 +1,48 @@
+package com.dayu.general.activity
+
+import android.content.Intent
+import android.os.Bundle
+import com.dayu.general.bean.card.CardCommon
+import com.dayu.general.databinding.ActivityNfcWriteGeBinding
+
+/**
+ * @author: zuo
+ * @date: 2021/3/30
+ * @description:鍐欏崱鐣岄潰
+ */
+class NfcWreatActivity:BaseNfcActivity() {
+
+ var binding:ActivityNfcWriteGeBinding? = null
+
+ var cardType = ""
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ binding = ActivityNfcWriteGeBinding.inflate(layoutInflater)
+ setContentView(binding?.root)
+ getInitData()
+ }
+
+ /**
+ * 鑾峰彇鏁版嵁
+ */
+ private fun getInitData(){
+ cardType= intent?.getStringExtra("cardType")?:""
+ }
+
+ private fun setTextData(){
+ when(cardType){
+ CardCommon.CHECK_CARD->{
+ binding?.cardData?.text = "鍐欑敤鎴峰崱"
+ }
+
+ }
+ }
+ override fun onNfcBack(intent: Intent?) {
+ TODO("Not yet implemented")
+
+
+
+
+ }
+}
\ No newline at end of file
diff --git a/generallibrary/src/main/java/com/dayu/general/activity/SearchUserActivity.kt b/generallibrary/src/main/java/com/dayu/general/activity/SearchUserActivity.kt
new file mode 100644
index 0000000..c0fb6d5
--- /dev/null
+++ b/generallibrary/src/main/java/com/dayu/general/activity/SearchUserActivity.kt
@@ -0,0 +1,74 @@
+package com.dayu.general.activity
+
+import android.os.Bundle
+import android.widget.Toast
+import com.dayu.baselibrary.view.TitleBar.ClickType_LEFT_IMAGE
+import com.dayu.baselibrary.view.TitleBar.ClickType_RIGHT_IMAGE
+import com.dayu.general.databinding.ActivitySearchUserGeBinding
+import com.dayu.general.dialog.SearchDialog
+
+/**
+ * @author: zuo
+ * @date: 2023/6/26 16:09
+ * @description:鎼滅储鐢ㄦ埛
+ */
+class SearchUserActivity : BaseActivity() {
+
+ var binding: ActivitySearchUserGeBinding? = null
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ binding = ActivitySearchUserGeBinding.inflate(layoutInflater)
+ setContentView(binding?.root)
+ initView()
+ }
+
+
+ fun initView() {
+ binding?.titleBar?.setOnItemclickListner(ClickType_LEFT_IMAGE) { this.finish() }
+ binding?.titleBar?.setOnItemclickListner(ClickType_RIGHT_IMAGE) {
+ // 鍒涘缓鎼滅储瀵硅瘽妗�
+ val searchDialog = SearchDialog(this)
+
+ // 璁剧疆鎼滅储鐩戝惉鍣�
+ searchDialog.setOnSearchListener(object : SearchDialog.OnSearchListener {
+ override fun onSearch(farmerId: String, farmerName: String, cardNumber: String) {
+ // 澶勭悊鎼滅储缁撴灉
+ // 杩欓噷鍙槸绀轰緥锛屽疄闄呭簲鐢ㄤ腑鍙兘闇�瑕佽皟鐢ˋPI鎴栨煡璇㈡暟鎹簱
+ val message =
+ "鎼滅储鏉′欢锛歕n鍐滄埛缂栧彿锛�$farmerId\n鍐滄埛鍚嶇О锛�$farmerName\n鍗″彿锛�$cardNumber"
+ // 鎵ц瀹為檯鐨勬悳绱㈤�昏緫
+ performSearch(farmerId, farmerName, cardNumber)
+ }
+ })
+ // 鏄剧ず瀵硅瘽妗�
+ searchDialog.show()
+ }
+ }
+ /**
+ * 鎵ц鎼滅储閫昏緫
+ * 杩欓噷鍙槸涓�涓ず渚嬫柟娉曪紝瀹為檯搴旂敤涓渶瑕佹牴鎹叿浣撻渶姹傚疄鐜�
+ */
+ private fun performSearch(farmerId: String, farmerName: String, cardNumber: String) {
+ // 杩欓噷鍙互瀹炵幇瀹為檯鐨勬悳绱㈤�昏緫
+ // 渚嬪锛氳皟鐢ˋPI銆佹煡璇㈡暟鎹簱绛�
+
+ // 绀轰緥锛氭瀯寤烘悳绱㈡潯浠�
+ val searchConditions = mutableMapOf<String, String>()
+
+ if (farmerId.isNotEmpty()) {
+ searchConditions["farmerId"] = farmerId
+ }
+
+ if (farmerName.isNotEmpty()) {
+ searchConditions["farmerName"] = farmerName
+ }
+
+ if (cardNumber.isNotEmpty()) {
+ searchConditions["cardNumber"] = cardNumber
+ }
+
+ // 鏍规嵁鎼滅储鏉′欢鎵ц鎼滅储
+ // 瀹為檯搴旂敤涓紝杩欓噷鍙兘鏄綉缁滆姹傛垨鏁版嵁搴撴煡璇�
+ // searchRepository.search(searchConditions)
+ }
+}
\ No newline at end of file
diff --git a/generallibrary/src/main/java/com/dayu/general/bean/card/CardCommon.kt b/generallibrary/src/main/java/com/dayu/general/bean/card/CardCommon.kt
index fac205c..9031af7 100644
--- a/generallibrary/src/main/java/com/dayu/general/bean/card/CardCommon.kt
+++ b/generallibrary/src/main/java/com/dayu/general/bean/card/CardCommon.kt
@@ -7,106 +7,6 @@
val ERROR_MOVE: Int = -2
- /**
- * 鐢ㄦ埛鍒峰崱寮�娉靛墠
- */
-
- val USER_CARD_TYPE_1: String = "A1"
-
- /**
- * 鐢ㄦ埛鍒峰崱寮�娉靛悗
- */
-
- val USER_CARD_TYPE_2: String = "A8"
-
- /**
- * 鐢ㄦ埛鍙犲姞鍏呭��
- */
-
- val USER_CARD_TYPE_3: String = "A2"
-
-
- /**
- * 璁剧疆鍖哄煙琛ㄥ彿鍗�
- */
-
- val REGION: String = "B0"
-
-
- /**
- * 璁剧疆鐢ㄦ埛鐢甸噺鍗曚环鍗�
- */
-
- val ELECTRIC_PRICE: String = "B1"
-
-
- /**
- * 绠$悊鍗�
- */
-
- val MANAGE_CRAD: String = "B2"
-
-
- /**
- * 娓呴浂鍗�
- */
-
- val CLEAN_CARD_TYPE: String = "C8"
-
-
- /**
- * 瀵嗙爜鍗�
- */
-
- val PASS_WORD_CRAD_TYPE: String = "B3"
-
-
- /**
- * 閰嶇疆榛戝崱 褰撶敤鎴蜂涪澶卞崱鏃讹紝闇�瑕佸湪瀵瑰簲鐨勬帶鍒跺櫒鎶婃鐢ㄦ埛閰嶇疆涓洪粦鎴凤紝闃叉闈炴硶鐢ㄦ按
- */
-
- val BLACK: String = "B4"
-
-
- /**
- * 浠ヤ笅鏈敤鍒�
- * *****************************************************************************************************************************************
- */
- /**
- * 閲嶆柊娉ㄥ唽璁惧鍗�
- */
-
- val REGISTERED_CARD_TYPE: String = "BA"
-
- /**
- * 鍒犻櫎鍏ㄩ儴鐢ㄦ埛鍗�
- */
-
- val CLEAN_ALL_USER_CARD_TYPE: String = "BB"
-
- /**
- * 璁剧疆鍩熷悕鍗�
- */
-
- val DOMAIN_CARD_TYPE: String = "C1"
-
- /**
- * 娴嬭瘯鍗�
- */
-
- val TEST_CARD_TYPE: String = "A4"
-
- /**
- * 閰嶇疆璁惧娉ㄥ唽淇℃伅鍗�
- */
-
- val CONFIGURATION_CARD_TYPE: String = "BC"
-
- /**
- * 閰嶇疆姘存车鍔熺巼鍗�
- */
-
- val CONFIGURATION_POWER_CARD_TYPE: String = "BD"
/**
* 鑾峰彇榛樿鐨勫崱鏍囪瘑
@@ -118,15 +18,97 @@
var cardData = ""
when (cardType) {
CLEAN_CARD_TYPE -> cardData = "3668F7A30119"
- MANAGE_CRAD, REGISTERED_CARD_TYPE, CLEAN_ALL_USER_CARD_TYPE, TEST_CARD_TYPE, CONFIGURATION_CARD_TYPE, CONFIGURATION_POWER_CARD_TYPE, PASS_WORD_CRAD_TYPE, BLACK, ELECTRIC_PRICE -> cardData =
+ MANAGE_CRAD, USER_CARD_TYPE_1, USER_CARD_TYPE_2, USER_CARD_TYPE_3, REGION_CARD, ELECTRIC_PRICE_CARD, MANAGE_CRAD, VALVE_TIME_CARD, GPS_CARD, AREA_CARD, IP_CARD, CHECK_CARD, DEBUG_CARD, CLEAN_CARD_TYPE -> cardData =
"A0B1C289"
}
return cardData
}
companion object {
+
+
+ /**
+ * 鐢ㄦ埛鍒峰崱寮�娉靛墠
+ */
+
+ const val USER_CARD_TYPE_1: String = "A1"
+
+ /**
+ * 鐢ㄦ埛鍒峰崱寮�娉靛悗
+ */
+
+ const val USER_CARD_TYPE_2: String = "A8"
+
+ /**
+ * 鐢ㄦ埛鍙犲姞鍏呭��
+ */
+
+ const val USER_CARD_TYPE_3: String = "A2"
+
+
+ /**
+ * 璁剧疆鍖哄煙琛ㄥ彿鍗�
+ */
+
+ const val REGION_CARD: String = "B0"
+
+
+ /**
+ * 鍙栨暟鍗★紙闇�瑕佸埛鍗″彇鏁帮級
+ */
+
+ const val ELECTRIC_PRICE_CARD: String = "B1"
+
+
+ /**
+ * 鍙栨暟鍗★紙鍒峰崱鍙栨暟杩斿啓鎴愬姛锛�
+ */
+
+ const val MANAGE_CRAD: String = "B2"
+
+
+ /**
+ * 妫�鏌ュ崱
+ */
+ const val CHECK_CARD: String = "B3"
+
+ /**
+ * 璋冭瘯鍗�
+ */
+ const val DEBUG_CARD = "B4"
+
+ /**
+ * 娓呴浂鍗�
+ */
+
+ const val CLEAN_CARD_TYPE: String = "C1"
+
+ /**
+ * IP鍦板潃璁剧疆鍗�
+ */
+
+ const val IP_CARD: String = "B5"
+
+ /**
+ * 鍖哄煙璁剧疆鍗�
+ */
+ const val AREA_CARD: String = "B6"
+
+
+ /**
+ * GPS璁剧疆鍗�
+ */
+ const val GPS_CARD: String = "B7"
+
+ /**
+ * 閰嶇疆寮�鍏抽榾鏃堕棿
+ */
+ const val VALVE_TIME_CARD: String = "B8"
+
+
fun getDefaultCardData(cardType: String?): String? {
return getDefaultCardData(cardType)
}
+
}
}
\ No newline at end of file
diff --git a/generallibrary/src/main/java/com/dayu/general/dialog/SearchDialog.kt b/generallibrary/src/main/java/com/dayu/general/dialog/SearchDialog.kt
new file mode 100644
index 0000000..a97f913
--- /dev/null
+++ b/generallibrary/src/main/java/com/dayu/general/dialog/SearchDialog.kt
@@ -0,0 +1,76 @@
+package com.dayu.general.dialog
+
+import android.app.Dialog
+import android.content.Context
+import android.os.Bundle
+import android.view.Gravity
+import android.view.LayoutInflater
+import android.view.ViewGroup
+import android.view.WindowManager
+import com.dayu.general.R
+import com.dayu.general.databinding.DialogSearchBinding
+
+/**
+ * 鎼滅储瀵硅瘽妗�
+ * 鐢ㄤ簬鎼滅储鍐滄埛缂栧彿銆佸啘鎴峰悕绉般�佸崱鍙�
+ */
+class SearchDialog(context: Context) : Dialog(context) {
+
+ private lateinit var binding: DialogSearchBinding
+ private var onSearchListener: OnSearchListener? = null
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ binding = DialogSearchBinding.inflate(LayoutInflater.from(context))
+ setContentView(binding.root)
+
+ // 璁剧疆瀵硅瘽妗嗗搴︿负灞忓箷瀹藉害鐨�85%
+ window?.apply {
+ val params = attributes
+ params.width = (context.resources.displayMetrics.widthPixels * 0.85).toInt()
+ params.height = ViewGroup.LayoutParams.WRAP_CONTENT
+ params.gravity = Gravity.CENTER
+ attributes = params
+ setBackgroundDrawableResource(android.R.color.transparent)
+ }
+
+ // 璁剧疆鐐瑰嚮澶栭儴涓嶅彇娑堝璇濇
+ setCanceledOnTouchOutside(false)
+
+ // 璁剧疆鎼滅储鎸夐挳鐐瑰嚮浜嬩欢
+ binding.btnSearch.setOnClickListener {
+ val farmerId = binding.etFarmerId.text.toString().trim()
+ val farmerName = binding.etFarmerName.text.toString().trim()
+ val cardNumber = binding.etCardNumber.text.toString().trim()
+
+ // 鍥炶皟鎼滅储浜嬩欢
+ onSearchListener?.onSearch(farmerId, farmerName, cardNumber)
+ dismiss()
+ }
+
+ // 璁剧疆鍙栨秷鎸夐挳鐐瑰嚮浜嬩欢
+ binding.tvCancel.setOnClickListener {
+ dismiss()
+ }
+ }
+
+ /**
+ * 璁剧疆鎼滅储鐩戝惉鍣�
+ */
+ fun setOnSearchListener(listener: OnSearchListener) {
+ this.onSearchListener = listener
+ }
+
+ /**
+ * 鎼滅储鐩戝惉鍣ㄦ帴鍙�
+ */
+ interface OnSearchListener {
+ /**
+ * 鎼滅储鍥炶皟鏂规硶
+ * @param farmerId 鍐滄埛缂栧彿
+ * @param farmerName 鍐滄埛鍚嶇О
+ * @param cardNumber 鍗″彿
+ */
+ fun onSearch(farmerId: String, farmerName: String, cardNumber: String)
+ }
+}
\ No newline at end of file
diff --git a/generallibrary/src/main/java/com/dayu/general/net/ApiManager.kt b/generallibrary/src/main/java/com/dayu/general/net/ApiManager.kt
new file mode 100644
index 0000000..6dab3dc
--- /dev/null
+++ b/generallibrary/src/main/java/com/dayu/general/net/ApiManager.kt
@@ -0,0 +1,176 @@
+package com.dayu.general.net
+
+import android.content.Context
+import android.text.TextUtils
+import com.dayu.baselibrary.business.BusinessProvider
+import com.dayu.baselibrary.net.subscribers.BaseProgressSubscriber
+import com.dayu.baselibrary.net.subscribers.SubscriberListener
+import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
+import io.reactivex.rxjava3.core.Observable
+import io.reactivex.rxjava3.functions.Function
+import io.reactivex.rxjava3.schedulers.Schedulers
+
+/**
+ * Description:
+ * Author: zuo
+ * Date: 2025-03-06
+ */
+class ApiManager {
+
+ var apiService: ApiService? = null
+
+ fun init() {
+ if (apiManager == null) {
+ apiManager =
+ com.dayu.qiheonlinelibrary.net.ApiManager()
+ }
+ }
+
+ fun ApiManager() {
+ apiService = RetrofitClient.getInstance().getApiService()
+ }
+
+ fun getInstance(): com.dayu.qiheonlinelibrary.net.ApiManager {
+ return apiManager
+ }
+
+
+ fun <T> requestPostLoading(
+ context: Context?,
+ path: String?,
+ tClass: Class<T>?,
+ params: Map<String?, Any?>?,
+ listener: SubscriberListener<*>?
+ ) {
+ request(context, false, path, false, tClass, params, listener)
+ }
+
+ fun <T> requestPostHideLoading(
+ context: Context?,
+ path: String?,
+ tClass: Class<T>?,
+ params: Map<String?, Any?>?,
+ listener: SubscriberListener<*>?
+ ) {
+ request(context, true, path, false, tClass, params, listener)
+ }
+
+ fun <T> requestPost(
+ context: Context?,
+ path: String?,
+ tClass: Class<T>?,
+ params: Map<String?, Any?>?,
+ listener: SubscriberListener<*>?
+ ) {
+ request(context, false, path, false, tClass, params, listener)
+ }
+
+ /**
+ * 鍙戦�佽姹�
+ *
+ * @param context
+ * @param hideLoading 鏄惁鏄剧ず鍔犺浇妗� false锛氭樉绀� true锛氶殣钘�
+ * @param path 璇锋眰璺緞锛屽湪UrlConfig涓畾涔�
+ * @param isGet 鏄惁鏄疓et璇锋眰 true锛歡et 璇锋眰
+ * @param tClass 瀵瑰簲鐨勬暟鎹被鍨�
+ * @param params Post璇锋眰鏃讹紝瀵瑰簲鐨勫弬鏁�
+ * @param listener 鍥炶皟璇锋眰
+ * @param <T>
+ </T> */
+ fun <T> request(
+ context: Context?,
+ hideLoading: Boolean,
+ path: String?,
+ isGet: Boolean,
+ tClass: Class<T>?,
+ params: Map<String?, Any?>?,
+ listener: SubscriberListener<*>?
+ ) {
+ val observable: Observable<*>=if (isGet) {
+ if (params == null) {
+ apiService.requestGet(path)
+ } else {
+ apiService.requestGet(path, params)
+ }
+ } else {
+ if (params != null) {
+ apiService.requestPost(path, params)
+ } else {
+ apiService.requestPost(path)
+ }
+ }
+
+ val mySubscriber: BaseProgressSubscriber<*>=ProgressSubscriber<Any?>(context, hideLoading, listener)
+ observable.subscribeOn(Schedulers.io()).map
+ object : Function<Any?, com.dayu.qiheonlinelibrary.net.BaseResponse<T>?> {
+ override fun apply(o: Any): com.dayu.qiheonlinelibrary.net.BaseResponse<T> {
+ if (o is com.dayu.qiheonlinelibrary.net.BaseResponse) {
+ val tem: com.dayu.qiheonlinelibrary.net.BaseResponse =
+ o as com.dayu.qiheonlinelibrary.net.BaseResponse
+ val response: com.dayu.qiheonlinelibrary.net.BaseResponse<T> =
+ com.dayu.qiheonlinelibrary.net.BaseResponse<T>()
+ //鏈櫥褰曟垨鐧诲綍瓒呮椂锛岃閲嶆柊鐧诲綍
+ if (tem.getCode() == 100401) {
+ if (BusinessProvider.getBusinessProvider() != null) {
+ BusinessProvider.getBusinessProvider().startLoginNavigotor.navigateToLogin(
+ context
+ )
+ }
+ }
+ response.setCode(tem.getCode())
+ response.setMsg(tem.getMsg())
+ if (tClass != null) {
+ if (TextUtils.isEmpty(
+ tem.getData().toString()
+ ) && BaseResult::class.java.isAssignableFrom(tClass)
+ ) {
+ response.setData(null)
+ return response
+ }
+ if (tem.getData() is Map<*, *>) {
+ try {
+// response.setData(MyJsonParser.getBeanFromMap((Map<String, Object>) tem.getData(), tClass));
+ val jsonData: String =
+ MyJsonParser.getJsontoMap(tem.getData() as Map<*, *>)
+ response.setData(MyJsonParser.getBeanFromJson<T>(jsonData, tClass))
+ } catch (e: Exception) {
+ e.printStackTrace()
+ }
+ } else if (tem.getData() is List<*>) {
+ try {
+ response.setData(
+ MyJsonParser.getListByJson<T>(
+ MyJsonParser.getJsonbyList<Any>(
+ tem.getData() as List<*>
+ ), tClass
+ ) as T
+ )
+ } catch (e: Exception) {
+ e.printStackTrace()
+ }
+ } else if (tem.getData() is Int) {
+ response.setData(tem.getData() as T)
+ } else if (tem.getData() is Boolean) {
+ response.setData(tem.getData() as T)
+ }
+ if (tClass.name is String && tem.getData() is String) {
+ try {
+ response.setData(tem.getData() as T)
+ } catch (e: Exception) {
+ e.printStackTrace()
+ }
+ }
+ return response
+ }
+ }
+
+ return null
+ }
+ }
+ .unsubscribeOn(Schedulers.newThread())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(mySubscriber)
+ }
+
+
+}
\ No newline at end of file
diff --git a/generallibrary/src/main/java/com/dayu/general/net/ApiService.kt b/generallibrary/src/main/java/com/dayu/general/net/ApiService.kt
new file mode 100644
index 0000000..3992cc1
--- /dev/null
+++ b/generallibrary/src/main/java/com/dayu/general/net/ApiService.kt
@@ -0,0 +1,32 @@
+package com.dayu.general.net
+
+import com.dayu.baselibrary.net.BaseApiService
+import io.reactivex.rxjava3.core.Observable
+import retrofit2.http.Body
+import retrofit2.http.GET
+import retrofit2.http.POST
+import retrofit2.http.Path
+import retrofit2.http.QueryMap
+import retrofit2.http.Url
+
+interface ApiService : BaseApiService {
+
+ @POST
+ fun requestPost(
+ @Url url: String?,
+ @Body params: Map<String?, Any?>?
+ ): Observable<BaseResponse<Any?>>?
+
+ @POST
+ fun requestPost(@Url url: String?): Observable<BaseResponse<Any?>>?
+
+ @GET("{url}")
+ fun requestGet(
+ @Path("url") url: String?,
+ @QueryMap params: Map<String?, Any?>?
+ ): Observable<BaseResponse<Any?>>?
+
+ @GET("{url}")
+ fun requestGet(@Path("url") url: String?): Observable<BaseResponse<Any?>>?
+
+}
\ No newline at end of file
diff --git a/generallibrary/src/main/java/com/dayu/general/net/BaseResponse.kt b/generallibrary/src/main/java/com/dayu/general/net/BaseResponse.kt
new file mode 100644
index 0000000..3097c10
--- /dev/null
+++ b/generallibrary/src/main/java/com/dayu/general/net/BaseResponse.kt
@@ -0,0 +1,16 @@
+package com.dayu.general.net
+
+/**
+ * Description:
+ * Author: zuo
+ * Date: 2025-03-06
+ */
+class BaseResponse<T> {
+ var code: Int = 0
+ var msg: String? = null
+ var content: T? = null
+ var success:Boolean = false
+
+ companion object
+
+}
\ No newline at end of file
diff --git a/generallibrary/src/main/java/com/dayu/general/net/MyInercepterApplication.kt b/generallibrary/src/main/java/com/dayu/general/net/MyInercepterApplication.kt
new file mode 100644
index 0000000..95beb88
--- /dev/null
+++ b/generallibrary/src/main/java/com/dayu/general/net/MyInercepterApplication.kt
@@ -0,0 +1,84 @@
+package com.dayu.general.net
+
+import android.text.TextUtils
+import com.dayu.qiheonlinelibrary.QHOnLineApplication
+import com.tencent.bugly.crashreport.CrashReport
+import okhttp3.Interceptor
+import okhttp3.Protocol
+import okhttp3.Request
+import okhttp3.Response
+import okhttp3.ResponseBody
+import java.io.IOException
+import java.net.ConnectException
+
+/**
+ * Description:
+ * Author: zuo
+ * Date: 2025-03-06
+ */
+class MyInercepterApplication :Interceptor{
+
+ @Throws(IOException::class)
+ override fun intercept(chain: Interceptor.Chain): Response {
+ val request: Request = chain.request()
+ try {
+ val myRequest = createRequest(chain.request())
+ if (myRequest != null) {
+ var response: Response? = null
+ try {
+ response = chain.proceed(myRequest)
+ } catch (e: ConnectException) {
+ e.printStackTrace()
+ return getNullResponse(request)
+ }
+ return response
+ }
+ } catch (e: Exception) {
+ e.printStackTrace()
+ CrashReport.postCatchedException(e)
+ }
+ return getNullResponse(request)
+ }
+
+ protected fun createRequest(request: Request): Request? {
+ try {
+ val builder: Request.Builder = request.newBuilder()
+ val params: Map<*, *> = HashMap<Any?, Any?>()
+ if (request.method == "GET") {
+ builder.url(request.url.toString())
+ } else {
+ if (!TextUtils.isEmpty(QHOnLineApplication.getInstance().tokenStr)) {
+ builder.addHeader("Token-Cloud", QHOnLineApplication.getInstance().tokenStr)
+ }
+ }
+ return builder.build()
+ } catch (e: Exception) {
+ e.printStackTrace()
+ CrashReport.postCatchedException(e)
+ }
+ return null
+ }
+
+ /**
+ * 缃戠粶閿欒鏃剁殑寮傚父澶勭悊
+ *
+ * @param request
+ * @return
+ */
+ fun getNullResponse(request: Request?): Response {
+ val code = 20010
+ val message = "鍜︼紝璇锋鏌ョ綉缁�"
+ val errJson = "{\"code\":$code,\"message\":\"$message\"}"
+ val responseBody = ResponseBody.create(null, errJson)
+ return Response.Builder()
+ .request(request!!)
+ .protocol(Protocol.HTTP_1_1)
+ .code(200)
+ .message(message)
+ .body(responseBody)
+ .build()
+ }
+
+
+
+}
\ No newline at end of file
diff --git a/generallibrary/src/main/java/com/dayu/general/net/NetConstans.kt b/generallibrary/src/main/java/com/dayu/general/net/NetConstans.kt
new file mode 100644
index 0000000..0c0e7f2
--- /dev/null
+++ b/generallibrary/src/main/java/com/dayu/general/net/NetConstans.kt
@@ -0,0 +1,14 @@
+package com.dayu.general.net
+
+/**
+ * @author zuo
+ * @date 2025/3/6
+ * @description
+ */
+class NetConstans {
+ companion object {
+ const val BASE_URL: String = "http://120.46.45.35:20081/api/sjgg/"
+
+ }
+
+}
\ No newline at end of file
diff --git a/generallibrary/src/main/java/com/dayu/general/net/RetrofitClient.kt b/generallibrary/src/main/java/com/dayu/general/net/RetrofitClient.kt
new file mode 100644
index 0000000..97bdbeb
--- /dev/null
+++ b/generallibrary/src/main/java/com/dayu/general/net/RetrofitClient.kt
@@ -0,0 +1,68 @@
+package com.dayu.general.net
+
+import com.dayu.baselibrary.BuildConfig
+import com.dayu.qiheonlinelibrary.net.MyIntercepterApplication
+import okhttp3.OkHttpClient
+import okhttp3.logging.HttpLoggingInterceptor
+import retrofit2.Retrofit
+import retrofit2.adapter.rxjava3.RxJava3CallAdapterFactory
+import retrofit2.converter.gson.GsonConverterFactory
+import java.util.concurrent.TimeUnit
+
+/**
+ * Description:
+ * Author: zuo
+ * Date: 2025-03-06
+ */
+class RetrofitClient {
+
+
+
+ private var retrofit: Retrofit? = null
+ val READ_TIME_OUT: Int = 10
+ val CONNECT_TIME_OUT: Int = 10
+
+ private fun RetrofitClient() {
+ val loggingInterceptor = HttpLoggingInterceptor()
+ // 鍖呭惈header銆乥ody鏁版嵁
+ loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY)
+ // loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.HEADERS);
+ val builder: OkHttpClient.Builder = OkHttpClient().newBuilder()
+ //璁剧疆杩炴帴鍜岃鍙栨椂闂�
+ builder.readTimeout(READ_TIME_OUT.toLong(), TimeUnit.SECONDS)
+ builder.connectTimeout(CONNECT_TIME_OUT.toLong(), TimeUnit.SECONDS)
+ builder.writeTimeout(CONNECT_TIME_OUT.toLong(), TimeUnit.SECONDS)
+ //娣诲姞缁熶竴鐨刪eader
+ builder.addInterceptor(MyIntercepterApplication())
+ //娣诲姞鏃ュ織鎷︽埅鍣�
+ //娣诲姞鏁版嵁璇锋眰缁熶竴澶勭悊鎷︽埅鍣�
+ if (BuildConfig.DEBUG) {
+ builder.addInterceptor(loggingInterceptor)
+ }
+
+ val client: OkHttpClient = builder.build()
+
+ retrofit = Retrofit.Builder()
+ .baseUrl(NetConstans.BASE_URL)
+ .addConverterFactory(GsonConverterFactory.create())
+ .addCallAdapterFactory(RxJava3CallAdapterFactory.create())
+ .client(client).build()
+ }
+
+ @Synchronized
+
+
+ fun getApiService(): ApiService {
+ return retrofit?.create(ApiService::class.java) ?: throw IllegalStateException("Retrofit instance is not initialized")
+ }
+
+ companion object{
+ var mInstance: RetrofitClient? = null
+ fun getInstance(): RetrofitClient {
+ if (mInstance == null) {
+ mInstance = RetrofitClient()
+ }
+ return mInstance as RetrofitClient
+ }
+ }
+}
\ No newline at end of file
diff --git a/generallibrary/src/main/res/drawable/bg_card.xml b/generallibrary/src/main/res/drawable/bg_card.xml
new file mode 100644
index 0000000..fbb40e0
--- /dev/null
+++ b/generallibrary/src/main/res/drawable/bg_card.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+ android:shape="rectangle">
+ <solid android:color="#FFFFFF" />
+ <corners android:radius="8dp" />
+ <stroke
+ android:width="1dp"
+ android:color="#E0E0E0" />
+</shape>
\ No newline at end of file
diff --git a/generallibrary/src/main/res/drawable/card_ripple_effect.xml b/generallibrary/src/main/res/drawable/card_ripple_effect.xml
new file mode 100644
index 0000000..81964ac
--- /dev/null
+++ b/generallibrary/src/main/res/drawable/card_ripple_effect.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<ripple xmlns:android="http://schemas.android.com/apk/res/android"
+ android:color="#20000000">
+ <item android:id="@android:id/mask">
+ <shape android:shape="rectangle">
+ <solid android:color="#000000" />
+ <corners android:radius="8dp" />
+ </shape>
+ </item>
+ <item android:drawable="@drawable/bg_card" />
+</ripple>
\ No newline at end of file
diff --git a/generallibrary/src/main/res/drawable/ic_arrow_right.xml b/generallibrary/src/main/res/drawable/ic_arrow_right.xml
new file mode 100644
index 0000000..e83929b
--- /dev/null
+++ b/generallibrary/src/main/res/drawable/ic_arrow_right.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="24.0"
+ android:viewportHeight="24.0">
+ <path
+ android:fillColor="#AAAAAA"
+ android:pathData="M8.59,16.34l4.58,-4.59 -4.58,-4.59L10,5.75l6,6 -6,6z"/>
+</vector>
\ No newline at end of file
diff --git a/generallibrary/src/main/res/layout/activity_manage_list_ge.xml b/generallibrary/src/main/res/layout/activity_manage_list_ge.xml
new file mode 100644
index 0000000..ca29cf0
--- /dev/null
+++ b/generallibrary/src/main/res/layout/activity_manage_list_ge.xml
@@ -0,0 +1,156 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout 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"
+ android:orientation="vertical"
+ android:background="@color/white"
+ >
+
+ <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" />
+
+ <ScrollView
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ >
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:padding="16dp"
+ android:orientation="vertical">
+ <TextView
+ android:id="@+id/tv_area_card"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:text="璁剧疆鍖哄煙琛ㄥ彿鍗�"
+ android:textSize="16sp"
+ android:textColor="#333333"
+ android:padding="16dp"
+ android:layout_marginBottom="12dp"
+ android:background="@drawable/card_ripple_effect"
+ android:elevation="2dp"
+ android:drawableEnd="@drawable/ic_arrow_right"
+ android:gravity="center_vertical"
+ android:clickable="true"
+ android:focusable="true" />
+ <TextView
+ android:id="@+id/tv_check_card"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:text="妫�鏌ュ崱"
+ android:textSize="16sp"
+ android:textColor="#333333"
+ android:padding="16dp"
+ android:layout_marginBottom="12dp"
+ android:background="@drawable/card_ripple_effect"
+ android:elevation="2dp"
+ android:drawableEnd="@drawable/ic_arrow_right"
+ android:gravity="center_vertical"
+ android:clickable="true"
+ android:focusable="true" />
+
+ <TextView
+ android:id="@+id/tv_debug_card"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:text="璋冭瘯鍗�"
+ android:textSize="16sp"
+ android:textColor="#333333"
+ android:padding="16dp"
+ android:layout_marginBottom="12dp"
+ android:background="@drawable/card_ripple_effect"
+ android:elevation="2dp"
+ android:drawableEnd="@drawable/ic_arrow_right"
+ android:gravity="center_vertical"
+ android:clickable="true"
+ android:focusable="true" />
+
+ <TextView
+ android:id="@+id/tv_clean_card"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:text="娓呯悊鍗�"
+ android:textSize="16sp"
+ android:textColor="#333333"
+ android:padding="16dp"
+ android:layout_marginBottom="12dp"
+ android:background="@drawable/card_ripple_effect"
+ android:elevation="2dp"
+ android:drawableEnd="@drawable/ic_arrow_right"
+ android:gravity="center_vertical"
+ android:clickable="true"
+ android:focusable="true" />
+
+ <TextView
+ android:id="@+id/tv_ip_setting_card"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:text="IP鍦板潃璁剧疆鍗�"
+ android:textSize="16sp"
+ android:textColor="#333333"
+ android:padding="16dp"
+ android:layout_marginBottom="12dp"
+ android:background="@drawable/card_ripple_effect"
+ android:elevation="2dp"
+ android:drawableEnd="@drawable/ic_arrow_right"
+ android:gravity="center_vertical"
+ android:clickable="true"
+ android:focusable="true" />
+
+ <TextView
+ android:id="@+id/tv_domain_setting_card"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:text="鍩熷悕璁剧疆鍗�"
+ android:textSize="16sp"
+ android:textColor="#333333"
+ android:padding="16dp"
+ android:layout_marginBottom="12dp"
+ android:background="@drawable/card_ripple_effect"
+ android:elevation="2dp"
+ android:drawableEnd="@drawable/ic_arrow_right"
+ android:gravity="center_vertical"
+ android:clickable="true"
+ android:focusable="true" />
+
+ <TextView
+ android:id="@+id/tv_gps_card"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:text="GPS瀹氫綅鍗�"
+ android:textSize="16sp"
+ android:textColor="#333333"
+ android:padding="16dp"
+ android:layout_marginBottom="12dp"
+ android:background="@drawable/card_ripple_effect"
+ android:elevation="2dp"
+ android:drawableEnd="@drawable/ic_arrow_right"
+ android:gravity="center_vertical"
+ android:clickable="true"
+ android:focusable="true" />
+
+ <TextView
+ android:id="@+id/tv_valve_time_card"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:text="閰嶇疆寮�鍏抽榾鏃堕棿鍗�"
+ android:textSize="16sp"
+ android:textColor="#333333"
+ android:padding="16dp"
+ android:layout_marginBottom="12dp"
+ android:background="@drawable/card_ripple_effect"
+ android:elevation="2dp"
+ android:drawableEnd="@drawable/ic_arrow_right"
+ android:gravity="center_vertical"
+ android:clickable="true"
+ android:focusable="true" />
+ </LinearLayout>
+ </ScrollView>
+</LinearLayout>
\ No newline at end of file
diff --git a/generallibrary/src/main/res/layout/activity_new_user_card_ge.xml b/generallibrary/src/main/res/layout/activity_new_user_card_ge.xml
new file mode 100644
index 0000000..449a955
--- /dev/null
+++ b/generallibrary/src/main/res/layout/activity_new_user_card_ge.xml
@@ -0,0 +1,21 @@
+<?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"
+ android:background="#F5F7FA">
+
+ <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"
+ android:elevation="4dp"
+ app:centerText="鍐滄埛鍒楄〃"
+ app:leftImage="@mipmap/icon_back" />
+
+
+
+
+
+</RelativeLayout>
\ No newline at end of file
diff --git a/generallibrary/src/main/res/layout/activity_nfc_write_ge.xml b/generallibrary/src/main/res/layout/activity_nfc_write_ge.xml
new file mode 100644
index 0000000..e3287b7
--- /dev/null
+++ b/generallibrary/src/main/res/layout/activity_nfc_write_ge.xml
@@ -0,0 +1,131 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:id="@+id/activity_main"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:background="@color/colorBackground">
+
+ <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"
+ android:elevation="4dp"
+ app:centerText="鍐欏崱"
+ app:leftImage="@mipmap/icon_back"
+ app:layout_constraintTop_toTopOf="parent" />
+
+ <androidx.cardview.widget.CardView
+ android:id="@+id/cardInfoContainer"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginStart="16dp"
+ android:layout_marginTop="24dp"
+ android:layout_marginEnd="16dp"
+ app:cardBackgroundColor="@android:color/white"
+ app:cardCornerRadius="12dp"
+ app:cardElevation="4dp"
+ android:visibility="visible"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@id/titleBar">
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ android:padding="16dp">
+
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:gravity="center"
+ android:text="鍐欏崱淇℃伅"
+ android:textColor="@color/title_bar_text"
+ android:textSize="18sp"
+ android:textStyle="bold" />
+
+ <View
+ android:layout_width="match_parent"
+ android:layout_height="1dp"
+ android:layout_marginTop="8dp"
+ android:layout_marginBottom="8dp"
+ android:background="#E0E0E0" />
+
+ <TextView
+ android:id="@+id/cardData"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:gravity="center"
+ android:padding="8dp"
+ android:textColor="#333333"
+ android:textSize="@dimen/text_size" />
+ </LinearLayout>
+ </androidx.cardview.widget.CardView>
+
+ <androidx.cardview.widget.CardView
+ android:id="@+id/nfcContainer"
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_marginStart="16dp"
+ android:layout_marginTop="24dp"
+ android:layout_marginEnd="16dp"
+ android:layout_marginBottom="24dp"
+ app:cardBackgroundColor="@android:color/white"
+ app:cardCornerRadius="12dp"
+ app:cardElevation="4dp"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@id/cardInfoContainer">
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:gravity="center"
+ android:orientation="vertical"
+ android:padding="16dp">
+
+ <TextView
+ android:id="@+id/textView"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:gravity="center"
+ android:text="璇峰皢鍗¤创鍦ㄨ澶囦笂杩涜鍐欏崱"
+ android:textColor="#333333"
+ android:textSize="18sp"
+ android:textStyle="bold" />
+
+ <ImageView
+ android:id="@+id/nfcImageView"
+ android:layout_width="200dp"
+ android:layout_height="200dp"
+ android:layout_marginTop="24dp"
+ android:scaleType="fitCenter"
+ android:src="@mipmap/nfc_write" />
+
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="16dp"
+ android:gravity="center"
+ android:text="璇蜂繚鎸佹墜鏈哄拰鍗$墖涓嶈绉诲姩"
+ android:textColor="#666666"
+ android:textSize="14sp" />
+ </LinearLayout>
+ </androidx.cardview.widget.CardView>
+
+ <com.wang.avi.AVLoadingIndicatorView
+ android:id="@+id/avi"
+ style="@style/AVLoadingIndicatorView"
+ android:layout_width="80dp"
+ android:layout_height="80dp"
+ android:visibility="gone"
+ app:indicatorColor="@color/title_bg"
+ app:indicatorName="BallClipRotatePulseIndicator"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent" />
+</androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/generallibrary/src/main/res/layout/activity_search_user_ge.xml b/generallibrary/src/main/res/layout/activity_search_user_ge.xml
new file mode 100644
index 0000000..307148e
--- /dev/null
+++ b/generallibrary/src/main/res/layout/activity_search_user_ge.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout 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"
+ android:orientation="vertical">
+
+ <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"
+ android:elevation="4dp"
+ app:centerText="鎼滅储鐢ㄦ埛"
+ app:layout_constraintTop_toTopOf="parent"
+ app:leftImage="@mipmap/icon_back"
+ app:rightImage="@mipmap/icon_search"/>
+
+
+ <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>
+
+
+
+</LinearLayout>
\ No newline at end of file
diff --git a/generallibrary/src/main/res/layout/dialog_search.xml b/generallibrary/src/main/res/layout/dialog_search.xml
new file mode 100644
index 0000000..5c4382a
--- /dev/null
+++ b/generallibrary/src/main/res/layout/dialog_search.xml
@@ -0,0 +1,142 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout 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="wrap_content"
+ android:background="@drawable/search_dialog_bg"
+ android:padding="20dp">
+
+ <TextView
+ android:id="@+id/tv_title"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="鎼滅储"
+ android:textColor="@color/black"
+ android:textSize="20sp"
+ android:textStyle="bold"
+ app:layout_constraintLeft_toLeftOf="parent"
+ app:layout_constraintTop_toTopOf="parent" />
+
+ <View
+ android:id="@+id/divider"
+ android:layout_width="match_parent"
+ android:layout_height="1dp"
+ android:layout_marginTop="12dp"
+ android:background="#E0E0E0"
+ app:layout_constraintTop_toBottomOf="@id/tv_title" />
+
+ <TextView
+ android:id="@+id/tv_farmer_name_label"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="16dp"
+ android:text="鍐滄埛鍚嶇О"
+ android:textColor="#666666"
+ android:textSize="14sp"
+ app:layout_constraintLeft_toLeftOf="parent"
+ app:layout_constraintTop_toBottomOf="@id/divider" />
+
+ <EditText
+ android:id="@+id/et_farmer_name"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="6dp"
+ android:background="@drawable/edit_text_bg"
+ android:hint="璇疯緭鍏ュ啘鎴峰悕绉帮紙閫夊~锛�"
+ android:inputType="text"
+ android:singleLine="true"
+ android:textColorHint="#BBBBBB"
+ android:textSize="15sp"
+ app:layout_constraintTop_toBottomOf="@id/tv_farmer_name_label" />
+
+ <TextView
+ android:id="@+id/tv_farmer_id_label"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="14dp"
+ android:text="鍐滄埛缂栧彿"
+ android:textColor="#666666"
+ android:textSize="14sp"
+ app:layout_constraintLeft_toLeftOf="parent"
+ app:layout_constraintTop_toBottomOf="@id/et_farmer_name" />
+
+ <EditText
+ android:id="@+id/et_farmer_id"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="6dp"
+ android:background="@drawable/edit_text_bg"
+ android:hint="璇疯緭鍏ュ啘鎴风紪鍙凤紙閫夊~锛�"
+ android:inputType="text"
+ android:singleLine="true"
+ android:textColorHint="#BBBBBB"
+ android:textSize="15sp"
+ app:layout_constraintTop_toBottomOf="@id/tv_farmer_id_label" />
+
+ <TextView
+ android:id="@+id/tv_card_number_label"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="14dp"
+ android:text="鍗″彿"
+ android:textColor="#666666"
+ android:textSize="14sp"
+ app:layout_constraintLeft_toLeftOf="parent"
+ app:layout_constraintTop_toBottomOf="@id/et_farmer_id" />
+
+ <EditText
+ android:id="@+id/et_card_number"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="6dp"
+ android:background="@drawable/edit_text_bg"
+ android:hint="璇疯緭鍏ュ崱鍙凤紙閫夊~锛�"
+ android:inputType="text"
+ android:singleLine="true"
+ android:textColorHint="#BBBBBB"
+ android:textSize="15sp"
+ app:layout_constraintTop_toBottomOf="@id/tv_card_number_label" />
+
+ <Button
+ android:id="@+id/tv_cancel"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="24dp"
+ android:layout_marginEnd="6dp"
+ android:background="@drawable/cancel_button_ripple"
+ android:clickable="true"
+ android:focusable="true"
+ android:paddingTop="10dp"
+ android:paddingBottom="10dp"
+ android:stateListAnimator="@null"
+ android:text="鍙栨秷"
+ android:textColor="#666666"
+ android:textSize="15sp"
+ app:layout_constraintEnd_toStartOf="@id/btn_search"
+ app:layout_constraintHorizontal_chainStyle="packed"
+ app:layout_constraintHorizontal_weight="1"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@id/et_card_number" />
+
+ <Button
+ android:id="@+id/btn_search"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_marginStart="6dp"
+ android:background="@drawable/search_button_ripple"
+ android:clickable="true"
+ android:elevation="2dp"
+ android:focusable="true"
+ android:paddingTop="12dp"
+ android:paddingBottom="12dp"
+ android:stateListAnimator="@null"
+ android:text="鎼滅储"
+ android:textColor="@android:color/white"
+ android:textSize="16sp"
+ android:textStyle="bold"
+ app:layout_constraintBaseline_toBaselineOf="@id/tv_cancel"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintHorizontal_weight="1"
+ app:layout_constraintStart_toEndOf="@id/tv_cancel" />
+
+</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/generallibrary/src/main/res/layout/fragment_card.xml b/generallibrary/src/main/res/layout/fragment_card.xml
index 71aee45..d09e603 100644
--- a/generallibrary/src/main/res/layout/fragment_card.xml
+++ b/generallibrary/src/main/res/layout/fragment_card.xml
@@ -5,23 +5,14 @@
android:layout_height="match_parent"
android:background="@color/white">
- <androidx.appcompat.widget.Toolbar
+
+ <com.dayu.baselibrary.view.TitleBar
android:id="@+id/titleBar"
android:layout_width="match_parent"
android:layout_height="@dimen/dimen_title_height"
- android:background="@color/bottom_color"
+ android:background="@color/title_bar_bg"
android:elevation="4dp"
- app:layout_constraintTop_toTopOf="parent">
-
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center"
- android:text="鍒跺崱"
- android:textColor="@color/white"
- android:textSize="@dimen/title_text_size"
- android:textStyle="bold" />
- </androidx.appcompat.widget.Toolbar>
+ app:centerText="鍒跺崱" />
<ScrollView
android:layout_width="match_parent"
@@ -68,7 +59,7 @@
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:gravity="center"
- android:text="鏂板崱寮�鎴�"
+ android:text="寮�鍗�"
android:textColor="@color/text_selecter_color"
android:textSize="@dimen/home_text_size" />
</LinearLayout>
@@ -147,7 +138,7 @@
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:gravity="center"
- android:text="璇诲彇鍗$墖"
+ android:text="璇诲崱"
android:textColor="@color/text_selecter_color"
android:textSize="@dimen/home_text_size" />
</LinearLayout>
@@ -244,7 +235,7 @@
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
- android:id="@+id/home_admin"
+ android:id="@+id/home_manage"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
@@ -279,7 +270,7 @@
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:gravity="center"
- android:text="绠$悊绯荤粺"
+ android:text="鍒朵綔绠$悊鍗�"
android:textColor="@color/text_selecter_color"
android:textSize="@dimen/home_text_size" />
</LinearLayout>
diff --git a/generallibrary/src/main/res/layout/fragment_my.xml b/generallibrary/src/main/res/layout/fragment_my.xml
index ede78b3..014772c 100644
--- a/generallibrary/src/main/res/layout/fragment_my.xml
+++ b/generallibrary/src/main/res/layout/fragment_my.xml
@@ -6,23 +6,13 @@
android:orientation="vertical"
android:background="#F5F5F5">
- <RelativeLayout
- android:id="@+id/header_layout"
+ <com.dayu.baselibrary.view.TitleBar
+ android:id="@+id/titleBar"
android:layout_width="match_parent"
android:layout_height="@dimen/dimen_title_height"
- android:background="@color/bottom_color"
- android:elevation="4dp">
-
- <TextView
- android:id="@+id/titleBar"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_centerInParent="true"
- android:text="鎴戠殑"
- android:textColor="@color/white"
- android:textSize="@dimen/title_text_size"
- android:textStyle="bold" />
- </RelativeLayout>
+ android:background="@color/title_bar_bg"
+ android:elevation="4dp"
+ app:centerText="鎴戠殑" />
<ScrollView
android:layout_width="match_parent"
diff --git a/generallibrary/src/main/res/layout/fragment_recharge.xml b/generallibrary/src/main/res/layout/fragment_recharge.xml
index 197c37a..e9971e8 100644
--- a/generallibrary/src/main/res/layout/fragment_recharge.xml
+++ b/generallibrary/src/main/res/layout/fragment_recharge.xml
@@ -5,29 +5,19 @@
android:layout_height="match_parent"
android:background="#F5F5F5">
- <RelativeLayout
- android:id="@+id/header_layout"
+ <com.dayu.baselibrary.view.TitleBar
+ android:id="@+id/titleBar"
android:layout_width="match_parent"
android:layout_height="@dimen/dimen_title_height"
- android:background="@color/bottom_color"
- android:elevation="4dp">
-
- <TextView
- android:id="@+id/titleBar"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_centerInParent="true"
- android:text="鍏呭��"
- android:textColor="@color/white"
- android:textSize="@dimen/title_text_size"
- android:textStyle="bold" />
- </RelativeLayout>
+ android:background="@color/title_bar_bg"
+ android:elevation="4dp"
+ app:centerText="鎴戠殑" />
<LinearLayout
android:id="@+id/recharge_read_LL"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:layout_below="@+id/header_layout"
+ android:layout_below="@+id/titleBar"
android:orientation="vertical"
android:visibility="visible">
@@ -83,6 +73,7 @@
android:layout_height="wrap_content"
android:orientation="vertical"
android:visibility="gone">
+
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
@@ -96,7 +87,6 @@
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="16dp">
-
<TextView
@@ -113,8 +103,8 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#F9F9F9"
- android:padding="12dp"
- android:orientation="vertical">
+ android:orientation="vertical"
+ android:padding="12dp">
<TextView
android:id="@+id/recharge_tx"
@@ -138,11 +128,12 @@
</LinearLayout>
</LinearLayout>
</androidx.cardview.widget.CardView>
+
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_marginBottom="16dp"
android:layout_marginTop="15dp"
+ android:layout_marginBottom="16dp"
app:cardCornerRadius="8dp"
app:cardElevation="2dp">
diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/ApiCallback.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/ApiCallback.java
deleted file mode 100644
index 51d7b59..0000000
--- a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/ApiCallback.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.dayu.qiheonlinelibrary.net;
-
-/**
- * Copyright (C), 2023,
- * Author: zuo
- * Date: 2023-03-27 14:59
- * Description:
- */
-public interface ApiCallback<T> {
- void onSuccess(T data);
- void onFailure(String message);
-}
-
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 0e2b367..762c545 100644
--- a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/ApiService.java
+++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/ApiService.java
@@ -1,6 +1,8 @@
package com.dayu.qiheonlinelibrary.net;
+import com.dayu.baselibrary.net.BaseApiService;
+
import java.util.Map;
import io.reactivex.rxjava3.core.Observable;
@@ -25,15 +27,16 @@
* Date: 2023-03-27 14:56
* Description:
*/
-public interface ApiService {
-
+public interface ApiService extends BaseApiService {
// @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/MyIntercepterApplication.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/MyIntercepterApplication.java
index f2a777a..a4c9531 100644
--- a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/MyIntercepterApplication.java
+++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/MyIntercepterApplication.java
@@ -1,11 +1,8 @@
package com.dayu.qiheonlinelibrary.net;
-import android.os.Handler;
-import android.os.Looper;
import android.text.TextUtils;
import com.dayu.qiheonlinelibrary.QHOnLineApplication;
-import com.dayu.qiheonlinelibrary.utils.ToastUtil;
import com.tencent.bugly.crashreport.CrashReport;
import java.io.IOException;
@@ -78,12 +75,6 @@
*/
public Response getNullResponse(Request request) {
// 鏄剧ずToast鎻愮ず
- new Handler(Looper.getMainLooper()).post(new Runnable() {
- @Override
- public void run() {
- ToastUtil.showToastLong(QHOnLineApplication.getInstance().application.getApplicationContext(), "璇锋鏌ョ綉缁�!!!");
- }
- });
int code = 20010;
String message = "鍜︼紝璇锋鏌ョ綉缁�";
String errJson = "{\"code\":" + code + ",\"message\":\"" + message + "\"}";
diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/RetrofitClient.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/RetrofitClient.java
index 2f3e431..7fdaf6e 100644
--- a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/RetrofitClient.java
+++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/RetrofitClient.java
@@ -66,4 +66,5 @@
}
+
}
--
Gitblit v1.8.0