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