From ec58f1c53a58befd9ca8a07c79cfeda619789662 Mon Sep 17 00:00:00 2001 From: wangyu Date: Wed, 7 Jan 2026 18:47:31 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=88=91=E7=9A=84=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E7=9B=B8=E5=85=B3=E4=BA=8C=E7=BA=A7=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/cheng/bole/bean/BidItemBean.kt | 2 - .../com/cheng/bole/bean/ContactsInfoBean.kt | 1 - .../java/com/cheng/bole/bean/OrderBean.kt | 28 + .../com/cheng/bole/bean/VipGoodsEntity.kt | 4 +- .../com/cheng/bole/common/EventConstants.kt | 4 + .../com/cheng/bole/event/CompanyAuthEvent.kt | 4 + .../java/com/cheng/bole/event/OrderEvent.kt | 4 + .../com/cheng/bole/manager/ContactsManager.kt | 12 +- .../java/com/cheng/bole/net/ApiService.kt | 19 + .../bole/net/RequestHeaderInterceptor.kt | 4 +- .../cheng/bole/ui/dialog/AccountListDialog.kt | 13 +- .../cheng/bole/ui/dialog/BindPhoneDialog.kt | 3 + .../com/cheng/bole/ui/dialog/BuySeatDialog.kt | 298 +++++++ .../cheng/bole/ui/dialog/SeatAuthDialog.kt | 102 +++ .../publish/contacts/AddContactsFragment.kt | 21 +- .../bole/ui/fragment/mine/MineFragment.kt | 56 +- .../bole/ui/fragment/mine/MineViewModel.kt | 15 + .../ui/fragment/mine/about/AboutFragment.kt | 19 +- .../fragment/mine/account/AccountAdapter.kt | 28 +- .../mine/account/AccountManageFragment.kt | 6 +- .../fragment/mine/auth/CompanyAuthFragment.kt | 256 ++++++ .../mine/auth/CompanyAuthViewModel.kt | 92 +++ .../mine/favorite/FavoriteFragment.kt | 64 ++ .../mine/favorite/FavoriteViewModel.kt | 31 + .../fragment/mine/history/HistoryAdapter.kt | 28 + .../fragment/mine/history/HistoryFragment.kt | 56 ++ .../fragment/mine/history/HistoryViewModel.kt | 31 + .../fragment/mine/message/MessageAdapter.kt | 27 + .../fragment/mine/message/MessageFragment.kt | 55 ++ .../fragment/mine/message/MessageViewModel.kt | 31 + .../ui/fragment/mine/order/OrderFragment.kt | 56 ++ .../ui/fragment/mine/order/OrderViewModel.kt | 6 + .../mine/order/cert/CertificateFragment.kt | 130 +++ .../mine/order/cert/CertificateViewModel.kt | 68 ++ .../mine/order/invoice/InvoiceFragment.kt | 201 +++++ .../mine/order/invoice/InvoiceViewModel.kt | 27 + .../fragment/mine/order/list/OrderAdapter.kt | 79 ++ .../mine/order/list/OrderListFragment.kt | 82 ++ .../mine/order/list/OrderListViewModel.kt | 27 + .../fragment/mine/seat/SeatManageAdapter.kt | 29 + .../fragment/mine/seat/SeatManageFragment.kt | 143 ++++ .../fragment/mine/seat/SeatManageViewModel.kt | 94 +++ .../mine/settings/SettingsFragment.kt | 16 +- .../bole/ui/fragment/mine/vip/VipFragment.kt | 4 +- .../com/cheng/bole/utils/AppUpdateUtils.kt | 40 + .../java/com/cheng/bole/utils/StringUtils.kt | 24 + .../java/com/cheng/bole/utils/UrlHelper.kt | 12 + .../drawable/selector_invoice_title_color.xml | 5 + .../drawable/selector_invoice_title_rb.xml | 5 + .../res/drawable/shape_change_account_bg.xml | 7 + .../res/drawable/shape_current_account_bg.xml | 7 + .../main/res/drawable/shape_eeeeee_cor4.xml | 5 + .../res/drawable/shape_ff8340_circle_dp4.xml | 8 - .../drawable/shape_invoice_title_checked.xml | 7 + .../drawable/shape_invoice_title_default.xml | 5 + .../res/drawable/shape_white_line_cor8.xml | 8 + app/src/main/res/layout/dialog_bind_phone.xml | 112 +-- app/src/main/res/layout/dialog_buy_seat.xml | 222 ++++++ app/src/main/res/layout/dialog_edit_text.xml | 2 +- app/src/main/res/layout/dialog_seat_auth.xml | 114 +++ .../res/layout/dialog_select_bid_type.xml | 2 +- .../res/layout/dialog_select_contacts.xml | 2 +- .../main/res/layout/dialog_select_coupon.xml | 2 +- .../res/layout/dialog_select_goods_type.xml | 2 +- app/src/main/res/layout/fragment_about.xml | 86 +- .../res/layout/fragment_account_manage.xml | 5 +- .../main/res/layout/fragment_add_contacts.xml | 2 +- .../res/layout/fragment_add_subscribe.xml | 6 +- .../main/res/layout/fragment_certificate.xml | 382 +++++++++ .../main/res/layout/fragment_company_auth.xml | 389 +++++++++ app/src/main/res/layout/fragment_favorite.xml | 39 + app/src/main/res/layout/fragment_feedback.xml | 8 +- app/src/main/res/layout/fragment_history.xml | 39 + app/src/main/res/layout/fragment_invoice.xml | 749 ++++++++++++++++++ .../layout/fragment_merchant_goods_detail.xml | 6 +- app/src/main/res/layout/fragment_message.xml | 31 + app/src/main/res/layout/fragment_order.xml | 73 ++ .../main/res/layout/fragment_order_list.xml | 21 + .../layout/fragment_publish_bid_message.xml | 8 +- .../layout/fragment_publish_goods_message.xml | 8 +- app/src/main/res/layout/fragment_search.xml | 6 +- .../main/res/layout/fragment_seat_manage.xml | 82 ++ app/src/main/res/layout/fragment_settings.xml | 55 +- .../res/layout/fragment_source_search.xml | 2 +- app/src/main/res/layout/listitem_account.xml | 235 +++--- app/src/main/res/layout/listitem_bid.xml | 2 +- .../res/layout/listitem_merchant_goods.xml | 2 +- app/src/main/res/layout/listitem_message.xml | 151 ++++ app/src/main/res/layout/listitem_order.xml | 201 +++++ .../main/res/layout/listitem_seat_manage.xml | 71 ++ .../res/layout/listitem_selected_source.xml | 2 +- .../main/res/layout/listitem_subscribe.xml | 2 +- .../main/res/layout/listitem_zzdb_info.xml | 2 +- .../main/res/mipmap-xxhdpi/ic_auth_fail.webp | Bin 0 -> 1250 bytes .../res/mipmap-xxhdpi/ic_auth_success.webp | Bin 0 -> 1248 bytes .../main/res/mipmap-xxhdpi/ic_bind_phone.webp | Bin 1108 -> 604 bytes .../res/mipmap-xxhdpi/ic_bind_phone_bg.webp | Bin 0 -> 12966 bytes .../main/res/mipmap-xxhdpi/ic_bind_wx.webp | Bin 1178 -> 1248 bytes .../res/mipmap-xxhdpi/ic_cert_divider.webp | Bin 0 -> 1342 bytes .../res/mipmap-xxhdpi/ic_change_account.webp | Bin 494 -> 292 bytes .../res/mipmap-xxhdpi/ic_close_dialog2.webp | Bin 0 -> 1430 bytes .../mipmap-xxhdpi/ic_company_auth_top_bg.webp | Bin 0 -> 47078 bytes .../res/mipmap-xxhdpi/ic_empty_message.webp | Bin 0 -> 10390 bytes .../main/res/mipmap-xxhdpi/ic_empty_seat.webp | Bin 0 -> 10256 bytes .../res/mipmap-xxhdpi/ic_favorite_top_bg.webp | Bin 0 -> 38032 bytes .../res/mipmap-xxhdpi/ic_pay_checked3.webp | Bin 0 -> 980 bytes .../res/mipmap-xxhdpi/ic_pay_default3.webp | Bin 0 -> 886 bytes .../res/mipmap-xxhdpi/ic_seat_auth_bg.webp | Bin 0 -> 12074 bytes .../mipmap-xxhdpi/ic_seat_dialog_icon.webp | Bin 0 -> 1634 bytes .../res/mipmap-xxhdpi/ic_shopping_cart.webp | Bin 0 -> 1210 bytes .../main/res/mipmap-xxhdpi/ic_vip_tag2.webp | Bin 2794 -> 2914 bytes .../main/res/mipmap-xxhdpi/ic_vip_tag3.webp | Bin 0 -> 2794 bytes .../main/res/mipmap-xxhdpi/ic_vip_tag4.webp | Bin 0 -> 2824 bytes .../main/res/mipmap-xxhdpi/ic_worning.webp | Bin 0 -> 922 bytes app/src/main/res/values/colors.xml | 6 + 115 files changed, 5287 insertions(+), 251 deletions(-) create mode 100644 app/src/main/java/com/cheng/bole/bean/OrderBean.kt create mode 100644 app/src/main/java/com/cheng/bole/event/CompanyAuthEvent.kt create mode 100644 app/src/main/java/com/cheng/bole/event/OrderEvent.kt create mode 100644 app/src/main/java/com/cheng/bole/ui/dialog/BuySeatDialog.kt create mode 100644 app/src/main/java/com/cheng/bole/ui/dialog/SeatAuthDialog.kt create mode 100644 app/src/main/java/com/cheng/bole/ui/fragment/mine/auth/CompanyAuthFragment.kt create mode 100644 app/src/main/java/com/cheng/bole/ui/fragment/mine/auth/CompanyAuthViewModel.kt create mode 100644 app/src/main/java/com/cheng/bole/ui/fragment/mine/favorite/FavoriteFragment.kt create mode 100644 app/src/main/java/com/cheng/bole/ui/fragment/mine/favorite/FavoriteViewModel.kt create mode 100644 app/src/main/java/com/cheng/bole/ui/fragment/mine/history/HistoryAdapter.kt create mode 100644 app/src/main/java/com/cheng/bole/ui/fragment/mine/history/HistoryFragment.kt create mode 100644 app/src/main/java/com/cheng/bole/ui/fragment/mine/history/HistoryViewModel.kt create mode 100644 app/src/main/java/com/cheng/bole/ui/fragment/mine/message/MessageAdapter.kt create mode 100644 app/src/main/java/com/cheng/bole/ui/fragment/mine/message/MessageFragment.kt create mode 100644 app/src/main/java/com/cheng/bole/ui/fragment/mine/message/MessageViewModel.kt create mode 100644 app/src/main/java/com/cheng/bole/ui/fragment/mine/order/OrderFragment.kt create mode 100644 app/src/main/java/com/cheng/bole/ui/fragment/mine/order/OrderViewModel.kt create mode 100644 app/src/main/java/com/cheng/bole/ui/fragment/mine/order/cert/CertificateFragment.kt create mode 100644 app/src/main/java/com/cheng/bole/ui/fragment/mine/order/cert/CertificateViewModel.kt create mode 100644 app/src/main/java/com/cheng/bole/ui/fragment/mine/order/invoice/InvoiceFragment.kt create mode 100644 app/src/main/java/com/cheng/bole/ui/fragment/mine/order/invoice/InvoiceViewModel.kt create mode 100644 app/src/main/java/com/cheng/bole/ui/fragment/mine/order/list/OrderAdapter.kt create mode 100644 app/src/main/java/com/cheng/bole/ui/fragment/mine/order/list/OrderListFragment.kt create mode 100644 app/src/main/java/com/cheng/bole/ui/fragment/mine/order/list/OrderListViewModel.kt create mode 100644 app/src/main/java/com/cheng/bole/ui/fragment/mine/seat/SeatManageAdapter.kt create mode 100644 app/src/main/java/com/cheng/bole/ui/fragment/mine/seat/SeatManageFragment.kt create mode 100644 app/src/main/java/com/cheng/bole/ui/fragment/mine/seat/SeatManageViewModel.kt create mode 100644 app/src/main/java/com/cheng/bole/utils/AppUpdateUtils.kt create mode 100644 app/src/main/res/drawable/selector_invoice_title_color.xml create mode 100644 app/src/main/res/drawable/selector_invoice_title_rb.xml create mode 100644 app/src/main/res/drawable/shape_change_account_bg.xml create mode 100644 app/src/main/res/drawable/shape_current_account_bg.xml create mode 100644 app/src/main/res/drawable/shape_eeeeee_cor4.xml delete mode 100644 app/src/main/res/drawable/shape_ff8340_circle_dp4.xml create mode 100644 app/src/main/res/drawable/shape_invoice_title_checked.xml create mode 100644 app/src/main/res/drawable/shape_invoice_title_default.xml create mode 100644 app/src/main/res/drawable/shape_white_line_cor8.xml create mode 100644 app/src/main/res/layout/dialog_buy_seat.xml create mode 100644 app/src/main/res/layout/dialog_seat_auth.xml create mode 100644 app/src/main/res/layout/fragment_certificate.xml create mode 100644 app/src/main/res/layout/fragment_company_auth.xml create mode 100644 app/src/main/res/layout/fragment_favorite.xml create mode 100644 app/src/main/res/layout/fragment_history.xml create mode 100644 app/src/main/res/layout/fragment_invoice.xml create mode 100644 app/src/main/res/layout/fragment_message.xml create mode 100644 app/src/main/res/layout/fragment_order.xml create mode 100644 app/src/main/res/layout/fragment_order_list.xml create mode 100644 app/src/main/res/layout/fragment_seat_manage.xml create mode 100644 app/src/main/res/layout/listitem_message.xml create mode 100644 app/src/main/res/layout/listitem_order.xml create mode 100644 app/src/main/res/layout/listitem_seat_manage.xml create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_auth_fail.webp create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_auth_success.webp create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_bind_phone_bg.webp create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_cert_divider.webp create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_close_dialog2.webp create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_company_auth_top_bg.webp create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_empty_message.webp create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_empty_seat.webp create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_favorite_top_bg.webp create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_pay_checked3.webp create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_pay_default3.webp create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_seat_auth_bg.webp create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_seat_dialog_icon.webp create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_shopping_cart.webp create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_vip_tag3.webp create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_vip_tag4.webp create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_worning.webp diff --git a/app/src/main/java/com/cheng/bole/bean/BidItemBean.kt b/app/src/main/java/com/cheng/bole/bean/BidItemBean.kt index 38a63a8..2babb78 100644 --- a/app/src/main/java/com/cheng/bole/bean/BidItemBean.kt +++ b/app/src/main/java/com/cheng/bole/bean/BidItemBean.kt @@ -1,7 +1,5 @@ package com.cheng.bole.bean -import android.graphics.Color - data class BidItemBean( val id: String, val recommend_id: String, //订阅消息 diff --git a/app/src/main/java/com/cheng/bole/bean/ContactsInfoBean.kt b/app/src/main/java/com/cheng/bole/bean/ContactsInfoBean.kt index 82d2cfc..d894d3f 100644 --- a/app/src/main/java/com/cheng/bole/bean/ContactsInfoBean.kt +++ b/app/src/main/java/com/cheng/bole/bean/ContactsInfoBean.kt @@ -1,6 +1,5 @@ package com.cheng.bole.bean -import android.R import java.io.Serializable class ContactsInfoBean( diff --git a/app/src/main/java/com/cheng/bole/bean/OrderBean.kt b/app/src/main/java/com/cheng/bole/bean/OrderBean.kt new file mode 100644 index 0000000..657e1d6 --- /dev/null +++ b/app/src/main/java/com/cheng/bole/bean/OrderBean.kt @@ -0,0 +1,28 @@ +package com.cheng.bole.bean + +import java.io.Serializable + +data class OrderBean( + val create_time: String, + val goods_name: String, + val id: String, + val invoice_major: Boolean, + val invoice_status: String, + val out_trade_no: String, + val pay_params: String, + val pay_time: String, + val pay_type: String, + val status: String, + val total_fee: String +):Serializable { + data class TransInfo( + val accountName: String, + val accountNo: String, + val appId: String, + val bankName: String, + val bankNo: String, + val orderId: String, + val outTradeNo: String, + val unifyOrderId: String + ) +} \ No newline at end of file diff --git a/app/src/main/java/com/cheng/bole/bean/VipGoodsEntity.kt b/app/src/main/java/com/cheng/bole/bean/VipGoodsEntity.kt index 3bba959..5c39722 100644 --- a/app/src/main/java/com/cheng/bole/bean/VipGoodsEntity.kt +++ b/app/src/main/java/com/cheng/bole/bean/VipGoodsEntity.kt @@ -1,6 +1,8 @@ package com.cheng.bole.bean -class VipGoodsEntity { +import java.io.Serializable + +class VipGoodsEntity: Serializable { var checked: Boolean = false var goods_id: String = "" var goods_name: String = "" diff --git a/app/src/main/java/com/cheng/bole/common/EventConstants.kt b/app/src/main/java/com/cheng/bole/common/EventConstants.kt index bd211ee..b6988c6 100644 --- a/app/src/main/java/com/cheng/bole/common/EventConstants.kt +++ b/app/src/main/java/com/cheng/bole/common/EventConstants.kt @@ -66,6 +66,10 @@ object EventConstants { const val JUMP_TO_MESSAGE = "client.jump.to.message" //跳转到消息页 + const val JUMP_TO_AUTH = "client.jump.to.auth" //跳转到企业认证 + + const val JUMP_TO_SEAT_MANAGE = "client.jump.to.seat.manage" //跳转到席位管理 + const val JUMP_TO_FEEDBACK = "client.jump.to.feedback" //跳转到意见反馈 const val JUMP_TO_SERVICE = "client.jump.to.service" //跳转到联系客服 diff --git a/app/src/main/java/com/cheng/bole/event/CompanyAuthEvent.kt b/app/src/main/java/com/cheng/bole/event/CompanyAuthEvent.kt new file mode 100644 index 0000000..48e922d --- /dev/null +++ b/app/src/main/java/com/cheng/bole/event/CompanyAuthEvent.kt @@ -0,0 +1,4 @@ +package com.cheng.bole.event + +class CompanyAuthEvent { +} \ No newline at end of file diff --git a/app/src/main/java/com/cheng/bole/event/OrderEvent.kt b/app/src/main/java/com/cheng/bole/event/OrderEvent.kt new file mode 100644 index 0000000..c508bd1 --- /dev/null +++ b/app/src/main/java/com/cheng/bole/event/OrderEvent.kt @@ -0,0 +1,4 @@ +package com.cheng.bole.event + +class OrderEvent { +} \ No newline at end of file diff --git a/app/src/main/java/com/cheng/bole/manager/ContactsManager.kt b/app/src/main/java/com/cheng/bole/manager/ContactsManager.kt index 818e482..5987506 100644 --- a/app/src/main/java/com/cheng/bole/manager/ContactsManager.kt +++ b/app/src/main/java/com/cheng/bole/manager/ContactsManager.kt @@ -1,6 +1,5 @@ package com.cheng.bole.manager -import android.R import android.text.TextUtils import com.cheng.bole.bean.ContactsInfoBean import com.example.base.utils.MMKVUtils @@ -15,6 +14,17 @@ object ContactsManager { MMKVUtils.put("contacts_list", Gson().toJson(list)) } + fun update(contacts: ContactsInfoBean) { + val list = all() + val oldContacts = list.find { it.id == contacts.id } + if (oldContacts != null) { + val index = list.indexOf(oldContacts) + list.removeAt(index) + list.add(index, contacts) + } + MMKVUtils.put("contacts_list", Gson().toJson(list)) + } + fun delete(id: String) { val list = all() val contacts = list.find { it.id == id } diff --git a/app/src/main/java/com/cheng/bole/net/ApiService.kt b/app/src/main/java/com/cheng/bole/net/ApiService.kt index 9845748..9c18049 100644 --- a/app/src/main/java/com/cheng/bole/net/ApiService.kt +++ b/app/src/main/java/com/cheng/bole/net/ApiService.kt @@ -13,6 +13,7 @@ import com.cheng.bole.bean.GuideUpdateInfoBean import com.cheng.bole.bean.HotWordBean import com.cheng.bole.bean.LoginEntity import com.cheng.bole.bean.MerchantGoodsBean +import com.cheng.bole.bean.OrderBean import com.cheng.bole.bean.OrderPayEntity import com.cheng.bole.bean.ZZDBInfoBean import com.cheng.bole.bean.SeatItemBean @@ -170,6 +171,24 @@ interface ApiService { @POST("/api/order") suspend fun payCreateOrder(@Body requestBody: RequestBody): HttpBaseResult + /** + * 订单列表查询 + */ + @GET("/api/order") + suspend fun getOrderList(@Query("status") status: String): HttpBaseResult> + + /** + * 订单查询 + */ + @GET("/api/order") + suspend fun getOrderInfo(@Query("order_id") orderId: String): HttpBaseResult + + /** + * 更新订单 + */ + @PUT("/api/order") + suspend fun updateOrder(@Body requestBody: RequestBody): HttpBaseResult + /** * 权限验证 */ diff --git a/app/src/main/java/com/cheng/bole/net/RequestHeaderInterceptor.kt b/app/src/main/java/com/cheng/bole/net/RequestHeaderInterceptor.kt index 07e790e..92b0132 100644 --- a/app/src/main/java/com/cheng/bole/net/RequestHeaderInterceptor.kt +++ b/app/src/main/java/com/cheng/bole/net/RequestHeaderInterceptor.kt @@ -27,7 +27,7 @@ class RequestHeaderInterceptor : Interceptor { .addHeader("x-mobile-brand", android.os.Build.BRAND) .addHeader("x-mobile-model", android.os.Build.MODEL) .addHeader("x-base-version", AppUtils.getAppVersionName()) - .addHeader("x-channel", "jk_${ChannelUtils.getChannel()}") + .addHeader("x-channel", "bole_${ChannelUtils.getChannel()}") .addHeader("x-click-id", UserConfigManager.getBDVID()) .addHeader("x-app-id", Constants.APP_ID) .addHeader("x-package", BuildConfig.APPLICATION_ID) @@ -40,7 +40,7 @@ class RequestHeaderInterceptor : Interceptor { stringBuilder.append("x-mobile-brand = ${android.os.Build.BRAND}\n") stringBuilder.append("x-mobile-model = ${android.os.Build.MODEL}\n") stringBuilder.append("x-base-version = ${AppUtils.getAppVersionName()}\n") - stringBuilder.append("x-channel = jk_${ChannelUtils.getChannel()}\n") + stringBuilder.append("x-channel = bole_${ChannelUtils.getChannel()}\n") stringBuilder.append("x-click-id = ${UserConfigManager.getBDVID()}\n") stringBuilder.append("x-package = ${BuildConfig.APPLICATION_ID}\n") stringBuilder.append("-------------header end-------------") diff --git a/app/src/main/java/com/cheng/bole/ui/dialog/AccountListDialog.kt b/app/src/main/java/com/cheng/bole/ui/dialog/AccountListDialog.kt index b9b9756..b75ef98 100644 --- a/app/src/main/java/com/cheng/bole/ui/dialog/AccountListDialog.kt +++ b/app/src/main/java/com/cheng/bole/ui/dialog/AccountListDialog.kt @@ -18,6 +18,7 @@ import com.example.base.utils.ScreenUtils import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.cheng.bole.R +import com.cheng.bole.bean.AccountEntity import com.cheng.bole.common.Constants import com.cheng.bole.databinding.DialogAccountListBinding import com.cheng.bole.manager.DialogEnum @@ -57,7 +58,7 @@ class AccountListDialog : DialogFragment() { val listStr = arguments?.getString("list") if (!TextUtils.isEmpty(listStr)) { - val list = Gson().fromJson>(listStr, object : TypeToken>(){}.type) + val list = Gson().fromJson>(listStr, object : TypeToken>(){}.type) mAdapter.setList(list) } @@ -80,7 +81,7 @@ class AccountListDialog : DialogFragment() { } companion object { - fun newInstance(list: List, btnText: String? = null): AccountListDialog { + fun newInstance(list: List, btnText: String? = null): AccountListDialog { val arg = Bundle() arg.putString("list", Gson().toJson(list)) arg.putString("btnText", btnText) @@ -90,14 +91,18 @@ class AccountListDialog : DialogFragment() { } } - class AccountAdapter: BaseQuickAdapter(R.layout.listitem_account_login_tip) { - override fun convert(holder: BaseViewHolder, item: com.cheng.bole.bean.AccountEntity) { + class AccountAdapter: BaseQuickAdapter(R.layout.listitem_account_login_tip) { + override fun convert(holder: BaseViewHolder, item: AccountEntity) { if (item.vip_type == "1") { holder.setGone(R.id.iv_vip_tag, true) } else if (item.vip_type == "2" || item.vip_type == "3") { holder.setImageResource(R.id.iv_vip_tag, if (item.vip_type == "2") R.mipmap.ic_vip_tag1 else R.mipmap.ic_vip_tag2) holder.setGone(R.id.iv_vip_tag, false) + } else if (item.vip_type == "12" || item.vip_type == "11") { + holder.setImageResource(R.id.iv_vip_tag, if (item.vip_type == "12") R.mipmap.ic_vip_tag3 else R.mipmap.ic_vip_tag4) + holder.setGone(R.id.iv_vip_tag, false) } + holder.setText(R.id.tv_username, item.name) holder.setText(R.id.tv_create_time, "${item.create_time} 注册") holder.setGone(R.id.iv_bind_wx, !item.bind.contains("weixin")) diff --git a/app/src/main/java/com/cheng/bole/ui/dialog/BindPhoneDialog.kt b/app/src/main/java/com/cheng/bole/ui/dialog/BindPhoneDialog.kt index af9fac0..f988b5d 100644 --- a/app/src/main/java/com/cheng/bole/ui/dialog/BindPhoneDialog.kt +++ b/app/src/main/java/com/cheng/bole/ui/dialog/BindPhoneDialog.kt @@ -18,6 +18,7 @@ import com.example.base.extensions.toast import com.example.base.utils.RegexUtils import com.example.base.utils.ScreenUtils import com.cheng.bole.R +import com.cheng.bole.common.Constants import com.cheng.bole.databinding.DialogBindPhoneBinding import com.cheng.bole.impl.TextWatcherImpl import com.cheng.bole.utils.KeyboardUtils @@ -62,6 +63,8 @@ class BindPhoneDialog : DialogFragment(), KeyboardUtils.OnSoftInputChangedListen binding = DialogBindPhoneBinding.bind(view) + binding.tvTitle.typeface = Constants.douyinsansB + binding.etPhone.addTextChangedListener(textWatcher) binding.ivClose.onClick { diff --git a/app/src/main/java/com/cheng/bole/ui/dialog/BuySeatDialog.kt b/app/src/main/java/com/cheng/bole/ui/dialog/BuySeatDialog.kt new file mode 100644 index 0000000..09afe46 --- /dev/null +++ b/app/src/main/java/com/cheng/bole/ui/dialog/BuySeatDialog.kt @@ -0,0 +1,298 @@ +package com.cheng.bole.ui.dialog + +import android.annotation.SuppressLint +import android.app.Dialog +import android.graphics.Color +import android.graphics.drawable.ColorDrawable +import android.os.Build +import android.os.Bundle +import android.view.Gravity +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.core.content.ContextCompat +import androidx.fragment.app.DialogFragment +import androidx.lifecycle.lifecycleScope +import com.cheng.bole.R +import com.cheng.bole.bean.OrderPayEntity +import com.cheng.bole.bean.VipGoodsEntity +import com.cheng.bole.common.Constants +import com.cheng.bole.common.EventConstants +import com.cheng.bole.databinding.DialogBuySeatBinding +import com.cheng.bole.event.PayStatusEnum +import com.cheng.bole.event.PayStatusEvent +import com.cheng.bole.event.PaySuccessEvent +import com.cheng.bole.manager.EventReportManager +import com.cheng.bole.manager.LoginManager +import com.cheng.bole.manager.UserConfigManager +import com.cheng.bole.net.ApiFactory +import com.cheng.bole.utils.pay.PayUtils +import com.example.base.common.RxBus +import com.example.base.dialog.LoadingDialog +import com.example.base.extensions.gone +import com.example.base.extensions.onClick +import com.example.base.extensions.toast +import com.example.base.extensions.visible +import com.example.base.utils.L +import com.example.base.utils.ScreenUtils +import com.example.base.utils.SpanUtils +import com.google.gson.Gson +import com.google.gson.JsonObject +import com.tencent.mm.opensdk.openapi.IWXAPI +import com.tencent.mm.opensdk.openapi.WXAPIFactory +import io.reactivex.disposables.Disposable +import kotlinx.coroutines.launch +import okhttp3.RequestBody.Companion.toRequestBody +import java.text.DecimalFormat + +class BuySeatDialog : DialogFragment() { + private lateinit var api: IWXAPI + + private var payType = 0 // 0 微信 1 支付宝 + + private var goodsEntity: VipGoodsEntity? = null + private var orderEntity: OrderPayEntity? = null + + private var count = 1 + private var totalPrice = 0f + + private val loadingDialog by lazy { LoadingDialog(requireContext()) } + + private var payStatusDisposable: Disposable? = null + + private var mOnBackListener: (() -> Unit)? = null //回调事件 + + private lateinit var binding: DialogBuySeatBinding + + override fun onStart() { + super.onStart() + val window = dialog?.window + val windowParams = window?.attributes + windowParams?.dimAmount = 0.7f + windowParams?.width = ScreenUtils.getWindowSize().x + windowParams?.gravity = Gravity.BOTTOM + windowParams?.windowAnimations = R.style.dialog_bottom + dialog?.window?.attributes = windowParams + } + + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + dialog?.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) + return super.onCreateView(inflater, container, savedInstanceState) + } + + @SuppressLint("NotifyDataSetChanged") + override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { + val view = layoutInflater.inflate(R.layout.dialog_buy_seat, null) + + binding = DialogBuySeatBinding.bind(view) + + initView() + initListener() + initObserver() + initData() + + val dialog = Dialog(requireContext()) + dialog.setContentView(view) + return dialog + } + + private fun initView() { + binding.tvTitle.typeface = Constants.douyinsansB + binding.tvPrice.typeface = Constants.dDIN_PRO_M + binding.tvCount.typeface = Constants.dDIN_PRO_M + } + + @SuppressLint("SetTextI18n") + private fun initData() { + api = WXAPIFactory.createWXAPI(requireContext(), Constants.WechatAppId) + + goodsEntity = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + arguments?.getSerializable("goods", VipGoodsEntity::class.java) + } else { + arguments?.getSerializable("goods") as? VipGoodsEntity + } + if (goodsEntity != null) { + binding.tvName.text = goodsEntity!!.goods_name + SpanUtils.with(binding.tvOriginPrice) + .append("原价:${DecimalFormat("0.##").format(goodsEntity!!.origin_price.toFloat())}元/个") + .setStrikethrough() + .create() + totalPrice = goodsEntity!!.price.toFloat() + binding.tvPrice.text = "¥${DecimalFormat("0.##").format(totalPrice)}" + releasePayType() + } + } + + @SuppressLint("SetTextI18n") + private fun initListener() { + binding.ivClose.onClick { dismiss() } + + binding.ivAdd.onClick { + count++ + binding.tvCount.text = "$count" + totalPrice = goodsEntity!!.price.toFloat() * count + binding.tvPrice.text = "¥${DecimalFormat("0.##").format(totalPrice)}" + binding.ivSubtract.setImageResource(R.mipmap.ic_subtract_count_enable) + } + + binding.ivSubtract.onClick { + if (count > 1) { + count-- + binding.tvCount.text = "$count" + totalPrice = goodsEntity!!.price.toFloat() * count + binding.tvPrice.text = "¥${DecimalFormat("0.##").format(totalPrice)}" + binding.ivSubtract.setImageResource(if (count > 1) R.mipmap.ic_subtract_count_enable else R.mipmap.ic_subtract_count_disable) + } + } + + binding.tvWxPay.onClick { + payType = 0 + checkPayType() + } + + binding.tvAliPay.onClick { + payType = 1 + checkPayType() + } + + binding.btnPay.onClick { + if (goodsEntity == null) return@onClick + if (!UserConfigManager.getNoLoginPay() && !LoginManager.isLogin()) { + toast("请登录后支付") + return@onClick + } + if (payType == 0 && !api.isWXAppInstalled) { + toast("您没有安装微信客户端,请先下载安装") + return@onClick + } + if (payType == 0) { + payCreateOrder("weixin") + } else if (payType == 1) { + payCreateOrder("alipay") + } + EventReportManager.eventReport( + EventConstants.PAY_PAY, + if (payType == 0) "weixin" else "alipay", + Gson().toJson(goodsEntity) + ) + } + } + + private fun initObserver() { + payStatusDisposable = RxBus.defaultInstance.toObservable(PayStatusEvent::class.java).subscribe { + when (it.payStatus) { + PayStatusEnum.PAY_SUCCESS -> { + toast("支付成功") + EventReportManager.eventReport( + EventConstants.PAY_SUCCESS, + if (payType == 0) "weixin" else "alipay", + "{orderId:${orderEntity?.orderId}, meal:${Gson().toJson(goodsEntity)}}" + ) + RxBus.defaultInstance.post(PaySuccessEvent()) + } + + PayStatusEnum.PAY_CANCEL -> { + toast("已取消支付") + EventReportManager.eventReport(EventConstants.PAY_CANCEL, if (payType == 0) "weixin" else "alipay", "{orderId:${orderEntity?.orderId}") + } + + else -> { + toast("已取消支付") + EventReportManager.eventReport(if (payType == 0) EventConstants.ERROR_CLIENT_WXPAY_ERR else EventConstants.ERROR_CLIENT_ALIPAY_ERR, "{orderId:${orderEntity?.orderId}", it.message) + } + } + } + } + + private fun payCreateOrder(payType: String) { + loadingDialog.show() + lifecycleScope.launch { + try { + val json = JsonObject() + json.addProperty("goods_id", goodsEntity!!.goods_id) + json.addProperty("pay_type", payType) + json.addProperty("source", "corp") + json.addProperty("pay_source", "app") + val extra = JsonObject() + extra.addProperty("add_corp_limit", "$count") + json.add("extra", extra) + + val response = ApiFactory.apiService.payCreateOrder(json.toString().toRequestBody()) + if (response.status) { + orderEntity = response.data + if (this@BuySeatDialog.payType == 0) { + PayUtils.toWXPay(requireActivity(), response.data) + } else if (this@BuySeatDialog.payType == 1) { + PayUtils.toAliPay(requireActivity(), response.data.payParam, "") + } + } else toast(response.message, true) + loadingDialog.dismiss() + } catch (e: Exception) { + loadingDialog.dismiss() + L.d(e) + } + } + } + + private fun releasePayType() { + val list = goodsEntity?.pay_type?.split(",")?.map { it.trim() }?.toList() + if (list?.find { it == "alipay" } != null) { + binding.tvAliPay.visible() + } else { + binding.tvAliPay.gone() + } + if (list?.find { it == "weixin" } != null) { + binding.tvWxPay.visible() + } else { + binding.tvWxPay.gone() + } + + if (goodsEntity?.pay_type!!.startsWith("weixin")) { + payType = 0 + } + if (goodsEntity?.pay_type!!.startsWith("alipay")) { + payType = 1 + } + + checkPayType() + } + + private fun checkPayType() { + if (payType == 0) { + val start1 = ContextCompat.getDrawable(requireContext(), R.mipmap.ic_wx_pay) + val end1 = ContextCompat.getDrawable(requireContext(), R.mipmap.ic_pay_checked3) + binding.tvWxPay.setCompoundDrawablesRelativeWithIntrinsicBounds(start1, null, end1, null) + + val start2 = ContextCompat.getDrawable(requireContext(), R.mipmap.ic_ali_pay) + val end2 = ContextCompat.getDrawable(requireContext(), R.mipmap.ic_pay_default3) + binding.tvAliPay.setCompoundDrawablesRelativeWithIntrinsicBounds(start2, null, end2, null) + } else if (payType == 1) { + val start1 = ContextCompat.getDrawable(requireContext(), R.mipmap.ic_ali_pay) + val end1 = ContextCompat.getDrawable(requireContext(), R.mipmap.ic_pay_checked3) + binding.tvAliPay.setCompoundDrawablesRelativeWithIntrinsicBounds(start1, null, end1, null) + + val start2 = ContextCompat.getDrawable(requireContext(), R.mipmap.ic_wx_pay) + val end2 = ContextCompat.getDrawable(requireContext(), R.mipmap.ic_pay_default3) + binding.tvWxPay.setCompoundDrawablesRelativeWithIntrinsicBounds(start2, null, end2, null) + } + } + + fun setOnSelectListener(listener: () -> Unit) { + mOnBackListener = listener + } + + override fun onDestroy() { + payStatusDisposable?.dispose() + super.onDestroy() + } + + companion object { + fun newInstance(goods: VipGoodsEntity): BuySeatDialog { + val arg = Bundle() + arg.putSerializable("goods", goods) + val fragment = BuySeatDialog() + fragment.arguments = arg + return fragment + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cheng/bole/ui/dialog/SeatAuthDialog.kt b/app/src/main/java/com/cheng/bole/ui/dialog/SeatAuthDialog.kt new file mode 100644 index 0000000..f28ede4 --- /dev/null +++ b/app/src/main/java/com/cheng/bole/ui/dialog/SeatAuthDialog.kt @@ -0,0 +1,102 @@ +package com.cheng.bole.ui.dialog + +import android.annotation.SuppressLint +import android.app.Dialog +import android.graphics.Color +import android.graphics.drawable.ColorDrawable +import android.os.Bundle +import android.text.TextUtils +import android.view.Gravity +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.constraintlayout.widget.ConstraintLayout +import androidx.fragment.app.DialogFragment +import com.cheng.bole.R +import com.cheng.bole.common.Constants +import com.cheng.bole.databinding.DialogSeatAuthBinding +import com.cheng.bole.utils.KeyboardUtils +import com.example.base.extensions.getColor +import com.example.base.extensions.onClick +import com.example.base.extensions.toast +import com.example.base.utils.ScreenUtils +import com.example.base.utils.SpanUtils + +class SeatAuthDialog : DialogFragment(), KeyboardUtils.OnSoftInputChangedListener { + private var mOnBackListener: ((String) -> Unit)? = null //回调事件 + + private lateinit var binding: DialogSeatAuthBinding + + override fun onStart() { + super.onStart() + val window = dialog?.window + val windowParams = window?.attributes + windowParams?.dimAmount = 0.7f + windowParams?.width = ScreenUtils.getWindowSize().x + windowParams?.gravity = Gravity.BOTTOM + windowParams?.windowAnimations = R.style.dialog_bottom + dialog?.window?.attributes = windowParams + } + + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + dialog?.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) + KeyboardUtils.registerSoftInputChangedListener(requireActivity(), this) + return super.onCreateView(inflater, container, savedInstanceState) + } + + @SuppressLint("NotifyDataSetChanged") + override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { + val view = layoutInflater.inflate(R.layout.dialog_seat_auth, null) + + binding = DialogSeatAuthBinding.bind(view) + + binding.tvTitle.typeface = Constants.douyinsansB + + SpanUtils.with(binding.tvTip) + .append("注:授权者需提前到") + .append("设置-绑定账号-手机号绑定") + .setForegroundColor(getColor(R.color.color_ff8518)) + .append("才能正常授权") + .create() + + binding.ivClose.onClick { dismiss() } + + binding.btnNext.onClick { + val phone = binding.etPhone.text.toString() + if (TextUtils.isEmpty(phone)) { + toast("请输入手机号") + return@onClick + } + mOnBackListener?.invoke(phone) + dismiss() + } + + val dialog = Dialog(requireContext()) + dialog.setContentView(view) + return dialog + } + + override fun onSoftInputChanged(height: Int) { + val lp = binding.layoutContent.layoutParams as ConstraintLayout.LayoutParams + lp.bottomMargin = height + binding.layoutContent.layoutParams = lp + } + + override fun onDestroyView() { + KeyboardUtils.unregisterSoftInputChangedListener(requireActivity().window) + super.onDestroyView() + } + + fun setOnSelectListener(listener: (String) -> Unit) { + mOnBackListener = listener + } + + companion object { + fun newInstance(): SeatAuthDialog { + val arg = Bundle() + val fragment = SeatAuthDialog() + fragment.arguments = arg + return fragment + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cheng/bole/ui/fragment/bid/publish/contacts/AddContactsFragment.kt b/app/src/main/java/com/cheng/bole/ui/fragment/bid/publish/contacts/AddContactsFragment.kt index c79a4f3..290a648 100644 --- a/app/src/main/java/com/cheng/bole/ui/fragment/bid/publish/contacts/AddContactsFragment.kt +++ b/app/src/main/java/com/cheng/bole/ui/fragment/bid/publish/contacts/AddContactsFragment.kt @@ -1,5 +1,6 @@ package com.cheng.bole.ui.fragment.bid.publish.contacts +import android.annotation.SuppressLint import android.graphics.Color import android.os.Build import android.text.TextUtils @@ -10,12 +11,10 @@ import com.cheng.bole.event.ContactsEvent import com.cheng.bole.manager.ContactsManager import com.cheng.bole.manager.DialogEnum import com.cheng.bole.ui.dialog.TipDialog -import com.efs.sdk.memleaksdk.monitor.internal.bi import com.example.base.common.RxBus import com.example.base.decoration.GridSpaceItemDecoration import com.example.base.extensions.onClick import com.example.base.extensions.toast -import com.example.base.extensions.visible import com.example.base.ui.BaseFragment import com.example.base.utils.DensityUtils import java.util.UUID @@ -44,6 +43,7 @@ class AddContactsFragment: BaseFragment @@ -71,13 +71,13 @@ class AddContactsFragment: BaseFragment() { } override fun initData() { + mViewModel.getCompanyInfo() super.initData() } @@ -78,32 +91,32 @@ class MineFragment : BaseFragment() { binding.tvExpireTime.onClick { binding.tvVipName.performClick() } binding.ivSetting.onClick { -// PublicActivity.start(requireContext(), SettingFragment::class.java) + PublicActivity.start(requireContext(), SettingsFragment::class.java) EventReportManager.eventReport(EventConstants.JUMP_TO_SYSTEM_SETTING, "", "") } binding.ivMessage.onClick { -// PublicActivity.start(requireContext(), MessageFragment::class.java) + PublicActivity.start(requireContext(), MessageFragment::class.java) EventReportManager.eventReport(EventConstants.JUMP_TO_MESSAGE, "", "") } binding.layoutPush.onClick { -// PublicActivity.start(requireContext(), SubscribeFragment::class.java) + PublicActivity.start(requireContext(), SubscribeFragment::class.java) EventReportManager.eventReport(EventConstants.JUMP_TO_SUBSCRIBE, "center", "") } binding.layoutFavorite.onClick { -// PublicActivity.start(requireContext(), FavoriteFragment::class.java) + PublicActivity.start(requireContext(), FavoriteFragment::class.java) EventReportManager.eventReport(EventConstants.JUMP_TO_FAVORITE, "", "") } binding.layoutHistory.onClick { -// PublicActivity.start(requireContext(), HistoryFragment::class.java) + PublicActivity.start(requireContext(), HistoryFragment::class.java) EventReportManager.eventReport(EventConstants.JUMP_TO_HISTORY, "", "") } binding.layoutOrder.onClick { -// PublicActivity.start(requireContext(), OrderFragment::class.java) + PublicActivity.start(requireContext(), OrderFragment::class.java) EventReportManager.eventReport(EventConstants.JUMP_TO_ORDER, "", "") } @@ -112,11 +125,13 @@ class MineFragment : BaseFragment() { } binding.tvAuth.onClick { - + PublicActivity.start(requireContext(), CompanyAuthFragment::class.java) + EventReportManager.eventReport(EventConstants.JUMP_TO_AUTH, "", "") } binding.tvSeatManage.onClick { - + PublicActivity.start(requireContext(), SeatManageFragment::class.java) + EventReportManager.eventReport(EventConstants.JUMP_TO_SEAT_MANAGE, "", "") } binding.tvService.onClick { @@ -144,6 +159,31 @@ class MineFragment : BaseFragment() { setUserInfo() } + mViewModel.companyLiveData.observe(this) { + if (it != null) { + when (it.status) { + "2" -> { + binding.tvAuthStatus.text = "认证成功" + binding.tvAuthStatus.setTextColor(getColor(R.color.color_3bbf0f)) + binding.tvAuthStatus.setCompoundDrawablesWithIntrinsicBounds(R.drawable.shape_auth_success_dot, 0, 0, 0) + } + "3" -> { + binding.tvAuthStatus.text = "认证失败" + binding.tvAuthStatus.setTextColor(getColor(R.color.color_ff592b)) + binding.tvAuthStatus.setCompoundDrawablesWithIntrinsicBounds(R.drawable.shape_auth_fail_dot, 0, 0, 0) + } + else -> binding.tvAuthStatus.gone() + } + } else { + binding.tvAuthStatus.gone() + } + } + + val authEvent = RxBus.defaultInstance.toObservable(CompanyAuthEvent::class.java).subscribe { + mViewModel.getCompanyInfo() + } + addDisposable(authEvent) + val mineRefreshEvent = RxBus.defaultInstance.toObservable(MineRefreshEvent::class.java).subscribe { mViewModel.userInfo() } diff --git a/app/src/main/java/com/cheng/bole/ui/fragment/mine/MineViewModel.kt b/app/src/main/java/com/cheng/bole/ui/fragment/mine/MineViewModel.kt index 76c878e..034cfb8 100644 --- a/app/src/main/java/com/cheng/bole/ui/fragment/mine/MineViewModel.kt +++ b/app/src/main/java/com/cheng/bole/ui/fragment/mine/MineViewModel.kt @@ -1,6 +1,8 @@ package com.cheng.bole.ui.fragment.mine import androidx.lifecycle.MutableLiveData +import com.cheng.bole.bean.CompanyBean +import com.cheng.bole.bean.UploadFileEntity import com.cheng.bole.bean.UserEntity import com.cheng.bole.bean.WxServiceEntity import com.cheng.bole.common.Constants @@ -15,6 +17,7 @@ import com.tencent.mm.opensdk.openapi.WXAPIFactory class MineViewModel : BaseViewModel() { val userInfoLiveData = MutableLiveData() + val companyLiveData = MutableLiveData() fun userInfo(showLoading: Boolean = false) { if (showLoading) showDialog() @@ -31,6 +34,18 @@ class MineViewModel : BaseViewModel() { }) } + fun getCompanyInfo() { + launchOnUiTryCatch({ + val response = ApiFactory.apiService.getCompanyInfo() + if (response.status) { + companyLiveData.postValue(response.data) + } else toast(response.message, true) + }, { + setError(it) + L.d(it) + }) + } + fun wxService() { showDialog() launchOnUiTryCatch({ diff --git a/app/src/main/java/com/cheng/bole/ui/fragment/mine/about/AboutFragment.kt b/app/src/main/java/com/cheng/bole/ui/fragment/mine/about/AboutFragment.kt index c385c06..42e3508 100644 --- a/app/src/main/java/com/cheng/bole/ui/fragment/mine/about/AboutFragment.kt +++ b/app/src/main/java/com/cheng/bole/ui/fragment/mine/about/AboutFragment.kt @@ -1,13 +1,13 @@ package com.cheng.bole.ui.fragment.mine.about import android.annotation.SuppressLint -import com.example.base.extensions.onClick -import com.example.base.ui.BaseFragment -import com.example.base.utils.AppUtils import com.cheng.bole.databinding.FragmentAboutBinding import com.cheng.bole.ui.dialog.PopupDialog import com.cheng.bole.utils.ChannelUtils import com.cheng.bole.utils.UrlHelper +import com.example.base.extensions.onClick +import com.example.base.ui.BaseFragment +import com.example.base.utils.AppUtils import org.jetbrains.anko.sdk27.listeners.onLongClick class AboutFragment : BaseFragment() { @@ -17,10 +17,6 @@ class AboutFragment : BaseFragment() { mTitleBar?.background = null binding.tvVersionName.text = "版本号:${AppUtils.getAppVersionName()}" - - if (ChannelUtils.getChannel() == "huawei") { - binding.tvAppName.text = AppUtils.getAppName() - } } override fun initListener() { @@ -35,5 +31,14 @@ class AboutFragment : BaseFragment() { binding.tvPolicy.onClick { UrlHelper.startPrivacyPolicy(requireContext()) } + binding.tvPermissionList.onClick { + UrlHelper.startPermissionList(requireContext()) + } + binding.tvShareList.onClick { + UrlHelper.startShareList(requireContext()) + } + binding.tvSdkList.onClick { + UrlHelper.startSDKList(requireContext()) + } } } \ No newline at end of file diff --git a/app/src/main/java/com/cheng/bole/ui/fragment/mine/account/AccountAdapter.kt b/app/src/main/java/com/cheng/bole/ui/fragment/mine/account/AccountAdapter.kt index 700a48f..0d8148d 100644 --- a/app/src/main/java/com/cheng/bole/ui/fragment/mine/account/AccountAdapter.kt +++ b/app/src/main/java/com/cheng/bole/ui/fragment/mine/account/AccountAdapter.kt @@ -6,27 +6,43 @@ import coil.transform.CircleCropTransformation import com.chad.library.adapter.base.BaseQuickAdapter import com.chad.library.adapter.base.viewholder.BaseViewHolder import com.cheng.bole.R +import com.cheng.bole.bean.AccountEntity import com.cheng.bole.manager.UserConfigManager +import com.example.base.extensions.getColor -class AccountAdapter:BaseQuickAdapter(R.layout.listitem_account) { +class AccountAdapter : BaseQuickAdapter(R.layout.listitem_account) { - override fun convert(holder: BaseViewHolder, item: com.cheng.bole.bean.AccountEntity) { + override fun convert(holder: BaseViewHolder, item: AccountEntity) { holder.getView(R.id.iv_avatar).load(item.avater) { transformations(CircleCropTransformation()) placeholder(R.mipmap.ic_default_avatar) error(R.mipmap.ic_default_avatar) } + if (item.vip_type == "1") { - holder.setGone(R.id.tv_vip_tag, true) + holder.setGone(R.id.iv_vip_tag, true) } else if (item.vip_type == "2" || item.vip_type == "3") { - holder.setText(R.id.tv_vip_tag, if (item.vip_type == "2") item.vip_name else "终生会员") - holder.setGone(R.id.tv_vip_tag, false) + holder.setImageResource(R.id.iv_vip_tag, if (item.vip_type == "2") R.mipmap.ic_vip_tag1 else R.mipmap.ic_vip_tag2) + holder.setGone(R.id.iv_vip_tag, false) + } else if (item.vip_type == "12" || item.vip_type == "11") { + holder.setImageResource(R.id.iv_vip_tag, if (item.vip_type == "12") R.mipmap.ic_vip_tag3 else R.mipmap.ic_vip_tag4) + holder.setGone(R.id.iv_vip_tag, false) } + holder.setVisible(R.id.tv_current_account, item.user_id == UserConfigManager.userInfo?.user_id) holder.setVisible(R.id.tv_change_account, item.user_id != UserConfigManager.userInfo?.user_id) + holder.setVisible(R.id.tv_user_id_left, item.user_id != UserConfigManager.userInfo?.user_id) + holder.setVisible(R.id.tv_user_id_right, item.user_id == UserConfigManager.userInfo?.user_id) + + holder.setBackgroundColor( + R.id.layout_title, + if (item.user_id == UserConfigManager.userInfo?.user_id) getColor(R.color.color_dce4f3) else getColor(R.color.color_f7ebe2) + ) + + holder.setText(R.id.tv_user_id_left, "ID:${item.user_id}") + holder.setText(R.id.tv_user_id_right, "ID:${item.user_id}") holder.setText(R.id.tv_username, item.name) - holder.setText(R.id.tv_user_id, "ID:${item.user_id}") holder.setGone(R.id.iv_bind_wx, !item.bind.contains("weixin")) holder.setGone(R.id.iv_bind_phone, !item.bind.contains("phone")) } diff --git a/app/src/main/java/com/cheng/bole/ui/fragment/mine/account/AccountManageFragment.kt b/app/src/main/java/com/cheng/bole/ui/fragment/mine/account/AccountManageFragment.kt index 519430c..68041c7 100644 --- a/app/src/main/java/com/cheng/bole/ui/fragment/mine/account/AccountManageFragment.kt +++ b/app/src/main/java/com/cheng/bole/ui/fragment/mine/account/AccountManageFragment.kt @@ -1,8 +1,10 @@ package com.cheng.bole.ui.fragment.mine.account import android.graphics.Color +import com.cheng.bole.bean.AccountEntity import com.cheng.bole.common.EventConstants import com.cheng.bole.databinding.FragmentAccountManageBinding +import com.cheng.bole.event.LoginSuccessEvent import com.cheng.bole.manager.DialogEnum import com.cheng.bole.manager.EventReportManager import com.cheng.bole.manager.LoginManager @@ -17,7 +19,7 @@ import org.jetbrains.anko.backgroundColor class AccountManageFragment : BaseFragment() { private val mAdapter by lazy { AccountAdapter() } - private var mAccount: com.cheng.bole.bean.AccountEntity? = null + private var mAccount: AccountEntity? = null override fun initView() { super.initView() @@ -93,7 +95,7 @@ class AccountManageFragment : BaseFragment() { + private var companyDetail: CompanyBean? = null + + private var image: UploadFileEntity? = null + + private val contactsAdapter by lazy { AddBidContactsAdapter() } + + private var city: AreaBean? = null + + private val imageLauncher = registerForActivityResult(ActivityResultContracts.GetContent()) { + it?.let { + val imagePath = FileProviderUtils.getFileAbsolutePath(requireContext(), it) + if (!TextUtils.isEmpty(imagePath)) { + mViewModel.uploadImage(requireContext(), imagePath!!) + } else { + toast("图片加载失败") + } + } + } + + override fun initView() { + super.initView() + binding.tvTitle.typeface = Constants.pmzdbt + + binding.rvContacts.adapter = contactsAdapter + + binding.ivTopBg.viewTreeObserver.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener { + override fun onGlobalLayout() { + (binding.tvTitle.layoutParams as ConstraintLayout.LayoutParams).topMargin = (binding.ivTopBg.height * 94f / 250f).toInt() + (binding.layoutContent.layoutParams as ConstraintLayout.LayoutParams).topMargin = (binding.ivTopBg.height * 178f / 250f).toInt() + + binding.layoutContent.setupWith(binding.nestedScrollView).setFrameClearDrawable(binding.layoutContent.background).setBlurRadius(5f) + binding.ivTopBg.viewTreeObserver.removeOnGlobalLayoutListener(this) + } + }) + } + + override fun initData() { + super.initData() + mViewModel.getCompanyInfo() + } + + @SuppressLint("NotifyDataSetChanged") + override fun initListener() { + super.initListener() + binding.tvArea.onClick { + val f = SelectAreaDialog.newInstance(if (city != null) listOf(city!!) else emptyList(), true) + f.setOnSelectListener { + city = it[0] + binding.tvArea.text = city!!.name + } + f.show(childFragmentManager, "") + } + + binding.ivImage.onClick { + if (image != null) { + PublicActivity.start(requireContext(), PhotoViewFragment::class.java, Pair("photos", listOf(image!!.url))) + } + } + binding.ivAddImage.onClick { + if (image == null) { + PermissionUtils.checkPhotoPermission(requireActivity(), childFragmentManager) { isGranted -> + if (isGranted) { + imageLauncher.launch("image/*") + } + } + } + } + binding.ivDeleteImage.onClick { + if (companyDetail == null && image != null) { + mViewModel.deleteImage(image!!.id) + } + image = null + binding.ivImage.load("") + binding.ivAddImage.visible() + binding.ivDeleteImage.gone() + } + + binding.ivAddContacts.onClick { + val f = SelectContactsDialog.newInstance(contactsAdapter.data) + f.setOnSelectListener { + contactsAdapter.setList(it) + binding.rvContacts.visible() + binding.tvContacts.gone() + if (contactsAdapter.data.size == 5) { + binding.ivAddContacts.gone() + } + } + f.show(childFragmentManager, "") + } + + binding.btnNext.onClick { + val name = binding.etName.text.toString().trim() + if (TextUtils.isEmpty(name)) { + toast("请输入企业名称") + return@onClick + } + if (city == null) { + toast("请选择地区") + return@onClick + } + if (image == null) { + toast("请上传营业执照") + return@onClick + } + if (contactsAdapter.data.isEmpty()) { + toast("请添加联系人") + return@onClick + } + if (UserConfigManager.userInfo?.vip != "1") { + commit() + } else { + PublicActivity.start(requireContext(), VipFragment::class.java, Pair("origin", "enterprise_auth")) + } + } + } + + override fun initObserve() { + super.initObserve() + mViewModel.addLiveData.observe(this) { + toast("提交成功") + requireActivity().finish() + } + + mViewModel.companyLiveData.observe(this) { + companyDetail = it + if (companyDetail != null) { + setData(companyDetail!!) + } + } + + mViewModel.imageLiveData.observe(this) { + image = it + binding.ivImage.load(it.url) { + transformations(RoundedCornersTransformation(DensityUtils.dp2px(8f).toFloat())) + } + binding.ivAddImage.gone() + binding.ivDeleteImage.visible() + } + } + + private fun commit() { + val name = binding.etName.text.toString().trim() + val jsonObject = JsonObject() + jsonObject.addProperty("company_name", name) + jsonObject.addProperty("city_id", "${city!!.id}") + jsonObject.addProperty("file_id", image!!.id) + + val contactArray = JsonArray() + contactsAdapter.data.forEach { + val contactObj = JsonObject() + contactObj.addProperty("name", it.name) + contactObj.addProperty("phone", it.phone) + contactObj.addProperty("job", it.job) + contactArray.add(contactObj) + } + jsonObject.add("contact", contactArray) + + if (companyDetail == null) { + mViewModel.addCompanyInfo(jsonObject.toString().toRequestBody()) + } else { + jsonObject.addProperty("id", companyDetail!!.id) + mViewModel.updateCompanyInfo(jsonObject.toString().toRequestBody()) + } + RxBus.defaultInstance.post(CompanyAuthEvent()) + } + + @SuppressLint("SetTextI18n") + private fun setData(detail: CompanyBean) { + when (detail.status) { + "1" -> { + binding.etName.isEnabled = false + binding.tvArea.isEnabled = false + binding.ivAddImage.isEnabled = false + binding.ivDeleteImage.isEnabled = false + binding.rvContacts.isEnabled = false + binding.ivAddContacts.isEnabled = false + binding.btnNext.isEnabled = false + binding.layoutRejectReason.gone() + + binding.btnNext.text = "审核中" + } + "2" -> { + binding.tvStatus.text = "认证成功" + binding.tvStatus.setCompoundDrawablesWithIntrinsicBounds(R.mipmap.ic_auth_success, 0, 0, 0) + binding.tvReason.gone() + binding.layoutRejectReason.visible() + + binding.btnNext.text = "重新提交" + } + "3" -> { + binding.tvStatus.text = "认证失败" + binding.tvStatus.setCompoundDrawablesWithIntrinsicBounds(R.mipmap.ic_auth_fail, 0, 0, 0) + binding.tvReason.text = "理由:${detail.remark}" + binding.layoutRejectReason.visible() + + binding.btnNext.text = "重新提交" + } + else -> { + binding.layoutRejectReason.gone() + } + } + binding.etName.setText(detail.company_name) + + city = UserConfigManager.getCityList().find { it.id == detail.city_id.toInt() } + if (city != null) binding.tvArea.text = city!!.name + + image = UploadFileEntity(detail.file_id, detail.file_url) + binding.ivImage.load(image!!.url) { + transformations(RoundedCornersTransformation(DensityUtils.dp2px(8f).toFloat())) + } + binding.ivAddImage.gone() + binding.ivDeleteImage.visible() + + contactsAdapter.setList(detail.contact) + if (contactsAdapter.data.size == 5) { + binding.ivAddContacts.gone() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cheng/bole/ui/fragment/mine/auth/CompanyAuthViewModel.kt b/app/src/main/java/com/cheng/bole/ui/fragment/mine/auth/CompanyAuthViewModel.kt new file mode 100644 index 0000000..7e990c3 --- /dev/null +++ b/app/src/main/java/com/cheng/bole/ui/fragment/mine/auth/CompanyAuthViewModel.kt @@ -0,0 +1,92 @@ +package com.cheng.bole.ui.fragment.mine.auth + +import android.content.Context +import androidx.lifecycle.MutableLiveData +import com.cheng.bole.bean.CompanyBean +import com.cheng.bole.bean.UploadFileEntity +import com.cheng.bole.net.ApiFactory +import com.cheng.bole.utils.BitmapUtils +import com.example.base.extensions.toast +import com.example.base.utils.L +import com.example.base.viewmodel.BaseViewModel +import okhttp3.MediaType.Companion.toMediaTypeOrNull +import okhttp3.MultipartBody +import okhttp3.RequestBody + +class CompanyAuthViewModel: BaseViewModel() { + val companyLiveData = MutableLiveData() + val addLiveData = MutableLiveData() + val imageLiveData = MutableLiveData() + + fun getCompanyInfo() { + showDialog() + launchOnUiTryCatch({ + val response = ApiFactory.apiService.getCompanyInfo() + if (response.status) { + companyLiveData.postValue(response.data) + } else toast(response.message, true) + dismissDialog() + }, { + dismissDialog() + setError(it) + L.d(it) + }) + } + + fun addCompanyInfo(requestBody: RequestBody) { + showDialog() + launchOnUiTryCatch({ + val response = ApiFactory.apiService.addCompanyInfo(requestBody) + if (response.status) { + addLiveData.postValue(Any()) + } else toast(response.message, true) + dismissDialog() + }, { + dismissDialog() + setError(it) + L.d(it) + }) + } + + fun updateCompanyInfo(requestBody: RequestBody) { + showDialog() + launchOnUiTryCatch({ + val response = ApiFactory.apiService.updateCompanyInfo(requestBody) + if (response.status) { + addLiveData.postValue(Any()) + } else toast(response.message, true) + dismissDialog() + }, { + dismissDialog() + setError(it) + L.d(it) + }) + } + + fun uploadImage(context: Context, path: String) { + showDialog() + BitmapUtils.compressImg(context, path) { + launchOnUiTryCatch({ + val requestFile = RequestBody.create("multipart/form-data".toMediaTypeOrNull(), it) + val filePart = MultipartBody.Part.createFormData("file", it.getName(), requestFile) + val response = ApiFactory.apiService.upload(filePart, "company") + if (response.status) { + imageLiveData.postValue(response.data) + } else toast(response.message, true) + dismissDialog() + }, { + dismissDialog() + setError(it) + L.d(it) + }) + } + } + + fun deleteImage(id: String) { + launchOnUiTryCatch({ + ApiFactory.apiService.delUserFile(id) + }, { + L.d(it) + }) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cheng/bole/ui/fragment/mine/favorite/FavoriteFragment.kt b/app/src/main/java/com/cheng/bole/ui/fragment/mine/favorite/FavoriteFragment.kt new file mode 100644 index 0000000..5f11058 --- /dev/null +++ b/app/src/main/java/com/cheng/bole/ui/fragment/mine/favorite/FavoriteFragment.kt @@ -0,0 +1,64 @@ +package com.cheng.bole.ui.fragment.mine.favorite + +import com.cheng.bole.R +import com.cheng.bole.bean.BidItemBean +import com.cheng.bole.databinding.FragmentFavoriteBinding +import com.cheng.bole.event.FavoriteEvent +import com.cheng.bole.ui.activity.PublicActivity +import com.cheng.bole.ui.fragment.bid.BidAdapter +import com.cheng.bole.ui.fragment.bid.detail.BidDetailFragment +import com.cheng.bole.ui.fragment.mine.vip.VipFragment +import com.example.base.common.RxBus +import com.example.base.ui.list.ListFragment + +class FavoriteFragment: ListFragment() { + private var item: BidItemBean? = null + + override fun noDataClick() { + + } + + override fun bindAdapter() = BidAdapter() + + override fun initView() { + super.initView() + mTitleBar?.background = null + + mEmptyView.setNoDataLogo(R.mipmap.ic_empty_favorite) + mEmptyView.setNoDataText("暂无收藏") + } + + override fun initData() { + super.initData() + firstLoad() + } + + override fun initListener() { + super.initListener() + mAdapter.setOnItemClickListener { _, _, i -> + item = mAdapter.getItem(i) + mViewModel.checkAuth() + } + } + + override fun initObserve() { + super.initObserve() + mViewModel.authLiveData.observe(this) { + if (it.auth) { + PublicActivity.start( + requireContext(), + BidDetailFragment::class.java, + Pair("id", item!!.id), + Pair("info_source", item!!.info_source) + ) + } else { + PublicActivity.start(requireContext(), VipFragment::class.java, Pair("origin", "view_bid")) + } + } + + val favoriteEvent = RxBus.defaultInstance.toObservable(FavoriteEvent::class.java).subscribe { + firstLoad() + } + addDisposable(favoriteEvent) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cheng/bole/ui/fragment/mine/favorite/FavoriteViewModel.kt b/app/src/main/java/com/cheng/bole/ui/fragment/mine/favorite/FavoriteViewModel.kt new file mode 100644 index 0000000..b15364b --- /dev/null +++ b/app/src/main/java/com/cheng/bole/ui/fragment/mine/favorite/FavoriteViewModel.kt @@ -0,0 +1,31 @@ +package com.cheng.bole.ui.fragment.mine.favorite + +import androidx.collection.ArrayMap +import androidx.lifecycle.MutableLiveData +import com.cheng.bole.bean.BidItemBean +import com.cheng.bole.bean.UserAuthBean +import com.cheng.bole.net.ApiFactory +import com.cheng.bole.net.model.toListResult +import com.example.base.extensions.toast +import com.example.base.utils.L +import com.example.base.viewmodel.ListViewModel + +class FavoriteViewModel: ListViewModel() { + override suspend fun requestApi(params: ArrayMap): Result> { + return ApiFactory.apiService.getFavoriteList().toListResult() + } + + val authLiveData = MutableLiveData() + + fun checkAuth() { + launchOnUiTryCatch({ + val response = ApiFactory.apiService.checkAuth() + if (response.status) { + authLiveData.postValue(response.data) + } else toast(response.message, true) + }, { + setError(it) + L.d(it) + }) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cheng/bole/ui/fragment/mine/history/HistoryAdapter.kt b/app/src/main/java/com/cheng/bole/ui/fragment/mine/history/HistoryAdapter.kt new file mode 100644 index 0000000..e459b92 --- /dev/null +++ b/app/src/main/java/com/cheng/bole/ui/fragment/mine/history/HistoryAdapter.kt @@ -0,0 +1,28 @@ +package com.cheng.bole.ui.fragment.mine.history + +import android.text.TextUtils +import com.chad.library.adapter.base.viewholder.BaseViewHolder +import com.cheng.bole.R +import com.cheng.bole.bean.BidDetailBean +import com.cheng.bole.utils.BidTypeUtils +import com.cheng.bole.widget.CommonShapeView +import com.example.base.ui.list.LoadMoreAdapter +import java.text.DecimalFormat + +class HistoryAdapter: LoadMoreAdapter(R.layout.listitem_bid) { + + override fun convert(holder: BaseViewHolder, item: BidDetailBean) { + val tvTag = holder.getView(R.id.tv_tag) + tvTag.setBgColor(BidTypeUtils.getTypeColor(item.type_name)) + tvTag.text = BidTypeUtils.getShortName(item.type_name) + + holder.setText(R.id.tv_title, item.origin_content.toString()) + holder.setText(R.id.tv_location, if (TextUtils.isEmpty(item.city_name)) "全国" else item.city_name) + holder.setText(R.id.tv_amount, item.project_amount) + holder.setText(R.id.tv_time, item.tips_time) + holder.setText(R.id.tv_rate, DecimalFormat("0.0").format(item.star.toFloat())) + + holder.setGone(R.id.tv_amount, TextUtils.isEmpty(item.project_amount)) + holder.setGone(R.id.tv_time, true) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cheng/bole/ui/fragment/mine/history/HistoryFragment.kt b/app/src/main/java/com/cheng/bole/ui/fragment/mine/history/HistoryFragment.kt new file mode 100644 index 0000000..3014346 --- /dev/null +++ b/app/src/main/java/com/cheng/bole/ui/fragment/mine/history/HistoryFragment.kt @@ -0,0 +1,56 @@ +package com.cheng.bole.ui.fragment.mine.history + +import com.cheng.bole.R +import com.cheng.bole.bean.BidDetailBean +import com.cheng.bole.databinding.FragmentHistoryBinding +import com.cheng.bole.ui.activity.PublicActivity +import com.cheng.bole.ui.fragment.bid.detail.BidDetailFragment +import com.cheng.bole.ui.fragment.mine.vip.VipFragment +import com.example.base.ui.list.ListFragment + +class HistoryFragment: ListFragment() { + private var item: BidDetailBean? = null + + override fun noDataClick() { + + } + + override fun bindAdapter() = HistoryAdapter() + + override fun initView() { + super.initView() + mTitleBar?.background = null + + mEmptyView.setNoDataLogo(R.mipmap.ic_empty_history) + mEmptyView.setNoDataText("暂无足迹") + } + + override fun initData() { + super.initData() + firstLoad() + } + + override fun initListener() { + super.initListener() + mAdapter.setOnItemClickListener { _, _, i -> + item = mAdapter.getItem(i) + mViewModel.checkAuth() + } + } + + override fun initObserve() { + super.initObserve() + mViewModel.authLiveData.observe(this) { + if (it.auth) { + PublicActivity.start( + requireContext(), + BidDetailFragment::class.java, + Pair("id", item!!.id), + Pair("info_source", item!!.info_source) + ) + } else { + PublicActivity.start(requireContext(), VipFragment::class.java, Pair("origin", "view_bid")) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cheng/bole/ui/fragment/mine/history/HistoryViewModel.kt b/app/src/main/java/com/cheng/bole/ui/fragment/mine/history/HistoryViewModel.kt new file mode 100644 index 0000000..d8a0438 --- /dev/null +++ b/app/src/main/java/com/cheng/bole/ui/fragment/mine/history/HistoryViewModel.kt @@ -0,0 +1,31 @@ +package com.cheng.bole.ui.fragment.mine.history + +import androidx.collection.ArrayMap +import androidx.lifecycle.MutableLiveData +import com.cheng.bole.bean.BidDetailBean +import com.cheng.bole.bean.UserAuthBean +import com.cheng.bole.net.ApiFactory +import com.cheng.bole.net.model.toListResult +import com.example.base.extensions.toast +import com.example.base.utils.L +import com.example.base.viewmodel.ListViewModel + +class HistoryViewModel: ListViewModel() { + override suspend fun requestApi(params: ArrayMap): Result> { + return ApiFactory.apiService.getViewHistoryList().toListResult() + } + + val authLiveData = MutableLiveData() + + fun checkAuth() { + launchOnUiTryCatch({ + val response = ApiFactory.apiService.checkAuth() + if (response.status) { + authLiveData.postValue(response.data) + } else toast(response.message, true) + }, { + setError(it) + L.d(it) + }) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cheng/bole/ui/fragment/mine/message/MessageAdapter.kt b/app/src/main/java/com/cheng/bole/ui/fragment/mine/message/MessageAdapter.kt new file mode 100644 index 0000000..b0a791c --- /dev/null +++ b/app/src/main/java/com/cheng/bole/ui/fragment/mine/message/MessageAdapter.kt @@ -0,0 +1,27 @@ +package com.cheng.bole.ui.fragment.mine.message + +import android.text.TextUtils +import com.chad.library.adapter.base.viewholder.BaseViewHolder +import com.cheng.bole.R +import com.cheng.bole.bean.SubscriptionMessageBean +import com.cheng.bole.utils.BidTypeUtils +import com.cheng.bole.utils.StringUtils +import com.cheng.bole.widget.CommonShapeView +import com.example.base.ui.list.LoadMoreAdapter +import java.text.DecimalFormat + +class MessageAdapter: LoadMoreAdapter(R.layout.listitem_message) { + override fun convert(holder: BaseViewHolder, item: SubscriptionMessageBean) { + val tvTag = holder.getView(R.id.tv_tag) + tvTag.setBgColor(BidTypeUtils.getTypeColor(item.extra.typeName)) + tvTag.text = BidTypeUtils.getShortName(item.extra.typeName) + + holder.setText(R.id.tv_time, item.create_time) + holder.setText(R.id.tv_title, item.extra.title) + holder.setText(R.id.tv_location, if (TextUtils.isEmpty(item.extra.regionName)) "全国" else item.extra.regionName) + holder.setText(R.id.tv_amount, StringUtils.formatAmount(item.extra.money)) + holder.setText(R.id.tv_rate, DecimalFormat("0.0").format(item.extra.star.toFloat())) + + holder.setGone(R.id.tv_amount, TextUtils.isEmpty(item.extra.money)) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cheng/bole/ui/fragment/mine/message/MessageFragment.kt b/app/src/main/java/com/cheng/bole/ui/fragment/mine/message/MessageFragment.kt new file mode 100644 index 0000000..5602435 --- /dev/null +++ b/app/src/main/java/com/cheng/bole/ui/fragment/mine/message/MessageFragment.kt @@ -0,0 +1,55 @@ +package com.cheng.bole.ui.fragment.mine.message + +import android.graphics.Color +import com.cheng.bole.R +import com.cheng.bole.bean.SubscriptionMessageBean +import com.cheng.bole.databinding.FragmentMessageBinding +import com.cheng.bole.ui.activity.PublicActivity +import com.cheng.bole.ui.fragment.bid.detail.BidDetailFragment +import com.cheng.bole.ui.fragment.mine.vip.VipFragment +import com.example.base.ui.list.ListFragment + +class MessageFragment: ListFragment() { + private var item: SubscriptionMessageBean? = null + + override fun noDataClick() { + } + + override fun bindAdapter() = MessageAdapter() + + override fun initView() { + super.initView() + mTitleBar?.setBackgroundColor(Color.WHITE) + + mEmptyView.setNoDataLogo(R.mipmap.ic_empty_message) + mEmptyView.setNoDataText("暂无消息") + } + + override fun initData() { + super.initData() + firstLoad() + } + + override fun initListener() { + super.initListener() + mAdapter.setOnItemClickListener { _, _, i -> + item = mAdapter.getItem(i) + mViewModel.checkAuth() + } + } + + override fun initObserve() { + super.initObserve() + mViewModel.authLiveData.observe(this) { + if (it.auth) { + PublicActivity.start( + requireContext(), + BidDetailFragment::class.java, + Pair("id", item!!.extra.recommend_id) + ) + } else { + PublicActivity.start(requireContext(), VipFragment::class.java, Pair("origin", "view_bid")) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cheng/bole/ui/fragment/mine/message/MessageViewModel.kt b/app/src/main/java/com/cheng/bole/ui/fragment/mine/message/MessageViewModel.kt new file mode 100644 index 0000000..a24fc90 --- /dev/null +++ b/app/src/main/java/com/cheng/bole/ui/fragment/mine/message/MessageViewModel.kt @@ -0,0 +1,31 @@ +package com.cheng.bole.ui.fragment.mine.message + +import androidx.collection.ArrayMap +import androidx.lifecycle.MutableLiveData +import com.cheng.bole.bean.SubscriptionMessageBean +import com.cheng.bole.bean.UserAuthBean +import com.cheng.bole.net.ApiFactory +import com.cheng.bole.net.model.toListResult +import com.example.base.extensions.toast +import com.example.base.utils.L +import com.example.base.viewmodel.ListViewModel + +class MessageViewModel: ListViewModel() { + override suspend fun requestApi(params: ArrayMap): Result> { + return ApiFactory.apiService.getSubscriptionMessage(params).toListResult() + } + + val authLiveData = MutableLiveData() + + fun checkAuth() { + launchOnUiTryCatch({ + val response = ApiFactory.apiService.checkAuth() + if (response.status) { + authLiveData.postValue(response.data) + } else toast(response.message, true) + }, { + setError(it) + L.d(it) + }) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cheng/bole/ui/fragment/mine/order/OrderFragment.kt b/app/src/main/java/com/cheng/bole/ui/fragment/mine/order/OrderFragment.kt new file mode 100644 index 0000000..80ec61a --- /dev/null +++ b/app/src/main/java/com/cheng/bole/ui/fragment/mine/order/OrderFragment.kt @@ -0,0 +1,56 @@ +package com.cheng.bole.ui.fragment.mine.order + +import android.graphics.Color +import android.graphics.Typeface +import android.widget.TextView +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentStatePagerAdapter +import com.angcyo.tablayout.delegate.ViewPager1Delegate +import com.cheng.bole.R +import com.cheng.bole.common.Constants +import com.cheng.bole.databinding.FragmentOrderBinding +import com.cheng.bole.ui.base.BasePageAdapter +import com.cheng.bole.ui.fragment.mine.order.list.OrderListFragment +import com.example.base.ui.BaseFragment + +class OrderFragment: BaseFragment() { + private val tabText = listOf("全部", "待支付", "已支付") + private val fragmentList by lazy { mutableListOf() } + private val pageAdapter by lazy { + BasePageAdapter( + childFragmentManager, + tabText, + fragmentList, + FragmentStatePagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT + ) + } + + override fun initView() { + super.initView() + mTitleBar?.background = null + + initFragment() + binding.viewPager.adapter = pageAdapter + binding.viewPager.offscreenPageLimit = fragmentList.size + binding.tabLayout.setupViewPager(ViewPager1Delegate.install(binding.viewPager, binding.tabLayout)) + } + + private fun initFragment() { + fragmentList.add(OrderListFragment.newInstance("")) + fragmentList.add(OrderListFragment.newInstance("1")) + fragmentList.add(OrderListFragment.newInstance("2")) + } + + override fun initListener() { + super.initListener() + binding.tabLayout.observeIndexChange { fromIndex, toIndex, _, _ -> + binding.viewPager.currentItem = toIndex + if (fromIndex != -1) { + (binding.tabLayout.getChildAt(fromIndex) as TextView).typeface = Typeface.DEFAULT + (binding.tabLayout.getChildAt(fromIndex) as TextView).setBackgroundResource(R.drawable.shape_push_bid_type_default) + } + (binding.tabLayout.getChildAt(toIndex) as TextView).typeface = Constants.douyinsansB + (binding.tabLayout.getChildAt(toIndex) as TextView).setBackgroundResource(R.drawable.shape_push_bid_type_checked) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cheng/bole/ui/fragment/mine/order/OrderViewModel.kt b/app/src/main/java/com/cheng/bole/ui/fragment/mine/order/OrderViewModel.kt new file mode 100644 index 0000000..bda6007 --- /dev/null +++ b/app/src/main/java/com/cheng/bole/ui/fragment/mine/order/OrderViewModel.kt @@ -0,0 +1,6 @@ +package com.cheng.bole.ui.fragment.mine.order + +import com.example.base.viewmodel.BaseViewModel + +class OrderViewModel: BaseViewModel() { +} \ No newline at end of file diff --git a/app/src/main/java/com/cheng/bole/ui/fragment/mine/order/cert/CertificateFragment.kt b/app/src/main/java/com/cheng/bole/ui/fragment/mine/order/cert/CertificateFragment.kt new file mode 100644 index 0000000..a22398a --- /dev/null +++ b/app/src/main/java/com/cheng/bole/ui/fragment/mine/order/cert/CertificateFragment.kt @@ -0,0 +1,130 @@ +package com.cheng.bole.ui.fragment.mine.order.cert + +import android.annotation.SuppressLint +import android.text.TextUtils +import androidx.activity.result.contract.ActivityResultContracts +import coil.load +import coil.transform.RoundedCornersTransformation +import com.cheng.bole.bean.OrderBean +import com.cheng.bole.databinding.FragmentCertificateBinding +import com.cheng.bole.event.OrderEvent +import com.cheng.bole.ui.activity.PublicActivity +import com.cheng.bole.ui.fragment.photo.PhotoViewFragment +import com.cheng.bole.utils.FileProviderUtils +import com.cheng.bole.utils.PermissionUtils +import com.example.base.common.RxBus +import com.example.base.extensions.gone +import com.example.base.extensions.onClick +import com.example.base.extensions.toast +import com.example.base.extensions.visible +import com.example.base.ui.BaseFragment +import com.example.base.utils.ClipboardUtils +import com.example.base.utils.DensityUtils +import com.google.gson.Gson +import com.google.gson.JsonObject +import okhttp3.RequestBody.Companion.toRequestBody +import java.text.DecimalFormat + +class CertificateFragment: BaseFragment() { + private val orderId by lazy { arguments?.getString("orderId") ?: "" } + + private var orderInfo: OrderBean? = null + private var transInfo: OrderBean.TransInfo? = null + + private var imagePath: String? = null + + private val imageLauncher = registerForActivityResult(ActivityResultContracts.GetContent()) { + it?.let { + imagePath = FileProviderUtils.getFileAbsolutePath(requireContext(), it) + if (!TextUtils.isEmpty(imagePath)) { + binding.ivImage.load(imagePath) { + transformations(RoundedCornersTransformation(DensityUtils.dp2px(8f).toFloat())) + } + binding.ivAddImage.gone() + binding.ivDeleteImage.visible() + } + } + } + + override fun initView() { + super.initView() + } + + override fun initData() { + super.initData() + mViewModel.getOrderInfo(orderId) + } + + override fun initListener() { + super.initListener() + binding.btnCopy.onClick { + ClipboardUtils.copyText(orderInfo!!.pay_params) + toast("复制成功") + } + + binding.ivImage.onClick { + if (!TextUtils.isEmpty(imagePath)) { + PublicActivity.start(requireContext(), PhotoViewFragment::class.java, Pair("photos", listOf(imagePath))) + } + } + binding.ivAddImage.onClick { + if (TextUtils.isEmpty(imagePath)) { + PermissionUtils.checkPhotoPermission(requireActivity(), childFragmentManager) { isGranted -> + if (isGranted) { + imageLauncher.launch("image/*") + } + } + } + } + binding.ivDeleteImage.onClick { + imagePath = null + binding.ivImage.load("") + binding.ivAddImage.visible() + binding.ivDeleteImage.gone() + } + + binding.btnNext.onClick { + if (TextUtils.isEmpty(imagePath)) { + toast("请上传凭证") + return@onClick + } + mViewModel.uploadImg(requireContext(), imagePath!!) + } + } + + override fun initObserve() { + super.initObserve() + mViewModel.orderLiveData.observe(this) { + orderInfo = it + if (!TextUtils.isEmpty(it.pay_params)) { + transInfo = Gson().fromJson(it.pay_params, OrderBean.TransInfo::class.java) + setTransInfo() + } + } + + mViewModel.imageLiveData.observe(this) { + val jsonObject = JsonObject() + jsonObject.addProperty("order_id", orderId) + jsonObject.addProperty("bank_bill_url", it.url) + mViewModel.updateOrder(jsonObject.toString().toRequestBody()) + } + + mViewModel.updateLiveData.observe(this) { + toast("提交成功") + RxBus.defaultInstance.post(OrderEvent()) + requireActivity().finish() + } + } + + @SuppressLint("SetTextI18n") + private fun setTransInfo() { + if (transInfo != null) { + binding.tvAccountName.text = transInfo!!.accountName + binding.tvAccountNo.text = transInfo!!.accountNo + binding.tvBankName.text = transInfo!!.bankName + binding.tvBankNo.text = transInfo!!.bankNo + binding.tvCode.text = orderInfo!!.id + binding.tvAmount.text = "¥${DecimalFormat("0.00").format(orderInfo!!.total_fee.toFloat())}" + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cheng/bole/ui/fragment/mine/order/cert/CertificateViewModel.kt b/app/src/main/java/com/cheng/bole/ui/fragment/mine/order/cert/CertificateViewModel.kt new file mode 100644 index 0000000..08617fa --- /dev/null +++ b/app/src/main/java/com/cheng/bole/ui/fragment/mine/order/cert/CertificateViewModel.kt @@ -0,0 +1,68 @@ +package com.cheng.bole.ui.fragment.mine.order.cert + +import android.content.Context +import androidx.lifecycle.MutableLiveData +import com.cheng.bole.bean.OrderBean +import com.cheng.bole.bean.UploadFileEntity +import com.cheng.bole.net.ApiFactory +import com.cheng.bole.utils.BitmapUtils +import com.example.base.extensions.toast +import com.example.base.utils.L +import com.example.base.viewmodel.BaseViewModel +import okhttp3.MediaType.Companion.toMediaTypeOrNull +import okhttp3.MultipartBody +import okhttp3.RequestBody + +class CertificateViewModel : BaseViewModel() { + val orderLiveData = MutableLiveData() + val updateLiveData = MutableLiveData() + val imageLiveData = MutableLiveData() + + fun getOrderInfo(orderId: String) { + showDialog() + launchOnUiTryCatch({ + val response = ApiFactory.apiService.getOrderInfo(orderId) + if (response.status) { + orderLiveData.postValue(response.data) + } else toast(response.message, true) + dismissDialog() + }, { + dismissDialog() + setError(it) + L.d(it) + }) + } + + fun updateOrder(requestBody: RequestBody) { + showDialog() + launchOnUiTryCatch({ + val response = ApiFactory.apiService.updateOrder(requestBody) + if (response.status) { + updateLiveData.postValue(Any()) + } else toast(response.message, true) + dismissDialog() + }, { + dismissDialog() + setError(it) + L.d(it) + }) + } + + fun uploadImg(context: Context, path: String) { + showDialog() + BitmapUtils.compressImg(context, path) { + launchOnUiTryCatch({ + val requestFile = RequestBody.create("multipart/form-data".toMediaTypeOrNull(), it) + val filePart = MultipartBody.Part.createFormData("file", it.getName(), requestFile) + val response = ApiFactory.apiService.upload(filePart, "certificate") + if (response.status) { + imageLiveData.postValue(response.data) + } else toast(response.message, true) + dismissDialog() + }, { + dismissDialog() + L.d(it) + }) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cheng/bole/ui/fragment/mine/order/invoice/InvoiceFragment.kt b/app/src/main/java/com/cheng/bole/ui/fragment/mine/order/invoice/InvoiceFragment.kt new file mode 100644 index 0000000..4be2cab --- /dev/null +++ b/app/src/main/java/com/cheng/bole/ui/fragment/mine/order/invoice/InvoiceFragment.kt @@ -0,0 +1,201 @@ +package com.cheng.bole.ui.fragment.mine.order.invoice + +import android.graphics.Color +import android.os.Build +import android.text.TextUtils +import com.cheng.bole.R +import com.cheng.bole.bean.OrderBean +import com.cheng.bole.databinding.FragmentInvoiceBinding +import com.cheng.bole.event.OrderEvent +import com.example.base.common.RxBus +import com.example.base.extensions.gone +import com.example.base.extensions.onClick +import com.example.base.extensions.toast +import com.example.base.extensions.visible +import com.example.base.ui.BaseFragment +import com.google.gson.JsonObject +import okhttp3.RequestBody.Companion.toRequestBody +import java.text.DecimalFormat + +class InvoiceFragment : BaseFragment() { + private var userType = 0 // 0 企业 1 个人 + private var invoiceType = 0 // 0 普票 1 专票 + + private var orderInfo: OrderBean? = null + + override fun initView() { + super.initView() + mTitleBar?.setBackgroundColor(Color.WHITE) + setStyle() + } + + override fun initData() { + super.initData() + orderInfo = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + arguments?.getSerializable("item", OrderBean::class.java) + } else { + arguments?.getSerializable("item") as? OrderBean + } + + binding.tvAmount.text = DecimalFormat("0.00").format(orderInfo!!.total_fee.toFloat()) + } + + override fun initListener() { + super.initListener() + binding.rgTitleType.setOnCheckedChangeListener { _, checkedId -> + when(checkedId) { + R.id.rb_title1 -> { + userType = 0 + setStyle() + } + R.id.rb_title2 -> { + userType = 1 + setStyle() + } + } + } + + binding.rgType.setOnCheckedChangeListener { _, checkedId -> + when(checkedId) { + R.id.rb1 -> { + invoiceType = 0 + setStyle() + } + R.id.rb2 -> { + invoiceType = 1 + setStyle() + } + } + } + + binding.tv1.onClick { + binding.rb1.isChecked = true + } + + binding.tv2.onClick { + binding.rb2.isChecked = true + } + + binding.btnNext.onClick { + commit() + } + } + + override fun initObserve() { + super.initObserve() + mViewModel.updateLiveData.observe(this) { + toast("提交成功") + RxBus.defaultInstance.post(OrderEvent()) + requireActivity().finish() + } + } + + private fun setStyle() { + if (userType == 0) { + binding.layoutType.visible() + binding.layoutEnterpriseName.visible() + binding.layoutEnterpriseCode.visible() + binding.layoutUsername.gone() + binding.layoutIdCard.gone() + if (invoiceType == 0) { + binding.layoutEnterpriseAddress.gone() + binding.layoutEnterprisePhone.gone() + binding.layoutBankName.gone() + binding.layoutBankNo.gone() + } else { + binding.layoutEnterpriseAddress.visible() + binding.layoutEnterprisePhone.visible() + binding.layoutBankName.visible() + binding.layoutBankNo.visible() + } + } else { + binding.layoutUsername.visible() + binding.layoutIdCard.visible() + + binding.layoutType.gone() + binding.layoutEnterpriseName.gone() + binding.layoutEnterpriseCode.gone() + binding.layoutEnterpriseAddress.gone() + binding.layoutEnterprisePhone.gone() + binding.layoutBankName.gone() + binding.layoutBankNo.gone() + } + } + + private fun commit() { + val enterpriseName = binding.etEnterpriseName.text.toString().trim() + val enterpriseCode = binding.etEnterpriseCode.toString().trim() + val enterpriseAddress = binding.etEnterpriseAddress.text.toString().trim() + val enterprisePhone = binding.etEnterprisePhone.text.toString().trim() + val bankName = binding.etBankName.text.toString().trim() + val bankNo = binding.etBankNo.text.toString().trim() + + val username = binding.etUsername.text.toString().trim() + val idCard = binding.etIdCard.text.toString().trim() + + val email = binding.etEmail.text.toString().trim() + + if (userType == 0) { + if (TextUtils.isEmpty(enterpriseName)) { + toast("请输入企业名称") + return + } + if (TextUtils.isEmpty(enterpriseCode)) { + toast("请输入纳税人识别号") + return + } + if (invoiceType == 1) { + if (TextUtils.isEmpty(enterpriseAddress)) { + toast("请输入详细地址") + return + } + if (TextUtils.isEmpty(enterprisePhone)) { + toast("请输入电话号码") + return + } + if (TextUtils.isEmpty(bankName)) { + toast("请输入开户行") + return + } + if (TextUtils.isEmpty(bankNo)) { + toast("请输入开户行账户") + return + } + } + } else { + if (TextUtils.isEmpty(username)) { + toast("请输入您的姓名") + return + } + if (TextUtils.isEmpty(idCard)) { + toast("请输入您的身份证号码") + return + } + } + if (TextUtils.isEmpty(email)) { + toast("请输入邮箱地址") + return + } + val jsonObject = JsonObject() + jsonObject.addProperty("order_id", orderInfo!!.id) + jsonObject.addProperty("invoice_status", "2") + val paramsObj = JsonObject() + paramsObj.addProperty("email", email) + if (userType == 0) { + paramsObj.addProperty("name", enterpriseName) + paramsObj.addProperty("tax_no", enterpriseCode) + paramsObj.addProperty("invoice_type", if (invoiceType == 0) "普票" else "专票") + if (invoiceType == 1) { + paramsObj.addProperty("address", enterpriseAddress) + paramsObj.addProperty("phone", enterprisePhone) + paramsObj.addProperty("bank", bankName) + paramsObj.addProperty("bank_number", bankNo) + } + } else { + paramsObj.addProperty("name", username) + paramsObj.addProperty("tax_no", idCard) + } + jsonObject.add("invoice_params", paramsObj) + mViewModel.updateOrder(jsonObject.toString().toRequestBody()) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cheng/bole/ui/fragment/mine/order/invoice/InvoiceViewModel.kt b/app/src/main/java/com/cheng/bole/ui/fragment/mine/order/invoice/InvoiceViewModel.kt new file mode 100644 index 0000000..00aa5a1 --- /dev/null +++ b/app/src/main/java/com/cheng/bole/ui/fragment/mine/order/invoice/InvoiceViewModel.kt @@ -0,0 +1,27 @@ +package com.cheng.bole.ui.fragment.mine.order.invoice + +import androidx.lifecycle.MutableLiveData +import com.cheng.bole.net.ApiFactory +import com.example.base.extensions.toast +import com.example.base.utils.L +import com.example.base.viewmodel.BaseViewModel +import okhttp3.RequestBody + +class InvoiceViewModel: BaseViewModel() { + val updateLiveData = MutableLiveData() + + fun updateOrder(requestBody: RequestBody) { + showDialog() + launchOnUiTryCatch({ + val response = ApiFactory.apiService.updateOrder(requestBody) + if (response.status) { + updateLiveData.postValue(Any()) + } else toast(response.message, true) + dismissDialog() + }, { + dismissDialog() + setError(it) + L.d(it) + }) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cheng/bole/ui/fragment/mine/order/list/OrderAdapter.kt b/app/src/main/java/com/cheng/bole/ui/fragment/mine/order/list/OrderAdapter.kt new file mode 100644 index 0000000..a96450c --- /dev/null +++ b/app/src/main/java/com/cheng/bole/ui/fragment/mine/order/list/OrderAdapter.kt @@ -0,0 +1,79 @@ +package com.cheng.bole.ui.fragment.mine.order.list + +import android.graphics.Color +import android.text.TextUtils +import com.chad.library.adapter.base.BaseQuickAdapter +import com.chad.library.adapter.base.viewholder.BaseViewHolder +import com.cheng.bole.R +import com.cheng.bole.bean.OrderBean +import com.cheng.bole.widget.CommonShapeView +import java.text.DecimalFormat + +class OrderAdapter : BaseQuickAdapter(R.layout.listitem_order) { + + init { + addChildClickViewIds(R.id.btn_invoice, R.id.btn_certificate) + } + + override fun convert(holder: BaseViewHolder, item: OrderBean) { + holder.setText(R.id.tv_name, item.goods_name) + holder.setText(R.id.tv_order_no, item.out_trade_no) + holder.setText( + R.id.tv_pay_type, + when (item.pay_type) { + "weixin" -> "微信支付" + "alipay" -> "支付宝支付" + "apple" -> "苹果支付" + "bank" -> "对公转账" + else -> "未知" + } + ) + holder.setText(R.id.tv_amount, "¥${DecimalFormat("0.00").format(item.total_fee.toFloat())}") + holder.setText(R.id.tv_create_time, item.create_time) + holder.setText(R.id.tv_pay_time, item.pay_time) + + holder.setGone(R.id.tv_pay_time_title, TextUtils.isEmpty(item.pay_time)) + holder.setGone(R.id.tv_pay_time, TextUtils.isEmpty(item.pay_time)) + + val status = holder.getView(R.id.tv_status) + holder.setGone(R.id.btn_invoice, true) + holder.setGone(R.id.btn_certificate, true) + when (item.status) { + "1" -> { + status.text = "待支付" + status.setTextColor(Color.parseColor("#FF4C4C")) + status.setBgColor(Color.parseColor("#FFEDED")) + if (item.pay_type == "bank") { + holder.setVisible(R.id.btn_certificate, true) + } + } + + "2" -> { + status.text = "已支付" + status.setTextColor(Color.parseColor("#2090FE")) + status.setBgColor(Color.parseColor("#E8F3FE")) + if (item.invoice_status == "1") { + holder.setVisible(R.id.btn_invoice, true) + } + } + + "3" -> { + status.text = "已退款" + status.setTextColor(Color.parseColor("#CCCCCC")) + status.setBgColor(Color.parseColor("#EEEEEE")) + } + + "4" -> { + status.text = "已取消" + status.setTextColor(Color.parseColor("#CCCCCC")) + status.setBgColor(Color.parseColor("#EEEEEE")) + } + + "5" -> { + status.text = "待审核" + status.setTextColor(Color.parseColor("#FF9B2F")) + status.setBgColor(Color.parseColor("#1AFF9B2F")) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cheng/bole/ui/fragment/mine/order/list/OrderListFragment.kt b/app/src/main/java/com/cheng/bole/ui/fragment/mine/order/list/OrderListFragment.kt new file mode 100644 index 0000000..cfcadca --- /dev/null +++ b/app/src/main/java/com/cheng/bole/ui/fragment/mine/order/list/OrderListFragment.kt @@ -0,0 +1,82 @@ +package com.cheng.bole.ui.fragment.mine.order.list + +import android.os.Bundle +import com.cheng.bole.R +import com.cheng.bole.databinding.FragmentOrderListBinding +import com.cheng.bole.event.OrderEvent +import com.cheng.bole.ui.activity.PublicActivity +import com.cheng.bole.ui.fragment.mine.order.cert.CertificateFragment +import com.cheng.bole.ui.fragment.mine.order.invoice.InvoiceFragment +import com.example.base.common.RxBus +import com.example.base.ui.BaseFragment +import com.example.base.widget.EmptyView +import com.example.base.widget.PageStatus + +class OrderListFragment : BaseFragment() { + private val status by lazy { arguments?.getString("status") ?: "" } + + private val mAdapter by lazy { OrderAdapter() } + private val mEmptyView by lazy { EmptyView(requireContext()) } + + companion object { + fun newInstance(status: String): OrderListFragment { + val args = Bundle() + args.putString("status", status) + val fragment = OrderListFragment() + fragment.arguments = args + return fragment + } + } + + override fun initView() { + super.initView() + + binding.mRecyclerView.adapter = mAdapter + mEmptyView.setNoDataLogo(R.mipmap.ic_empty_order) + mEmptyView.setNoDataText("暂无订单") + mAdapter.setEmptyView(mEmptyView) + } + + override fun initData() { + super.initData() + mViewModel.getOrderList(status) + } + + override fun initListener() { + super.initListener() + binding.mRefreshLayout.setOnRefreshListener { + mViewModel.getOrderList(status) + } + + mAdapter.setOnItemChildClickListener { _, view, i -> + val item = mAdapter.getItem(i) + when (view.id) { + R.id.btn_invoice -> { + PublicActivity.start(requireContext(), InvoiceFragment::class.java, Pair("item", item)) + } + + R.id.btn_certificate -> { + PublicActivity.start(requireContext(), CertificateFragment::class.java, Pair("orderId", item.id)) + } + } + } + } + + override fun initObserve() { + super.initObserve() + mViewModel.orderLiveData.observe(this) { + mAdapter.setList(it) + if (it.isNotEmpty()) { + mEmptyView.setStatus(PageStatus.GONG) + } else { + mEmptyView.setStatus(PageStatus.NO_DATA) + } + binding.mRefreshLayout.finishRefresh() + } + + val orderEvent = RxBus.defaultInstance.toObservable(OrderEvent::class.java).subscribe { + binding.mRefreshLayout.autoRefresh() + } + addDisposable(orderEvent) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cheng/bole/ui/fragment/mine/order/list/OrderListViewModel.kt b/app/src/main/java/com/cheng/bole/ui/fragment/mine/order/list/OrderListViewModel.kt new file mode 100644 index 0000000..d3e1f6f --- /dev/null +++ b/app/src/main/java/com/cheng/bole/ui/fragment/mine/order/list/OrderListViewModel.kt @@ -0,0 +1,27 @@ +package com.cheng.bole.ui.fragment.mine.order.list + +import androidx.lifecycle.MutableLiveData +import com.cheng.bole.bean.OrderBean +import com.cheng.bole.net.ApiFactory +import com.example.base.extensions.toast +import com.example.base.utils.L +import com.example.base.viewmodel.BaseViewModel + +class OrderListViewModel : BaseViewModel() { + val orderLiveData = MutableLiveData>() + + fun getOrderList(status: String) { + showDialog() + launchOnUiTryCatch({ + val response = ApiFactory.apiService.getOrderList(status) + if (response.status) { + orderLiveData.postValue(response.data) + } else toast(response.message, true) + dismissDialog() + }, { + dismissDialog() + setError(it) + L.d(it) + }) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cheng/bole/ui/fragment/mine/seat/SeatManageAdapter.kt b/app/src/main/java/com/cheng/bole/ui/fragment/mine/seat/SeatManageAdapter.kt new file mode 100644 index 0000000..366f48d --- /dev/null +++ b/app/src/main/java/com/cheng/bole/ui/fragment/mine/seat/SeatManageAdapter.kt @@ -0,0 +1,29 @@ +package com.cheng.bole.ui.fragment.mine.seat + +import android.text.TextUtils +import android.widget.ImageView +import coil.load +import coil.transform.CircleCropTransformation +import com.chad.library.adapter.base.BaseQuickAdapter +import com.chad.library.adapter.base.viewholder.BaseViewHolder +import com.cheng.bole.R +import com.cheng.bole.bean.SeatItemBean + +class SeatManageAdapter: BaseQuickAdapter(R.layout.listitem_seat_manage) { + + init { + addChildClickViewIds(R.id.btn_delete) + } + + override fun convert(holder: BaseViewHolder, item: SeatItemBean) { + holder.getView(R.id.iv_avatar).load(item.avatar) { + transformations(CircleCropTransformation()) + } + holder.setText(R.id.tv_name, item.user_name) + if (!TextUtils.isEmpty(item.phone)) { + holder.setText(R.id.tv_phone, item.phone.replaceRange(3, 7, "****")) + } else { + holder.setText(R.id.tv_phone, "") + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cheng/bole/ui/fragment/mine/seat/SeatManageFragment.kt b/app/src/main/java/com/cheng/bole/ui/fragment/mine/seat/SeatManageFragment.kt new file mode 100644 index 0000000..09f55a7 --- /dev/null +++ b/app/src/main/java/com/cheng/bole/ui/fragment/mine/seat/SeatManageFragment.kt @@ -0,0 +1,143 @@ +package com.cheng.bole.ui.fragment.mine.seat + +import android.annotation.SuppressLint +import com.cheng.bole.R +import com.cheng.bole.bean.CorpInfoBean +import com.cheng.bole.databinding.FragmentSeatManageBinding +import com.cheng.bole.event.PaySuccessEvent +import com.cheng.bole.manager.DialogEnum +import com.cheng.bole.ui.dialog.BuySeatDialog +import com.cheng.bole.ui.dialog.SeatAuthDialog +import com.cheng.bole.ui.dialog.TipDialog +import com.example.base.common.RxBus +import com.example.base.extensions.onClick +import com.example.base.extensions.toast +import com.example.base.ui.BaseFragment +import com.example.base.widget.EmptyView +import com.example.base.widget.PageStatus +import com.google.gson.JsonObject +import okhttp3.RequestBody.Companion.toRequestBody + +class SeatManageFragment: BaseFragment() { + private val mEmptyView by lazy { EmptyView(requireContext()) } + private val mAdapter by lazy { SeatManageAdapter() } + + private var corpInfo: CorpInfoBean? = null + + private var seatDialog: BuySeatDialog? = null + private var dismissDialog = false + + override fun initView() { + super.initView() + mTitleBar?.background = null + + binding.mRecyclerView.adapter = mAdapter + mEmptyView.setNoDataText("暂无数据") + mEmptyView.setNoDataLogo(R.mipmap.ic_empty_seat) + mAdapter.setEmptyView(mEmptyView) + } + + override fun initData() { + super.initData() + mViewModel.getCorpInfo() + } + + override fun initListener() { + super.initListener() + binding.tvAdd.onClick { + mViewModel.getGoodsList() + } + + binding.btnNext.onClick { + if (corpInfo!!.sub_user_limit > corpInfo!!.bind_count) { + showSeatAuthDialog() + } else { + mViewModel.getGoodsList() + } + } + + mAdapter.setOnItemChildClickListener { _, view, i -> + val item = mAdapter.getItem(i) + when(view.id) { + R.id.btn_delete -> { + val f = TipDialog.newInstance("解除席位授权", "是否解除尾号${item.phone.substring(7)}的用户席位?") + f.setOnSelectListener { + if (it == DialogEnum.CLICK_OK) { + mViewModel.deleteSeat(item.id) + } + } + f.show(childFragmentManager, TipDialog::class.java.simpleName) + } + } + + } + } + + @SuppressLint("SetTextI18n") + override fun initObserve() { + super.initObserve() + mViewModel.corpInfoLiveData.observe(this) { + corpInfo = it + mViewModel.getSeatList() + } + + mViewModel.seatListLiveData.observe(this) { + mAdapter.setList(it) + binding.tvCount.text = "当前席位(${it.size}/${corpInfo!!.sub_user_limit})" + if (it.isNotEmpty()) { + mEmptyView.setStatus(PageStatus.GONG) + } else { + mEmptyView.setStatus(PageStatus.NO_DATA) + } + } + + mViewModel.addLiveData.observe(this) { + toast("授权成功") + mViewModel.getSeatList() + } + + mViewModel.deleteLiveData.observe(this) { + toast("解除成功") + mViewModel.getSeatList() + } + + mViewModel.goodsLiveData.observe(this) { + if (it.isNotEmpty()) { + seatDialog = BuySeatDialog.newInstance(it[0]) + seatDialog!!.show(childFragmentManager, "") + } else { + toast("获取商品失败,请稍后再试") + } + } + + val paySuccessEvent = RxBus.defaultInstance.toObservable(PaySuccessEvent::class.java).subscribe { + dismissDialog = true + if (!isStateSaved) dismissSeatDialog() + mViewModel.getCorpInfo() + } + addDisposable(paySuccessEvent) + } + + private fun showSeatAuthDialog() { + val f = SeatAuthDialog.newInstance() + f.setOnSelectListener { phone -> + val jsonObject = JsonObject() + jsonObject.addProperty("phone", phone) + mViewModel.addSeat(jsonObject.toString().toRequestBody()) + } + f.show(childFragmentManager, "") + } + + private fun dismissSeatDialog() { + if (dismissDialog) { + seatDialog?.dismiss() + seatDialog = null + dismissDialog = false + } + } + + override fun onResume() { + super.onResume() + dismissSeatDialog() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cheng/bole/ui/fragment/mine/seat/SeatManageViewModel.kt b/app/src/main/java/com/cheng/bole/ui/fragment/mine/seat/SeatManageViewModel.kt new file mode 100644 index 0000000..600bd3a --- /dev/null +++ b/app/src/main/java/com/cheng/bole/ui/fragment/mine/seat/SeatManageViewModel.kt @@ -0,0 +1,94 @@ +package com.cheng.bole.ui.fragment.mine.seat + +import androidx.lifecycle.MutableLiveData +import com.cheng.bole.bean.CorpInfoBean +import com.cheng.bole.bean.SeatItemBean +import com.cheng.bole.bean.VipGoodsEntity +import com.cheng.bole.net.ApiFactory +import com.example.base.extensions.toast +import com.example.base.utils.L +import com.example.base.viewmodel.BaseViewModel +import okhttp3.RequestBody + +class SeatManageViewModel: BaseViewModel() { + val goodsLiveData = MutableLiveData>() + val corpInfoLiveData = MutableLiveData() + val seatListLiveData = MutableLiveData>() + val addLiveData = MutableLiveData() + val deleteLiveData = MutableLiveData() + + fun getGoodsList() { + showDialog() + launchOnUiTryCatch({ + val response = ApiFactory.apiService.getGoodsList("corp_add") + if (response.status) { + goodsLiveData.postValue(response.data) + } else toast(response.message, true) + dismissDialog() + }, { + dismissDialog() + setError(it) + L.d(it) + }) + } + + fun getCorpInfo() { + showDialog() + launchOnUiTryCatch({ + val response = ApiFactory.apiService.getSeatInfo() + if (response.status) { + corpInfoLiveData.postValue(response.data) + } else toast(response.message, true) + dismissDialog() + }, { + dismissDialog() + setError(it) + L.d(it) + }) + } + + fun getSeatList() { + showDialog() + launchOnUiTryCatch({ + val response = ApiFactory.apiService.getSeatList() + if (response.status) { + seatListLiveData.postValue(response.data.items) + } else toast(response.message, true) + dismissDialog() + }, { + dismissDialog() + setError(it) + L.d(it) + }) + } + + fun addSeat(requestBody: RequestBody) { + showDialog() + launchOnUiTryCatch({ + val response = ApiFactory.apiService.addSeat(requestBody) + if (response.status) { + addLiveData.postValue(Any()) + } else toast(response.message, true) + dismissDialog() + }, { + dismissDialog() + setError(it) + L.d(it) + }) + } + + fun deleteSeat(id: String) { + showDialog() + launchOnUiTryCatch({ + val response = ApiFactory.apiService.deleteSeat(id) + if (response.status) { + deleteLiveData.postValue(Any()) + } else toast(response.message, true) + dismissDialog() + }, { + dismissDialog() + setError(it) + L.d(it) + }) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cheng/bole/ui/fragment/mine/settings/SettingsFragment.kt b/app/src/main/java/com/cheng/bole/ui/fragment/mine/settings/SettingsFragment.kt index eb19c07..001a8fd 100644 --- a/app/src/main/java/com/cheng/bole/ui/fragment/mine/settings/SettingsFragment.kt +++ b/app/src/main/java/com/cheng/bole/ui/fragment/mine/settings/SettingsFragment.kt @@ -16,13 +16,16 @@ import com.cheng.bole.ui.dialog.TipDialog import com.cheng.bole.ui.fragment.mine.about.AboutFragment import com.cheng.bole.ui.fragment.mine.account.AccountManageFragment import com.cheng.bole.ui.fragment.mine.account.BindAccountFragment +import com.cheng.bole.utils.AppUpdateUtils import com.cheng.bole.utils.DataCacheUtils +import com.cheng.bole.utils.FileUtils import com.example.base.common.RxBus import com.example.base.extensions.gone import com.example.base.extensions.onClick import com.example.base.extensions.toast import com.example.base.extensions.visible import com.example.base.ui.BaseFragment +import com.example.base.utils.AppUtils import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext @@ -52,11 +55,16 @@ class SettingsFragment : BaseFragment() { } else if (payType == 1) { PayUtils.toAliPay(requireActivity(), it.payParam, "") } else { -// PublicActivity.start(requireContext(), CertificateFragment::class.java, Pair("orderId", orderEntity!!.orderId)) + PublicActivity.start(requireContext(), CertificateFragment::class.java, Pair("orderId", orderEntity!!.orderId)) } } diff --git a/app/src/main/java/com/cheng/bole/utils/AppUpdateUtils.kt b/app/src/main/java/com/cheng/bole/utils/AppUpdateUtils.kt new file mode 100644 index 0000000..7a1d359 --- /dev/null +++ b/app/src/main/java/com/cheng/bole/utils/AppUpdateUtils.kt @@ -0,0 +1,40 @@ +package com.cheng.bole.utils + +import androidx.fragment.app.Fragment +import com.cheng.bole.BuildConfig +import com.cheng.bole.R +import com.cheng.bole.bean.VersionEntity +import com.cheng.bole.manager.UserConfigManager +import com.cheng.bole.ui.dialog.UpdateVersionDialog +import com.example.base.extensions.toast + +object AppUpdateUtils { + + fun checkUpdate(fragment: Fragment, isManual: Boolean, clickFun: () -> Unit?) { + + if (isManual) { + toast(fragment.getString(R.string.check_version_ing)) + } + + val result: VersionEntity? = UserConfigManager.userConfig?.config?.versionEntity + result?.apply { + if (UIUtils.checkVersion(version, BuildConfig.VERSION_NAME)) { + if (last_version_force == BuildConfig.VERSION_NAME) { + force = true + } else if (UIUtils.checkVersion(last_version_force, BuildConfig.VERSION_NAME)) { + force = true + } + clickFun.invoke() + startUpdate(result, fragment) + } else { + if (isManual) { + toast(fragment.getString(R.string.curr_new_version)) + } + } + } + } + + private fun startUpdate(versionEntity: VersionEntity, fragment: Fragment) { + UpdateVersionDialog.newInstance(versionEntity).show(fragment.childFragmentManager, null) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cheng/bole/utils/StringUtils.kt b/app/src/main/java/com/cheng/bole/utils/StringUtils.kt index 8421c57..eb0a664 100644 --- a/app/src/main/java/com/cheng/bole/utils/StringUtils.kt +++ b/app/src/main/java/com/cheng/bole/utils/StringUtils.kt @@ -4,6 +4,7 @@ import android.text.TextUtils import com.example.base.utils.SpanUtils import java.security.MessageDigest import java.security.NoSuchAlgorithmException +import java.text.DecimalFormat import java.text.ParseException import java.text.SimpleDateFormat import java.util.Calendar @@ -470,6 +471,29 @@ object StringUtils { return spanUtils.create() } + /** + * 格式化金额 + * + * @param str 金额字符串 + */ + fun formatAmount(str: String): String { + if (!isNumeric(str)) return str + try { + val formatter = DecimalFormat("0.00") + val amount = str.toFloat() + if (amount > 100000000) { + return "${formatter.format(amount / 100000000)}亿元" + } else if (amount > 10000) { + return "${formatter.format(amount / 10000)}万元" + } else { + return "${formatter.format(amount)}元" + } + } catch (e: Exception) { + e.printStackTrace() + } + return str + } + /** * 将字符串中的unicode字符转换为中文字符 */ diff --git a/app/src/main/java/com/cheng/bole/utils/UrlHelper.kt b/app/src/main/java/com/cheng/bole/utils/UrlHelper.kt index 295fb90..bc63669 100644 --- a/app/src/main/java/com/cheng/bole/utils/UrlHelper.kt +++ b/app/src/main/java/com/cheng/bole/utils/UrlHelper.kt @@ -17,4 +17,16 @@ object UrlHelper { fun startRenewAgreement(context: Context) { BrowserActivity.start(context, "自动续费服务规则", Constants.renewAgreement) } + + fun startPermissionList(context: Context) { + BrowserActivity.start(context, "权限说明", Constants.permissionList) + } + + fun startShareList(context: Context) { + BrowserActivity.start(context, "第三方共享清单", Constants.shareList) + } + + fun startSDKList(context: Context) { + BrowserActivity.start(context, "第三方SDK目录", Constants.sdkList) + } } \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_invoice_title_color.xml b/app/src/main/res/drawable/selector_invoice_title_color.xml new file mode 100644 index 0000000..4ede1dc --- /dev/null +++ b/app/src/main/res/drawable/selector_invoice_title_color.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_invoice_title_rb.xml b/app/src/main/res/drawable/selector_invoice_title_rb.xml new file mode 100644 index 0000000..0bc9c08 --- /dev/null +++ b/app/src/main/res/drawable/selector_invoice_title_rb.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_change_account_bg.xml b/app/src/main/res/drawable/shape_change_account_bg.xml new file mode 100644 index 0000000..da512fb --- /dev/null +++ b/app/src/main/res/drawable/shape_change_account_bg.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_current_account_bg.xml b/app/src/main/res/drawable/shape_current_account_bg.xml new file mode 100644 index 0000000..3b03876 --- /dev/null +++ b/app/src/main/res/drawable/shape_current_account_bg.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_eeeeee_cor4.xml b/app/src/main/res/drawable/shape_eeeeee_cor4.xml new file mode 100644 index 0000000..e4d91de --- /dev/null +++ b/app/src/main/res/drawable/shape_eeeeee_cor4.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_ff8340_circle_dp4.xml b/app/src/main/res/drawable/shape_ff8340_circle_dp4.xml deleted file mode 100644 index 744cbc1..0000000 --- a/app/src/main/res/drawable/shape_ff8340_circle_dp4.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_invoice_title_checked.xml b/app/src/main/res/drawable/shape_invoice_title_checked.xml new file mode 100644 index 0000000..8465cb8 --- /dev/null +++ b/app/src/main/res/drawable/shape_invoice_title_checked.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_invoice_title_default.xml b/app/src/main/res/drawable/shape_invoice_title_default.xml new file mode 100644 index 0000000..d43b36d --- /dev/null +++ b/app/src/main/res/drawable/shape_invoice_title_default.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_white_line_cor8.xml b/app/src/main/res/drawable/shape_white_line_cor8.xml new file mode 100644 index 0000000..4146cf6 --- /dev/null +++ b/app/src/main/res/drawable/shape_white_line_cor8.xml @@ -0,0 +1,8 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_bind_phone.xml b/app/src/main/res/layout/dialog_bind_phone.xml index dbf7a8d..7c62674 100644 --- a/app/src/main/res/layout/dialog_bind_phone.xml +++ b/app/src/main/res/layout/dialog_bind_phone.xml @@ -2,59 +2,72 @@ + android:layout_height="wrap_content"> + + + android:layout_marginTop="@dimen/dp_18" + android:background="@mipmap/ic_bind_phone_bg" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintTop_toBottomOf="@id/iv_close"> - + android:layout_marginTop="@dimen/dp_4" + android:text="享受一键快捷登录~" + android:textColor="@color/color_222222" + android:textSize="@dimen/sp_12" + app:layout_constraintStart_toStartOf="@id/tv_title" + app:layout_constraintTop_toBottomOf="@id/tv_title" /> + android:layout_height="@dimen/dp_52" + android:layout_marginStart="@dimen/dp_16" + android:layout_marginTop="@dimen/dp_26" + android:layout_marginEnd="@dimen/dp_16" + app:layout_constraintTop_toBottomOf="@id/tv_desc"> @@ -75,24 +88,27 @@ + app:layout_constraintEnd_toEndOf="parent" /> + + diff --git a/app/src/main/res/layout/dialog_buy_seat.xml b/app/src/main/res/layout/dialog_buy_seat.xml new file mode 100644 index 0000000..59411bf --- /dev/null +++ b/app/src/main/res/layout/dialog_buy_seat.xml @@ -0,0 +1,222 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_edit_text.xml b/app/src/main/res/layout/dialog_edit_text.xml index aba2e02..8c1ffe6 100644 --- a/app/src/main/res/layout/dialog_edit_text.xml +++ b/app/src/main/res/layout/dialog_edit_text.xml @@ -87,7 +87,7 @@ android:paddingStart="@dimen/dp_16" android:paddingTop="@dimen/dp_9" android:paddingEnd="@dimen/dp_16" - android:paddingBottom="@dimen/dp_30" + android:paddingBottom="@dimen/dp_9" app:layout_constraintTop_toBottomOf="@id/layout_text"> + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_select_bid_type.xml b/app/src/main/res/layout/dialog_select_bid_type.xml index 5dd8297..4540099 100644 --- a/app/src/main/res/layout/dialog_select_bid_type.xml +++ b/app/src/main/res/layout/dialog_select_bid_type.xml @@ -53,7 +53,7 @@ android:paddingStart="@dimen/dp_16" android:paddingTop="@dimen/dp_9" android:paddingEnd="@dimen/dp_16" - android:paddingBottom="@dimen/dp_30" + android:paddingBottom="@dimen/dp_9" app:layout_constraintTop_toBottomOf="@id/mRecyclerView"> diff --git a/app/src/main/res/layout/dialog_select_goods_type.xml b/app/src/main/res/layout/dialog_select_goods_type.xml index 370aab9..86d87f0 100644 --- a/app/src/main/res/layout/dialog_select_goods_type.xml +++ b/app/src/main/res/layout/dialog_select_goods_type.xml @@ -53,7 +53,7 @@ android:paddingStart="@dimen/dp_16" android:paddingTop="@dimen/dp_9" android:paddingEnd="@dimen/dp_16" - android:paddingBottom="@dimen/dp_30" + android:paddingBottom="@dimen/dp_9" app:layout_constraintTop_toBottomOf="@id/mRecyclerView"> + android:layout_height="match_parent" + android:background="@color/white"> + app:layout_constraintTop_toBottomOf="@id/tvVersionName" /> + app:layout_constraintTop_toBottomOf="@id/tvAgreement" /> + app:layout_constraintTop_toBottomOf="@id/view_line1" /> + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_account_manage.xml b/app/src/main/res/layout/fragment_account_manage.xml index 666129a..ba5d0f9 100644 --- a/app/src/main/res/layout/fragment_account_manage.xml +++ b/app/src/main/res/layout/fragment_account_manage.xml @@ -18,9 +18,8 @@ android:id="@+id/rv_account" android:layout_width="match_parent" android:layout_height="0dp" - android:layout_marginStart="@dimen/dp_16" - android:layout_marginEnd="@dimen/dp_16" - android:layout_marginBottom="@dimen/dp_50" + android:layout_marginTop="@dimen/dp_5" + android:layout_marginBottom="@dimen/dp_15" android:overScrollMode="never" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" app:layout_constraintBottom_toBottomOf="parent" diff --git a/app/src/main/res/layout/fragment_add_contacts.xml b/app/src/main/res/layout/fragment_add_contacts.xml index 11396be..614f8cb 100644 --- a/app/src/main/res/layout/fragment_add_contacts.xml +++ b/app/src/main/res/layout/fragment_add_contacts.xml @@ -178,7 +178,7 @@ android:paddingStart="@dimen/dp_16" android:paddingTop="@dimen/dp_9" android:paddingEnd="@dimen/dp_16" - android:paddingBottom="@dimen/dp_30" + android:paddingBottom="@dimen/dp_9" app:layout_constraintBottom_toBottomOf="parent"> @@ -417,7 +417,7 @@ android:layout_marginStart="@dimen/dp_9" android:layout_marginEnd="@dimen/dp_9" app:hl_cornerRadius="@dimen/dp_10" - app:hl_shadowColor="#0d4a4f5b" + app:hl_shadowColor="@color/color_shadow" app:hl_shadowLimit="@dimen/dp_7" app:layout_constraintTop_toBottomOf="@id/layout_base_info"> @@ -592,7 +592,7 @@ android:paddingStart="@dimen/dp_16" android:paddingTop="@dimen/dp_9" android:paddingEnd="@dimen/dp_16" - android:paddingBottom="@dimen/dp_30" + android:paddingBottom="@dimen/dp_9" app:layout_constraintBottom_toBottomOf="parent"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_company_auth.xml b/app/src/main/res/layout/fragment_company_auth.xml new file mode 100644 index 0000000..6ed5309 --- /dev/null +++ b/app/src/main/res/layout/fragment_company_auth.xml @@ -0,0 +1,389 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_favorite.xml b/app/src/main/res/layout/fragment_favorite.xml new file mode 100644 index 0000000..9b699f8 --- /dev/null +++ b/app/src/main/res/layout/fragment_favorite.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_feedback.xml b/app/src/main/res/layout/fragment_feedback.xml index 14e8bf5..6516d83 100644 --- a/app/src/main/res/layout/fragment_feedback.xml +++ b/app/src/main/res/layout/fragment_feedback.xml @@ -44,7 +44,7 @@ android:layout_marginTop="@dimen/dp_15" android:layout_marginEnd="@dimen/dp_9" app:hl_cornerRadius="@dimen/dp_12" - app:hl_shadowColor="#0d4a4f5b" + app:hl_shadowColor="@color/color_shadow" app:hl_shadowLimit="@dimen/dp_7" app:layout_constraintTop_toBottomOf="@id/tv_title"> @@ -140,7 +140,7 @@ android:layout_marginStart="@dimen/dp_9" android:layout_marginEnd="@dimen/dp_9" app:hl_cornerRadius="@dimen/dp_12" - app:hl_shadowColor="#0d4a4f5b" + app:hl_shadowColor="@color/color_shadow" app:hl_shadowLimit="@dimen/dp_7" app:layout_constraintTop_toBottomOf="@id/layout_type"> @@ -239,7 +239,7 @@ android:layout_marginStart="@dimen/dp_9" android:layout_marginEnd="@dimen/dp_9" app:hl_cornerRadius="@dimen/dp_12" - app:hl_shadowColor="#0d4a4f5b" + app:hl_shadowColor="@color/color_shadow" app:hl_shadowLimit="@dimen/dp_7" app:layout_constraintTop_toBottomOf="@id/layout_content"> @@ -300,7 +300,7 @@ android:paddingStart="@dimen/dp_16" android:paddingTop="@dimen/dp_9" android:paddingEnd="@dimen/dp_16" - android:paddingBottom="@dimen/dp_30" + android:paddingBottom="@dimen/dp_9" app:layout_constraintBottom_toBottomOf="parent"> + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_invoice.xml b/app/src/main/res/layout/fragment_invoice.xml new file mode 100644 index 0000000..2e4142b --- /dev/null +++ b/app/src/main/res/layout/fragment_invoice.xml @@ -0,0 +1,749 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_merchant_goods_detail.xml b/app/src/main/res/layout/fragment_merchant_goods_detail.xml index 55f27c6..7f888ab 100644 --- a/app/src/main/res/layout/fragment_merchant_goods_detail.xml +++ b/app/src/main/res/layout/fragment_merchant_goods_detail.xml @@ -66,7 +66,7 @@ android:layout_marginTop="@dimen/dp_13" android:layout_marginEnd="@dimen/dp_9" app:hl_cornerRadius="@dimen/dp_12" - app:hl_shadowColor="#0d4a4f5b" + app:hl_shadowColor="@color/color_shadow" app:hl_shadowLimit="@dimen/dp_7" app:layout_constraintTop_toTopOf="parent"> @@ -153,7 +153,7 @@ android:layout_marginStart="@dimen/dp_9" android:layout_marginEnd="@dimen/dp_9" app:hl_cornerRadius="@dimen/dp_12" - app:hl_shadowColor="#0d4a4f5b" + app:hl_shadowColor="@color/color_shadow" app:hl_shadowLimit="@dimen/dp_7" app:layout_constraintTop_toBottomOf="@id/layout_goods_info"> @@ -235,7 +235,7 @@ android:layout_marginStart="@dimen/dp_9" android:layout_marginEnd="@dimen/dp_9" app:hl_cornerRadius="@dimen/dp_12" - app:hl_shadowColor="#0d4a4f5b" + app:hl_shadowColor="@color/color_shadow" app:hl_shadowLimit="@dimen/dp_7" app:layout_constraintTop_toBottomOf="@id/layout_company_info"> diff --git a/app/src/main/res/layout/fragment_message.xml b/app/src/main/res/layout/fragment_message.xml new file mode 100644 index 0000000..ee2eca3 --- /dev/null +++ b/app/src/main/res/layout/fragment_message.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_order.xml b/app/src/main/res/layout/fragment_order.xml new file mode 100644 index 0000000..ca977d6 --- /dev/null +++ b/app/src/main/res/layout/fragment_order.xml @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_order_list.xml b/app/src/main/res/layout/fragment_order_list.xml new file mode 100644 index 0000000..ece4d9f --- /dev/null +++ b/app/src/main/res/layout/fragment_order_list.xml @@ -0,0 +1,21 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_publish_bid_message.xml b/app/src/main/res/layout/fragment_publish_bid_message.xml index edcad42..7a3ba83 100644 --- a/app/src/main/res/layout/fragment_publish_bid_message.xml +++ b/app/src/main/res/layout/fragment_publish_bid_message.xml @@ -59,7 +59,7 @@ android:layout_height="wrap_content" android:visibility="gone" app:hl_cornerRadius="@dimen/dp_12" - app:hl_shadowColor="#0d4a4f5b" + app:hl_shadowColor="@color/color_shadow" app:hl_shadowLimit="@dimen/dp_7"> @@ -161,7 +161,7 @@ android:layout_marginEnd="@dimen/dp_9" app:hl_cornerRadius="@dimen/dp_10" app:hl_layoutBackground="@color/white" - app:hl_shadowColor="#0d4a4f5b" + app:hl_shadowColor="@color/color_shadow" app:hl_shadowLimit="@dimen/dp_7" app:layout_goneMarginTop="@dimen/dp_13" app:layout_constraintTop_toBottomOf="@id/layout_history"> @@ -218,7 +218,7 @@ android:layout_marginEnd="@dimen/dp_9" app:hl_cornerRadius="@dimen/dp_10" app:hl_layoutBackground="@color/white" - app:hl_shadowColor="#0d4a4f5b" + app:hl_shadowColor="@color/color_shadow" app:hl_shadowLimit="@dimen/dp_7" app:layout_constraintTop_toBottomOf="@id/layout_recommend"> diff --git a/app/src/main/res/layout/fragment_seat_manage.xml b/app/src/main/res/layout/fragment_seat_manage.xml new file mode 100644 index 0000000..b9fd2b2 --- /dev/null +++ b/app/src/main/res/layout/fragment_seat_manage.xml @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_settings.xml b/app/src/main/res/layout/fragment_settings.xml index 627a261..79f31d1 100644 --- a/app/src/main/res/layout/fragment_settings.xml +++ b/app/src/main/res/layout/fragment_settings.xml @@ -55,13 +55,14 @@ @@ -93,6 +94,49 @@ + + + + + + + + + + diff --git a/app/src/main/res/layout/fragment_source_search.xml b/app/src/main/res/layout/fragment_source_search.xml index 510efe1..dc81966 100644 --- a/app/src/main/res/layout/fragment_source_search.xml +++ b/app/src/main/res/layout/fragment_source_search.xml @@ -158,7 +158,7 @@ android:layout_marginTop="@dimen/dp_5" android:layout_marginEnd="@dimen/dp_9" app:hl_cornerRadius="@dimen/dp_10" - app:hl_shadowColor="#0d4a4f5b" + app:hl_shadowColor="@color/color_shadow" app:hl_shadowLimit="@dimen/dp_7" app:layout_constraintTop_toBottomOf="@id/tv_recommend_title"> diff --git a/app/src/main/res/layout/listitem_account.xml b/app/src/main/res/layout/listitem_account.xml index e528e0f..3331bef 100644 --- a/app/src/main/res/layout/listitem_account.xml +++ b/app/src/main/res/layout/listitem_account.xml @@ -1,117 +1,150 @@ - + app:hl_cornerRadius="@dimen/dp_8" + app:hl_shadowColor="#1a9399a1" + app:hl_shadowLimit="@dimen/dp_7"> - + - + - + - + - + - + + - + - + - + - + - \ No newline at end of file + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/listitem_bid.xml b/app/src/main/res/layout/listitem_bid.xml index da0e65d..98d4f6a 100644 --- a/app/src/main/res/layout/listitem_bid.xml +++ b/app/src/main/res/layout/listitem_bid.xml @@ -6,7 +6,7 @@ android:layout_marginStart="@dimen/dp_5" android:layout_marginEnd="@dimen/dp_5" app:hl_cornerRadius="@dimen/dp_8" - app:hl_shadowColor="#0d4a4f5b" + app:hl_shadowColor="@color/color_shadow" app:hl_shadowLimit="@dimen/dp_7"> + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/listitem_order.xml b/app/src/main/res/layout/listitem_order.xml new file mode 100644 index 0000000..f18548f --- /dev/null +++ b/app/src/main/res/layout/listitem_order.xml @@ -0,0 +1,201 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/listitem_seat_manage.xml b/app/src/main/res/layout/listitem_seat_manage.xml new file mode 100644 index 0000000..8df4846 --- /dev/null +++ b/app/src/main/res/layout/listitem_seat_manage.xml @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/listitem_selected_source.xml b/app/src/main/res/layout/listitem_selected_source.xml index 235f755..0c3d693 100644 --- a/app/src/main/res/layout/listitem_selected_source.xml +++ b/app/src/main/res/layout/listitem_selected_source.xml @@ -6,7 +6,7 @@ android:layout_marginTop="@dimen/dp_1" android:layout_marginEnd="@dimen/dp_1" app:hl_cornerRadius="@dimen/dp_25" - app:hl_shadowColor="#0d4a4f5b" + app:hl_shadowColor="@color/color_shadow" app:hl_shadowLimit="@dimen/dp_7"> 00EFI*|zF9 zS5(8y%#bO9F~+Zy!bJKClR`7c%*@#^e}F=>Ei$u*@lEMe3GO-fyl2WH!hzeiktFR| z&por-beS(Pi%Q289ZP&$tC-Kj-v!CPPfit_bCPT2huEc)mAXWbn zJG;%wjHPVn6cBw9sN!rW3J$CS*^Qb095#9%FMyJ>BTlB3_+EgrF)v4B?fwN|aN$_3 zGUfMlU{SwOs`|VOY~C$bOYZ@r_f*21V>&1LemfoS0rz(5&=z=o8e7UA%G#rf*7iCsQzavAkuoF?r|dY}kWD>qPhry{aw3{7h2u1`Q!bpd*a`56^usL;zq->; z;lWPV6}%6~xMq>9%?gp!=0;CetO-N=0hkfZmKoxkf$>Ab*d_Z#<2#NW78HFK_8U3_ zDe0j!C3rDUPT2sYq=$r5;U`cR1^}Rkl9bi~Hp*#@1Asy(NlC<8<#c=o0EI9sCGxpL zPSb3@06FulP$td>wg`hWk_B$2Sf%6KLLFx zbUXnB-<=Lk>QZK^NHu?OfxkYP?YGjZ{>Q-XNDj5`f5A zl6w0_ty${-Qj?5F?v<;LkB;$-kM`FJb#uHihJxK^7c4qQW))i>_X;j^`e!!itPTW= z1fSNbz!NG{JIgGBSL?R3l=1!*m))rQ4`&9#nfD)_3|!o$H3{R)DXYu8AJSNsC;l%L z09H^qAP52g0B{QcodGIH07w8nkv^A5Kcl4~E12y2@Dd4Z1}FgO)j9oFToz1XM?i2Y z^Z~X5%y&Q!Ko9NRL0*6!R{!OHr2G(m?*s0zkon*S%RE&9m%VEyqUTXjqwR>wjz#T?S zPY-w+j7nf?1NC$~Rx#>&P%4?$ar_4N$|NM5?QP#COh<_)-mS&h2Yusy1Gz|Dy%(Cq zVL**Ip&ioJpNN&qUg|~-IB|;U;u+Ro`?nG+*Lk-OBLDw^LdL#sgkCeq?v}C}8Vd{& z%Fcmn+`?Vk$4d440?b7`I8v7%^TXXEBs25Swfn zT@d6}{O{DrP}h?)D#CUj|Mw<()GoV2JGK7P%owue&S;~KI6^q^3o7$9pU_eRDIAic zhnil&bX5YS;{KE=2N}uPB`8)YalfGNB#c2mkyE2^4Wbzp~R6Kact3tvsN+%RG7Qj6;8=r63dXKJuFC MudOg%iFYpG05PFoN&o-= literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/ic_auth_success.webp b/app/src/main/res/mipmap-xxhdpi/ic_auth_success.webp new file mode 100644 index 0000000000000000000000000000000000000000..0b46d1850cb27f79ccc4bf7d48f1d94be42a334f GIT binary patch literal 1248 zcmV<61RwiSNk&H41ONb6MM6+kP&il$0000G0000-002h-06|PpNc;i-00E%HY?~sv z`F6WT##*y|V;q^8v3n#lg*h38lgWvhneoJA2%DKtne*}*XGSv9LNC`Jtor-!lW!3* z0l2E1=sjq}vO6=+Jo9LJ!N>u<6ERWAyWiP$qK^Kzv1ZphcaK*w@PEsNh8#_pTjvYY ztM(B4j`<~WI;Pe(QiPX&@|6(%#wm*U%zIjbH)^hDq6+dxhA9Nm zsDK0qUIgBDy+`8T=*Z)rk#{P^Qt}hUaINN;e<==) zt2lO0EcY<@6jR?xtrJwS>$tJ_O}UKE$=N%q_n6}rxunb8p_KMrBLRGE5#H^Pc*h87 z{H8a6j@vBEI|;kqyGUm1$2|b3OsxfN?qN5eMn>!R8bF6zYst2{zum}25p^GF09~J{ zCF{Bob_+;i)2kYQ{=AVKm)WHq+D}!VW2k)u0D68w&Ue~9>Tq~^_f*#Dcp3l({zUE> zyJs9805B@+aN#-ypyyAm49`UIQZaxjl~xyS1W?p(BXK%p9BOX^fQ1zn6>9(#&E8L} zkJ{boK!t?>FuCG?YUX(WrdAuCwB0fns+bG_3k&~hD<1^Fn|g+r7ub!cbD@fb0C3wm zqPFcx0N$b_#N0U2u79-?RZam=yzCtPIiv_ckT+a41MGTicBAYl0L6Fg?F*pe?e)aI ztG8X^9pgsXDF8Zl2hin-T4FcvBR+gA0T42tX#&CMP5|!k{cy# z9Oyxye(y|Fr{2(zsr;WVMbWr6)e&M#=I`L!vr0p@zb+RV7ZaXX=R>|4fA>4PY8wBq zu6px3cPAC%ndm)WXgJrcO83|3G$AhrPj0B{TdodGIH07w8nkwBP8 zrKBPuE0dgfuo4Mq1}FgkH51h3;bkR=4^SQ26W1~Qqf|c$N-zX}!zJ~Pt6FG3*qHPtXI3NvfB^pau>b!tFaMYQ z|NN~|EWIvcfxj{m=q*S+bWiezVa&-Ny=$$whyl~RfW2yG-XoC!VAKk8tle~Z|NpoM ze~4NamZtfN9bx!ghH+bG%U>o7l%VuKchWo1{PFYu2K|_EO4tMs;67o5d;6ud$M*np zEuFa#q*uq~5V5u0Qd>Xr7inS_G>H-rU1HOHN``q(k%{!Dc?; zzyVCgmMGpXZhj>1(mKGo36GYPyWzcF65M77<8@qLPYIMh3ci9b$+2|MLR#VDj&Of!L8w`h0Kfhw>p=UN4O69SuiYKdKC7X^u)<;`QeLbgmOb zVgg|hEjpMk?fZtM?kE41eK{h~={iR5s5s~E|M%L)KY#q8#~Ay?TG1eK5fcBnjCpjP K>{71)0000sJ6di4 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/ic_bind_phone.webp b/app/src/main/res/mipmap-xxhdpi/ic_bind_phone.webp index 6e6169dc1673845f64416c787722a6ac767fb7a9..624021b9ab4e89b827356f413c4b1080752378c2 100644 GIT binary patch literal 604 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≻DB_S)#;QuXP8rjP~UZQx? zeLpJ^7D^57@P=Y{KqK()*lyeRVu1;+^+JIE+XMQ{h#f;3!5hQ&UYG$VQq+Lc5%920 zrMvGi18i#oUiZzkZTJH4#Lgm1rA9t7-v@-K6Gz#9WEDwBe~T9V{a-N z1_nlnQZ;934peX9&->$P={#<~gMyOj{3d&KfoT-Nnw0$BA^rO00RfNioGy(QE%Z7q zUtH(e$onFxcW8&h*s$b2pyFVYAG#=c8XqS*O+An+{k{!; z*7lvN)A&+iNdq;#UtHoNhkZSleJY~$QqrbM%a_8=ossOFb>(tCEJu?A0Ig)?fF!pl zX4LFcgk zRfXUfd|-^?gaby@`BhZFP31Z)DKJ`AGnFO%ZH&4+vw1lub|}sXb}BpxD6(^X4DLVJ zrnIkq42*FzP&gA^VanEY(?b9#EwErrxX`ny1rorh!YN#~80rS76B)2EU(^9Eznqa5 z3UCB5=9198L=ORWIyU4A6B?-&Te{SKeGJ`mInjh}Ky|NjNGe%t_f`Ny@rSKK>B8<= zv=B5alZSrcnlS-|2u;Fy!!!sX%EnAqrha3$)tWLHCTe31Sf>o_;Efs!2JsHZ-(k!D zL|_~>K}a0oB#%#2Qotf@Nu>+xD5nc+>7j!z88!K+lS8OxVyeqT8+g_>7Hk}roJ*pP zy)915u|>f9x+VJmdi{h12mFhbfad>B)!%fmTre6lNOK7OMDcvt(w?%?LdFd58#Gue z`&}ob>qdVQ9wGP9LM=J?=8h1Go>;9|XVN34Oc*K|Tro{E`CsWJEJbNP5o-AC}HRFeo^sSEZVFVJ>fC!PB&SYl5PZ zW_$XRp$jq=6BO?DGgu4W+17khO@v2l@h)}}ZOz3S>q=L470(FQAy_;6z61%uSF>aq zk`np&uCeNmz(t2rBMXnFOU4vGa0jzZ)W^)!l39?wLar6=+ey!_k9_Vqw#Qk2qgQ^n z5}WfP(7>I~x#aS)*k|~`>r!HUUGzKh*nKTTfm&&OvK~MbTd-5XDL(J{(~O*(`^B7K ze)w#qgY%2mWb^k)*I1ETE@K@zRBPuY7o;=Jk17D4>x&;`_cCWY8gcvYUq37mBI0{ zQky?HnZc$hDRw`koD2N~Z8w+9be`{@xzu-({DG{K4JAzF>2c<9-6nnZ^p)T-ZL=_d zubSLJTBO=#CXlO3KD9;uY}_@sv1YvRrNBnQ-2sVCEm*` z@OQVG@GNVy9|fACR@DB9@B^;8_s0AJvp`Mh#jbBQhV{+D{?58K$|(Vn>(CC!e!|NB z5Egz9X8AdwIzK&aw6Z4|G z!_Tntkbri#R}9R!x#>STOsel-JrTk&N?PWA9GG~%jMUEEq@*=!I+W~X)U_VxT*1xp`E ze}^)CaQ8xmTwDzlt@fVh(~5~C6f1gZHcs)*W9??1EN~6*YDJ~ zgk}E0Q*K~>6E=QG2jwvAwZwayC8W~iwDi6%Do*p^(AFZ^sNcz);0%}~L zs9W>yxX%aePA`v$aFe_@QyUQhizTE&x+(iLMNGHNyx*3N(h#VdC^eIMB4=J47`C<( z^ffp~R5~XY$JOeHPHgMcpzqXS8bVo7Xcvpn&8y=#?}E2{dHK#)c7v@aw=ANxPd z&&Lycsn;t;Bbc%gZ)aExHrz*|efPpPnb{c_WOl3|{Ab{i3!t>EUTlWICG6k~N{-l~ zee%L4`YsGaEaOn=m4_u(-xR;j>8b@d(BW5~@9vrj3mnDlRuglXJaGo+L%i z#0L2>Y5$G}akhh7a8ocRi~t;T;9^pOCIQ<9s|ru|t#A@Ld3WD!G;#)ZuzuHx_~24H z)JzlAqL_Xy-t9vHW3LyAz8}SY&$DPb3^vhkUTymu*b(!3$T0lS^R%b8LvXCVmWc@o z{E2?_;>1kCKdJxts2M@;I;enH!TwGDSpM{wg`0K>3D@knG#g({Gc`amQr&B><{jpX zVIWn%cbsFiY~hH^t?V3_G+Z8K(gvN;bGF#4wr|O@H+GvIqxrx@tKf4c#_4%n&ow5m zlBMc*a($sARdik$AsB(MdkaLIpPJ1(Wa3Sexi_70)~?onO`6ms~q{xn=q%Xnsbv zHkHeQMUcJEl{^?2vn?$RMWy3d<>o<~VtUHjRgghT7B^0#JA<%v4R32yS5<^W%o$ z+B(PJ{{#+u|35N)ltg4eLbO{IpTsBWY_-=;v`ZLkELHtsSC{e=V$Jpc0+KUYRUlyE zpU~emNwt{Hv(W=fyupT`)H_*d!RFcY{~;JQ6vS7w7Oc)ccgB8Khpt@NSdq_DO`5Bx~4O{x7|8SbLVU$@S&pOuc>Sgl(+K z9Uw0LlO4q}_3>y)XvDsh)Wd64XY}U8f?*A?`7~=@)`)4Lc0*4w`l>^Ye%0+dHF=Ow4r@6f5@mC5< zLRVMxe;U}3|L>sj|DX8ZIQsuxTapL_fI#cL|DJtxeL+t>D0`*?yvmBxkYq3fO?~?^ z;c&gyivzyc%?Te)yNpHThhA!LCT`TsU@k-^VFco(=T#Q=E|Z4b?i`HMhJj-tI9tP- zD3n_PHQjjebM6lBor{0s##)cbEx7|UTh`ziwrmiOwrCge6xeqpu`K=yU%#>m`5FFO z9q5MulsVMM6fM=(LY|ggagkBpM3qMmfZ*JEDs0tuSTX4>mH$?*zAE3{N3S=~D8xuzfrxV_lSAY(JHvmBuBA-d9s6tX1+|;tCjzxS+^D z3~67zbl$$cqEuADlrJL8o^w0@42DN^B!hi1$ca5q3|@{@p}FG>n6~`cCG=ulFRf?A zsF1VY+U_&=ws}?mfJJTGfK8Jo4rK1UB|RyACidieitkV?_?B96g>_5SnHfRMmn-kO zZ{=GrMUQorr?|b}hwp1jlYn~Y`~lpQv!!cd9g2!cud|@Js+B_g)BKojDxnr&vlvD0 zFQ~XdS()~0%ustjN4TUdrttL-aYUmO(ZimrnbEEBw^Klwm2Vuf zuoEte3abN}I<==K6Jzz;fAZXA-GkYy@uHzuxSghz=1*v}d1uWf4B}*qIoB!)l8_6w zhP6BOmTuNqdd>8KB}S?)iGuX|0uPUu4JqWADFYD@8wy9u3L7XA0(}t%Y1YOn(=coN zxE`kmBIOPv@29l$WMDB3E-ahR7-_#2?R1#4Vsn?{yXT=5a$^3{u;CkWxafXXSC$9S zW!w34epfZC$0h&MNHjlWOZb5ht;LGv(!&;%S6zPs^lWdoe#4r1a^*_|_QwhHM~GQx z)MJ9Zo6Yc1M-ii`)s$kav(~EW1dfH$v1Z^>+kbag~JeN(`mxl#g=1s;n=B5nc-{#lVMuN%l zI6!UC8c2GW0W*c|Z^absTphSosWxQO^v6h_&PeO-TPG@WS1>2peL^ zAL^WX*r~eM&_`ie;FAWq{K~MxHxWf1onhvF3$VE#+Bi>=Cvs?-Gj1A!6=`^!k(a`r zWd2%nh%kIr=JUhoR3BCHpIFD5GaCkXjRM`Qo}W4jxyT;7q#4Kly8VzXoai8(K)W0e z3?BMb3=@+e^MdvHdt6zv%I$+q$OPSdc3H<(ua7VFr+OCVx~ug9{NFW3=z>utFW1WW zpbCP4By03=}{68SbIUa z6Rzk6lFdYHlCN}F*B<4bvqb6znO|9!&{%PBt1flO$yJPn0#-g@lx32Xd38S21Sm3Q zu2dZnV++g!xM160?7fehd3^pvEg|q$P^S zbE7nIyI1>rKCqFz`MLb}zMMA@fq;|a`vjQjeFTlT#2!F?Bk)gRbE?{eskp_TB( zp4yz>I4Fwe<|ponNE+vWv_W7jCH&s@Q*`Gma{@N_W&M}f5|3I6w*Pvm_c3>=Dw)kT7&)h)^eA$`Rp79 zzRELmr#nQBB8vRjZA%&d_0Yrn{OL?UdwmYV?j8Pm*X9In@yj5eDZi8QU43T;Xo6hf zc_6krV{rwey)jVQuG40aZWFS-JZ8a`=zj?6RZHDuyC=-zUwWEGYE7K14p_7rY+%;m zV)I*lkCKx?sze+XR=LFDX+R);J8yNQ4!j|*Utm)8lbdqBK8YjwC0&0Lr}KBp5Q;%G zt;E@EHP(4bHc6YRnY`-F+zNS;{w;nk;5YqUm=W_tfIb*N6axzm8z$zYwGAy!<6=YE z3-86CIQn%%Fje20$<}i`EQ_kRG?Xyi&AUw_6*(E#>`ENYIg2Sc zZ`oCCsY&2d#WEAr3|#=%F!wbw=ez{#^O5E476x?_VRp3!xRCOa*SDdc;B|nEnJ+hn zJ|#?r-I2)o8|fpWfBu+^H-@oW->rNaQ@F+@)Z99Q(CaZt91%-StI*u|ki^$pk(bVK zuhoW;F`S{qxl%?H$>}A>{OD`Q(&J(Bu+=kR7QJEwzLh%q7SIxAl~rAAd9@8ry?XZ+ zo6jkk8DuZ+QI_W7ExD@D`qiMhG-g5#8R6TzjuLHzXT7LTv>^%Jl+b9OYovD_?wAe# zp+Y^YNef|XN>zKo4sB23XN1WaN!#0>ar7V`(zAC-itjtP*Xs@$QVUlr40f^mTT-&o z-lY_2BEkdFKSU*3GzYqXuXc0@{dSGL{KxTG;R7|LuqE3kq;S^sYFWu({XFI~F}OKJ z!0ERIEJgP!-=yl7m(K`evD!NFTg`+G4{etvI=Vuh3yUPWGi)AD8>y9dk28`Ah&&`Q z5s09T5n@j3_h^%=nViv&%JlWyvk~ieBZb-TN z`CV~H6Lo@pLeroUr?seby0s&)yYprO?3zg3m1MQc)nm2#T zuXdH6$~cZd{`Rs97?uNMlv@#N08#0!FjWcQC|X_tVD0o0z%y|>&*mhPmz?~ zypt?q<_Ka}5igbmf}a_SqbljDizB;vGkEj|!}yxvuShR5L8i}1dLQ|p#D%vRkn>8! zKXS;0K5ft0ASlGHPf=W~R#Xr9oiYpf-hY%Z&bNV~^jK^_X)641(xYz7@?}0BN0K)V ztvLS}W3Vo>jA#mHj=W;UAgODkH{Kh*d=HMY%1zD+Qp%l=4pK|Cq8^CT?GQDD<~Ms1DG%tt`vLyVomGX%Wpy+&Ww*C(|L^76(m)B{^p-?LRs+R;;@*V7 z*J-r+LWzwIFA7YfN48rifL(y#Lg?xExxOOenfO~OLao~kf*Z$J)rZ9;nt;4q;tGq zkYE_3`oOoO!2VvFjGJuLm}Ku=92$C(Z|T4hqu>HRO8rqPtxy*~SVAIR{6&02yK*j` zKQTLRUobW)QaDvA=2|%{SQhS{3~VA{IuQMPC82+*^Imb*fI&}F?1gvW8_vdu@2f7Z z{UHFjVbVkEaM;UB^yS>7w3Optm9r`^4ycx~3*(h&sPHM6y-H|es9zpr(cgRg&#E9= z$n{&hJ?zOLKmKaLr5=jguC358a5$reHzxKfjF<1YV=vx2M}s>@d`!k1R=X=IF@l6# zR=iqH5MHdtrbFP1*@6;JI>_!WfP+)CgauXaW!`gileMX0xQU@A_YHLcb;PW2a|q!S zLwTOn9~#4ubZL)7C!{}M_jBFW$W1)oR!?>tID>L+Lz?)|9;UdhDiV(Od_pw(=OH(V zHF8}7s!h3Xe8__*F$^D)o2f@u+(UDMqb#g6oox!BhzBFbw5oclzE2A+Fg|cfQjOY* zgjF9P`^0=Ls3E}6L%A92a+h5SAuKlEr*@o|dGUQ@AlY>gwEmvaOcF|JaLlsp>+}MD zZ!G)SLw0cT{ds;Q14g{a;k<0H6{>8)&l~&{+(&}C`xR-~*mdCt>1LBq8XfwTlLU-o zyY(SveFOZ;{rY`5yt;A9M_d;M+z};HtyYw`v>Fs3!+q@j5|V=EkZ9* z)Ld-0r&}Op{7{GKc)r6ML+I3*zb>t+s~^R*kaX0ZE;^KYgcRv1{!UU*bOEr4e-@a# zujYCv3)Jro$P*5|6CH!4dKVpChe1&)W@x$EzTBg-=}d=$1D z&BG`bZWw_nL?s2yhD-lJ*^fk|13k>Pb=nW`30IVkID2hP;GjOWy&)#>Baydw`8eP~ z_EqxiU&QB%r=7})P5w}xxgxJFR_Q@my2hLJDhOv>epT83<9{DilDa&pj}U*gSQ6J4 z9{;Hqa}!WihmbOpX)vN%DO@Lymwq;OG56COdho3IBxa|DjU4kVCwzgFRzMX>FUucQ zB%}twFT?T4IaSR+)gD@(8ug$s(V7q19d3elueWt*v>huCX(Y@cz4U*5LkAOOw zXEfJ0wZ8Ey4(*yYsN+PeG~qGi>-W#!aC&_iw;|5Hvl}1Nn5%nVqiY-_xNjMTl`+c!_|3l zI^%G1{#5AK^?3%%APGguH`Yj(ZtOPvsI>1HTOZ3E=FE-rsQehwYln}fI|Q&-CAu;&YVr2%J=^?tdj7t4eV{$~se5)VezM#YR6W~lcx!OQ%&leQQI zjqRD*zmU7|_7R(OU{Rj~G_IY7hYe61lQy~ZjGCGA(9GY2cJ*hiH@$w4AIu+fyM~ob zPA1Y@uB*7e@ROYe`wqM9L0X1CI1o9(ADv^m-;`tD>0cP9y1xTe(Nx?TRBK*8Cmi?*7vJW~AjKqFu^bt+M3 zymv07xO-NB&3!x2u3%j=pCB#19Smz=vL>!dtd$?kEfkpv4OSAOdE?ZiTR)HIru9&_ zT#w-`8x@6rlw~NVWtthvtz~&M^mDL0e8^C;&^bcUl;d-hx?rs&fke2J*nyB>`bodW zn+k&W-gjgd@;VDPndQ#JFVP=YHond_WeK6i9fx%^8||xc zfqo(@BpCwv z1O12+H@doGKg8Ds?&}ZPRI9XBIJz|&#{dFPc8Ov%U|9{u&DXP)zryVrt*$p2`s zI=0Jw!=cJR${Vsc^N%ooe^VsjwR;uTJ}#v;T}mq9N(((xjGexVp>%cI?a^T{d}zAj zlViG_3JdV*tB*XqhE?w`XL!#!%d55VYi?{$w4Ynbn{vOlYt0-K{(2OM5L8_*9eHxU z9|~F0cnPK+s8N{ti!IW|LjYCLco|;$6L~1_fo^(wEN3H$qQ9ze5%U)+SX?C>tTqad zdFd}{mGU^3^34lau|3?CL>8|@-K=>PeXZZQM@Tokxe3tl zIIMd)aQqCb$D<+Tw!CMHlhuIHlT-R1lNma}lNizYxP*r}LyQZQhUPHx1f<+gQefvK z6-a=@|5|mHh2jK9F0Zo}hY3>lTGcZYwB6wg!pV5E!m6GA;tsBTpmEAX0%uUHS!UWm z@9qnN#F(SuA+2`CzQ0{8`jV#U)dEtARXgykflt)nH1wZ#m;>PwNg9QdWAG=9mN>#I zBaeKhfnXxv`bk69f>nF-qSE70u_>bUJ&`x)^uA%%c1HCUW~#Er`qg`R{Bqdv1^Q{L!x zSQqvnQoO_lwe^1-4`Wb03c{z&RVYzD3WaoL`F1#$g`tXug1iy&lO5?%l1?!(zJ9n= z7>M7=L}%}_%78;(VTU#eGR9%Mi}!X%NQ4u`NH;A;eorpLhtOn+eMGt9kx$I64dbXj z&lBjBX*0W-uqBNW)jI8GAJ9nDKVc=pY)3(BT|z4vT&q;TBXq_1icCn=E=xsfP*6Zy z${Vi-qQ^MAkw9m_&wM(haRjo_&PH{7D`w+XF7vpN-gTZZj!?aAdHg)9h@1-Uc=Wtu z$o!KZyO{t0z_|%;5nQ~)52S#zAf0Ee0Zvh)>c#(sB^af>`0_F) z*@baXO;k-P(Y$+tt+`Lui`6zhC^&NLV^DnMc!-()MaiZ2^(`C(^+73GO;r+E8Hw5c zao!9c@wBrl$=kC44S`m7=tBSi9Bx@kzV8jnQYsxk2%5oLDP%tC>|SKycHn7PQHlT) z$$rrLt?_4KXKySRv)u_y9ba(YFP=;@hx-Q)smtZ*87S5xH|d=tCe zrhKrQ5uPV8461D*3yj|P2I#ylQJ)eiV5KH)q)Q`9b0On-7TCZ%}ytkWGxt&bcR35N20+-mv zwi(h)O>IA=7s}UczveXrfI}b^t`h?hnNa|$1V?o$!YVJ)_T7rKdiDYwVNg36M0$!`87}HYzedUPea!i{@?~_X{z*wCndJCX(75taUrd%PxuP<`-Ic5WZxhx=L z{~pr^lN`zQ5OV@pDWC*e1pw^iwIU(@85W4h*3u*hKr##f5NDKP1N5C)Di{7~_-_Fx MBl};&|0nzZ1FaucKmY&$ literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/ic_bind_wx.webp b/app/src/main/res/mipmap-xxhdpi/ic_bind_wx.webp index 2e907f9ec59d6b5088f4ebd8662779f00f98b989..0b8cce6cc1dd9e92135caf1000f090b725b0bc26 100644 GIT binary patch literal 1248 zcmV<61RwiSNk&H41ONb6MM6+kP&il$0000G0000x0027x06|PpNB{!>00E#yZJQxU z`no2kZQCe}ZQHhO+cRt1yLYzj9ox38>}n?di;BpM$mL~3OaT6;SK@OT51zg9*_D&~ zH_eKx>8PY`k9>1dBer(rt0($pI3{Z0zFP)aH}4)=8s&(n&ihF0nZXG`(sJKYNp$sB z&1AWEY9!vgGE7QPqw6GBouo);bbw@E93n39TZ2=1>Qto|y4^?E0^%O&pt$;9=as+T z%Dv(Wi%w?FT~oh#@W*E+dlW0_ zd*m$5NPFR&N*2xXbFXJvNZlgAIMyV2nM(HkOA~@vi9bo$)~MOn6(q9ytG2Ajx5b?) z?r@9*o7aXhu)+{^p=qO|B>r}PS3tL0f+|^Bv zoU92W(8?pq6IsRL;8& z_%e>Sl!!<#)mS$@Yvmd1U7XlmM0DwyQHx&r=HN}8wEitirQPWTZi{QAKA9g1gvMtU zdVQYQgde2siRHK!Uwq#U>&gaAlGX>@kX|ieJNJMb?L}A&g1~li{>-o$iLA4v{q0!AhH1f01yiRodGI506YLb zjX0J^zoQ}{Fcc2^@DYh@Z9hm^paZG3r}bWsPsQQ)(BuN}9wMD5yug03`q=a?^#FPR zd13z5d>MY~`cVS3hir}TdGU0f#L$$uJ$Y~PCu#i=M$iEM<5U0h!TxP@~rMH;pWSIMJyV)-v=$x~b?Pu2(wI znta9_`czr&hm}HCnZ0{HsZ=T++X{pbl(Fuq8EM+|<#Mk13Z7U>U;A9Y+D8I>`ty^y zf7Sg%q0#5{0$1^)?Qa#Q8+tNe6IsXS_ep-h2o&D$ARFtHD-up%9Wq2W7HgcMAffj` z1PAw^Ay56_%?XtlRe03y&VU;@qBIfx;ex33(VaIkvUR(OSS|VHViW=Y_TxjPHOd~p zT0(3^$@o1d@SVm!dv$s-UjI1x@fW`r+5`6r2s|>n)?y%JM5~6AT}bbbM5`Y6#dvnv>WMdxhPKN%}oObcN!9hKgr6vb;DZ_eInrmsuStHlYDg>ic zQ6*J23fzfqmMUs*kt5ziLM$c^o(sdH=0P8a4m=lzm^8)nzfXq+Fg3OQiiq7P_|53X&u#R(0W!;v&6+=1D*~w2KRZ?uL|OkPG#E@MglI?tDH}q} zOBCf?__0QzW52T_n7dB*gyYnm860M|C7|0BNtz?c??~LI+xys=gPnEI8H=6m&@%;lmO;-@qgY^8xz-`!m@K&;$A>_|CCkKo2c{V;|lRN4AJ7 zahBeaHh4ax3V}6^uh}wZaNwubxE=2W*UtSDSZA3?>Q4bRFwDDfBZRy1(}VG92u@@u z?+AqYa<{{^e=^`Yr$c6F>j+>pP^e+A-fSHME4$@E)Ug>*XUbh${&M z5l{wC0`>L%mI)q3-?RrYkRLI|$nei2Gjpdiw|Wo7C|fIda92lv5gh8M;Al@XFIPKR zM)LE=dWDWFnyEd{{tH(~VFf;p-9dAeJ;U5N5lWJ;T$2=$RFT?F}Lhu48JHGlKg|%rcYprJet$a~IjY6x_z?N=L zq)wn(96E+QS@e*@o;MsNF<7B3amz^>0zBR?`dgfoPeJ(Bt)q4K*Ij zW12z4&VuIL;<>Lmj_&j$J~K6F{g~hHuOUTNVO;$n<+H~X^NWN0!qSW`JHn}-)#?8( sKNbFe>#;BVEx(`o_@|@)Uk~Y*I}S_yfMfjo{`t~I=3CUEmHplT0ER+16#xJL diff --git a/app/src/main/res/mipmap-xxhdpi/ic_cert_divider.webp b/app/src/main/res/mipmap-xxhdpi/ic_cert_divider.webp new file mode 100644 index 0000000000000000000000000000000000000000..495b079b649b91ae76749f982f675f2a52175b52 GIT binary patch literal 1342 zcmV-E1;P4KNk&FC1pok7MM6+kP&il$0000G0002g0{{^K06|PpNZSAa00D4XYunRs z7$CjQ&>J%#u^d)GF$5Z)z5$*c(qlQe^kVbAiF-{%IBeTSl9UE4?|+vHK3~o~Fu=)8 zK0h4cnZ{KVFC!yD)01U_xGB3W4Vs=^^nTPju-g)$X^3VoM0YYGG+i}O0(x5-G+kS0 zcKgE~5t=$^_I^S}g{D55y|jFh(V*#TSwivYWoghf>7&^l_FIh#O>H#0wI(Am(|=fP zZLZj5Da@3TJu0At?6yQ`dT1HwYU`Pd2u)LTwbisv?6x#$ntAB`s2a1|5~1lN_h-wr z(lh-409H^qAT$I308k$QodGJ<0}=o}kwl(KrK6&ur;^Eluo4MP*=!V>Qi^{7`~b|x z&@T#pwf_Kw0sI5-1M~y@2B-(%2j~T-{!ka-AAlBgNo&vm4j>ASu3m*jSJz%L2Zl z%A@WcV?X~C7;IllV9 zj*Bd&RGRRq4x?%x^CoZ(S6vQ2c?f=XgD-!)q0*s?fa*h|H@#PBd@eFn*?2P&6jU~T zImIRa%du$bQGGl4PLd8Uo-mV1Q7A#sX!ymGo)|22{}!?c&6NKz0yvf-v-7N*INj6F z?B?FUv5kxGK6dat&@LEB!zJN)pxoK92X(f}F-nU?e);eBULW4}(_rM??=t$kOs9b^ zgTBs`M2gMkr1jK(4iQySw0PO1{+)!Z^-1q4H)Pg1`4Io|8NA0Bu`czICPbGD$rqis z1CXJx_s+1Jx8n>kxKo!l>xDYeCEpuU>8aKAvP{FlcsS_RN1am{axs4-*Cg6LT5izg zM$|^DmD`y=wVP<1g!Jm+4#}pHG@(!EnU5urSrLz zA4@wcHPy*`Fo_$`V2exkuQ3o0Z8iM#EkLa@I!4b;jbe(p6XOh|@c0IE7*E=hi~)1h z=W6m@16?q+a1>QktB%`ZpZDPTGNum5M3JS446vQG`i^mRI@#N)oUzyE2GAspQciF9 zB$S%ti7vSiXCz|5IyiAieUHfU^WvzXa@X?+#nQ$0eCVdxOpn-y#P!x zEMq((Q=kCvaTPXn-Y&pU3K#{vYz!y+s5k^nAXiCT~9B`fcvOj5z zF%BA0WON6r3igk{09H^qAVvTH0FVR#odGH&03-lDeJqkkq@p3AINi7akPnGz0^kGa q1NZ;|`wdKgj*aEN)!+dAG4;|5|0M+P9@0x6_O+ji!5@S80002l;&bW% literal 494 zcmV3V8_gedd>lCni6nN`T%T$o#+6@4q zZjq{F{W#YTNdUVQsr(_Z{PL!<-}AV)r_#HZgAAA5`cx!z28KF8c~qe_Fw}}P^zNk~ z!zH&qmGc2C@9n94UpzwoR2AEQ!e_@hUM)!_>d*fK3UX|sbnB0jK**{hw$gG0;I?1I zhGhLYfLkjcqWYsG5VETHNXrp`8=GK5vi=-Mt{C|c)gL6{lNwI4V`{jFcx#lD_XPk} zP&gpA000261pu7^Dlh;r06ujtlt-kZq9HiU0FVxeX#fM_Tq$@d5KfE8R8$?xi4O3h z>;fc;Tf$BpKmh*maKHck2VAQX5BaI%SIcNg2fY!=zaMjOlItCRvP}p&PtD+&TA%wI zHh{hjB?vz}y8jTb14%~;_r6(1vj^q?Y&$u8_s9fy=^&%E>)(WP61;7HTjRTDSXy5- kkK;$oD-p>@dI$fY{IkvzG40Bnxw1V^hac4clnO`y0E2nklK=n! diff --git a/app/src/main/res/mipmap-xxhdpi/ic_close_dialog2.webp b/app/src/main/res/mipmap-xxhdpi/ic_close_dialog2.webp new file mode 100644 index 0000000000000000000000000000000000000000..502541a28cfe99ec48b87b3b868c57ed51a6f464 GIT binary patch literal 1430 zcmV;H1!?+HNk&GF1pok7MM6+kP&il$0000G00014003D406|PpNVo(500E!`|G(Nc zl9QLQySqA-oZ)i7$3U6A5WMxaWo{MEL<^_Dwcv7l>WP`#Yp(G)v`m3zJ5cm^A`kv% zo}crc-qWe4h=Aa>jU-8_IX%0Zt;tcHCukosjg@f z6Sq>xCX?~Ek5zdmqmv`&ex1%iS zf#bSlsvg9_*ssPi-6i6eOJ8RE3dUw%E|HoxtHX@5*0^bFBXsjSi*fI})kIz>8ZpMx zzswT54lek1lyPvz@W^^@ykq>lwM4=e6jj_}TzqHB$yoQX1QRd@k(9!nQ%u+%BQjKz zxrO~6X|d20W|rZRrG{%|##wEc5$*5oY9`$WswAhz08_zM+hoai%yW8^yuuQ^)nCr7 z$`>E#HYhkgOPOlY6qr9si61N!r;_=iI*F1xZvenZl{jb9l&gx`6uAW;eO|l|0KjO4 zrpT831puObf;<8+Ybxt~#Iz`nJz_LO0F2Dnlv&9*fEmA7RXdTP9O5^Cs$Rhu)_be? z?ZO0r%We^h2LSx4b8qW^w9e{6x3kud>$yw+mD2AOp(#l*_*wm97S0o)fU@G;8uPegVb02KwD;X8Rd_hDV2E&xd6 zUJGptSG_q*2~wuF=0%^F{{sJ`h<)*z667aXh%&|ml(@)Mh47A1LWIY{ zQA%I#L}Nn~Q3YN;r%aUcsEg!ppe<2A75ggx_3>zbOWBvho;Zgp%s$GSW*$4^l(o4Y zXHT3%6=p4f_)Z>yBqetgvnl4Q;;aN<9T8#y?aVesR<%`UDJhdjSC*1Hg4+}GR67s= z=;qN4=aB8<7WI^KUL*rNj#!kHvOZ!Tp}hO)yM8Tz)JdlLDVa>^N1B~r(u zbb|6+eI@JzFuKsm)!UIBXX~_Bq5cd&qQj-QOMacA_yt^_aY|>8i5#Ks1Bfhjz-i=~ zCcq}AoS>S70;=B`r@nz=5!{ynz*K!w&72TBocm`e<0YChTksu#NQ2-t&SL|DkCwL}#a%(y~)>U2I0;1*GXo4N8jEACd+2mlx!6_8E<7^t){4LcYI5cR8| zX$rvXaXSrMf1viN{H3mHCLqDv@9f6h>X^Fe$INOcPi!R21QN_@BJyUo?3Brr5y|8j zv!*&FO%#X`WhY~jhHfT1&AVDrB;nbTTi~b?M0R#O`t1U{l$d`p4#p%VHCg=~d%*kd zkj<&-xCJH_R!c2JOJ2^-G3ot8vpMOFKaibu`tgDM>GX9&WIEk3$8>t+psvZbg37bV zv&8gRUvS^rk`hv|VCC8`Pdy)-P9V?DR~2e1%=ajgfjygf>{HhGNW+PNq&Ug`%YKih z(29ziuEhjDe}9wLttmIRKNuQ~yp1Q5S){D^n|~)l!OwKfDMl97weJiBy1LCHJDYu_ zMEihg8dgv^Ag}-c01yoTodGIZ09pV(aVU>Rq@tlAJzsE;4hd-naAbh}0R8|6HNQYV zfPMgefPQ}W_<+cyS+xSos&8AHp0OLDvXaZB#NxRB#u=j-W`g7fxAR1#1;&)VKz-x) z`N!Xfz%#|>r7o;O`{E-=_X+l>rvL!{`<_a_|Mr${JMWiYfB*KBe7r{s;ooCw{}Drc kN{Ju;{iPbYJ@|Vk#IAk63I%Zg|JqZR;#NVrX+wYj0IiV100000 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/ic_company_auth_top_bg.webp b/app/src/main/res/mipmap-xxhdpi/ic_company_auth_top_bg.webp new file mode 100644 index 0000000000000000000000000000000000000000..920961225eaedf08347647afcd5aa57bbb1d98bf GIT binary patch literal 47078 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/ic_empty_message.webp b/app/src/main/res/mipmap-xxhdpi/ic_empty_message.webp new file mode 100644 index 0000000000000000000000000000000000000000..bfc0134ab9cb584fd40b533aae4e724f057b8480 GIT binary patch literal 10390 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/ic_favorite_top_bg.webp b/app/src/main/res/mipmap-xxhdpi/ic_favorite_top_bg.webp new file mode 100644 index 0000000000000000000000000000000000000000..5a0d17f4fe392cf46908e2e216d815ec2d48d9fa GIT binary patch literal 38032 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
*Z{Uewxt8K?Tu+4I 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/ic_pay_checked3.webp b/app/src/main/res/mipmap-xxhdpi/ic_pay_checked3.webp new file mode 100644 index 0000000000000000000000000000000000000000..7ad69aacb57b20070375c39bf382b1f6ed7b3847 GIT binary patch literal 980 zcmV;_11tPeNk&G@0{{S5MM6+kP&il$0000G0000r001=r06|PpNJs$y00DrTZQGOT zH=i6z!UpWX9AUjuvEv&tc#G}-uH!SYc#i+Rtb{jW@)rK}gOYb3HVbpgOcRKrpC*CJ$!H zKL07En3@B{5Ly!z4^Vn$3eJj^w;y zNY08Wy{nzl1y)cvAYK9h05A^#odGH~05$+Vkvf-2rK2ICEEo!Cuo4Mu0KWMEIx;zT zRs4Yd0nvj8d6Vi6a2_JvAUwc+wfebw0RLy`>HSx%PtXI)AK3f$xAr&MDa%2)&v*~E z1xWC$5s7ZXjfmSA!4fCnB45=c?sx-_lVN?3BvVRTxpRbmoe|E3C_^rtkPguP}USpp^yp5fsVCYU$*K0h&+LnyjUj@AYg01x!%xYWw3lcK%`a2Xy$r~MdtqdF zLcyCvWz^yuMP&$SR8tp?^jbp%RM7FIiIMrmGUQ95i;m1=4S%**K;hIcE2YcJS{P0( zi_m0Xb^g|-FLq~M>n;sV^I8WpE<6}X)Jzo*2buUqwJh9eN3%wey*1ENe6n}w?Pcb% zLulZ|8q`@B!mVBay0Y literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/ic_pay_default3.webp b/app/src/main/res/mipmap-xxhdpi/ic_pay_default3.webp new file mode 100644 index 0000000000000000000000000000000000000000..64465709dd7465b4d9da8f4e04b8d93ee6071ae1 GIT binary patch literal 886 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/ic_seat_dialog_icon.webp b/app/src/main/res/mipmap-xxhdpi/ic_seat_dialog_icon.webp new file mode 100644 index 0000000000000000000000000000000000000000..32dc0128510dc0de087363f15c6d0f29640ee687 GIT binary patch literal 1634 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/ic_worning.webp b/app/src/main/res/mipmap-xxhdpi/ic_worning.webp new file mode 100644 index 0000000000000000000000000000000000000000..7287472e9f22d34e5fc9ca3cdbc3128697dd9bca GIT binary patch literal 922 zcmV;L17-YDNk&GJ0{{S5MM6+kP&il$0000G0000l001ul06|PpNb&&y00EHmY};Bl z@3F%17sicgq;jo}old6e{DqMBGBdZ~t&-=mw?cR=Gcz*=Z1oGi&-iVLE`LGt$Q)6SzY#qvCP>1Szd|XL3=%eu3k;B*U zL)Mz~>8nMF2{q45`jp%d=p!OJ33*VwC@V|x;j!@ zwGGV4{l;_n6Q0BWW6lc>_kWZ6(xph4*hnA|4nz(1v2YLOM-2Du6?V_QyS`SDagv?p zgWj1-{l2%md5NOGfD>-8BcKeloW|$SFL0*;;y=;@_y?d4fF6JyARnfEJHM*G0iU+M zg+KrLz(4cB{Ov{tsbk#R}d2^lIFK4IJ zP`98?y(TzOG^KaF)u0=`u^8n$xCDC5T8lwVUt(Bo$Y1~BaP+Pv4_IBG@c+HW>{qq0 z6S7dsXB)1)r#w(WT=U1lF-y&$%MUjmSWw=u%dT^$%UxKO8nG@ImxS-%dl}_!&5rM( z4Gs<3lzf+oHS#L~saZw#TxLF`l_#mngl zN*yR#p;*zm%%JQ>_SGAT8dT#qClYi@*&XL>qP2H7^cf wBBP2V*pACIpJZ{64a`#xfAKpJ{4q+UQ{wUWd`MQbqnqHcXXc-9fklk~0LWCyfdBvi literal 0 HcmV?d00001 diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index ea9e77a..3e82f69 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -12,6 +12,7 @@ #FF000000 #FFFFFF #F7F9FD + #0d4a4f5b @@ -113,4 +114,9 @@ #703D27 #753906 #146847 + #EAEAEA + #F5F5F5 + #DCE4F3 + #F7EBE2 + #FF8518 \ No newline at end of file