From a5094d6ead67647b1df91843aff9ea6fd303ff55 Mon Sep 17 00:00:00 2001 From: wzq Date: Tue, 19 Sep 2023 17:20:08 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20=E5=85=85=E5=80=BC?= =?UTF-8?q?=E9=A1=B5=20Banner,=20=E4=B8=AA=E4=BA=BA=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E9=A1=B5=20"=E5=AE=98=E6=96=B9=E4=BB=A3=E5=85=85"=20=E6=A0=87?= =?UTF-8?q?=E8=AF=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../erban/pay/presenter/ChargePresenter.java | 16 +++++++-- .../yizhuan/erban/pay/view/IChargeView.java | 5 +++ .../yizhuan/erban/ui/pay/ChargeActivity.java | 32 +++++++++++++++++ .../ui/user/activity/UserInfoActivity.java | 4 ++- .../yizhuan/erban/ui/webview/JSInterface.java | 9 +++++ .../res/drawable-xhdpi/img_charge_agent.webp | Bin 0 -> 2532 bytes app/src/main/res/layout/activity_charge.xml | 33 +++++++++++------- .../main/res/layout/activity_user_info.xml | 9 +++++ .../main/res/layout/item_banner_charge.xml | 7 ++++ .../xchat_android_core/pay/IPayModel.java | 3 ++ .../xchat_android_core/pay/PayModel.java | 13 +++++++ .../xchat_android_core/pay/bean/Banner.kt | 6 ++++ .../pay/bean/ChargeBannerInfo.kt | 6 ++++ .../user/bean/UserInfo.java | 9 ++++- 14 files changed, 135 insertions(+), 17 deletions(-) create mode 100644 app/src/main/res/drawable-xhdpi/img_charge_agent.webp create mode 100644 app/src/main/res/layout/item_banner_charge.xml create mode 100644 core/src/main/java/com/yizhuan/xchat_android_core/pay/bean/Banner.kt create mode 100644 core/src/main/java/com/yizhuan/xchat_android_core/pay/bean/ChargeBannerInfo.kt diff --git a/app/src/main/java/com/yizhuan/erban/pay/presenter/ChargePresenter.java b/app/src/main/java/com/yizhuan/erban/pay/presenter/ChargePresenter.java index fa374a662..cc983c0ca 100644 --- a/app/src/main/java/com/yizhuan/erban/pay/presenter/ChargePresenter.java +++ b/app/src/main/java/com/yizhuan/erban/pay/presenter/ChargePresenter.java @@ -1,7 +1,13 @@ package com.yizhuan.erban.pay.presenter; +import android.annotation.SuppressLint; + +import com.hjq.toast.ToastUtils; import com.yizhuan.erban.pay.view.IChargeView; import com.yizhuan.xchat_android_core.pay.PayModel; +import com.yizhuan.xchat_android_library.base.PresenterEvent; + +import io.reactivex.schedulers.Schedulers; /** * Created by MadisonRong on 05/01/2018. @@ -21,7 +27,11 @@ public class ChargePresenter extends PayPresenter { refreshWalletInfo(false); } - - - + @SuppressLint("CheckResult") + public void loadBanner() { + payModel.loadChargeBanner() + .compose(bindUntilEvent(PresenterEvent.DESTROY)) + .subscribe( list -> getMvpView().onLoadedBanners(list), + error -> ToastUtils.show(error.getMessage())); + } } diff --git a/app/src/main/java/com/yizhuan/erban/pay/view/IChargeView.java b/app/src/main/java/com/yizhuan/erban/pay/view/IChargeView.java index ac266acbb..c87353e3c 100644 --- a/app/src/main/java/com/yizhuan/erban/pay/view/IChargeView.java +++ b/app/src/main/java/com/yizhuan/erban/pay/view/IChargeView.java @@ -1,11 +1,16 @@ package com.yizhuan.erban.pay.view; +import com.yizhuan.xchat_android_core.pay.bean.Banner; + +import java.util.List; + /** * Created by MadisonRong on 05/01/2018. */ public interface IChargeView extends IPayView { + void onLoadedBanners(List banners); } diff --git a/app/src/main/java/com/yizhuan/erban/ui/pay/ChargeActivity.java b/app/src/main/java/com/yizhuan/erban/ui/pay/ChargeActivity.java index a2312a6e0..821591383 100644 --- a/app/src/main/java/com/yizhuan/erban/ui/pay/ChargeActivity.java +++ b/app/src/main/java/com/yizhuan/erban/ui/pay/ChargeActivity.java @@ -13,6 +13,7 @@ import android.text.style.ForegroundColorSpan; import android.util.Log; import android.view.View; import android.widget.CheckBox; +import android.widget.ImageView; import android.widget.TextView; import androidx.annotation.NonNull; @@ -27,7 +28,9 @@ import com.appsflyer.AFInAppEventParameterName; import com.appsflyer.AFInAppEventType; import com.appsflyer.AppsFlyerLib; import com.netease.nim.uikit.StatusBarUtil; +import com.netease.nim.uikit.support.glide.ImageLoaderKit; import com.yizhuan.erban.R; +import com.yizhuan.erban.UIHelper; import com.yizhuan.erban.application.IReportConstants; import com.yizhuan.erban.application.ReportManager; import com.yizhuan.erban.base.BaseMvpActivity; @@ -35,17 +38,24 @@ import com.yizhuan.erban.common.widget.OriginalDrawStatusClickSpan; import com.yizhuan.erban.pay.presenter.ChargePresenter; import com.yizhuan.erban.pay.view.IChargeView; import com.yizhuan.erban.ui.setting.ModifyPwdActivity; +import com.yizhuan.erban.ui.utils.ImageLoadKt; +import com.yizhuan.erban.ui.utils.ImageLoadUtils; +import com.yizhuan.erban.ui.utils.ImageLoadUtilsV2; import com.yizhuan.erban.ui.webview.CommonWebViewActivity; import com.yizhuan.xchat_android_core.DemoCache; import com.yizhuan.xchat_android_core.UriProvider; import com.yizhuan.xchat_android_core.auth.AuthModel; import com.yizhuan.xchat_android_core.pay.PayModel; +import com.yizhuan.xchat_android_core.pay.bean.Banner; import com.yizhuan.xchat_android_core.pay.bean.ChargeBean; import com.yizhuan.xchat_android_core.pay.bean.WalletInfo; import com.yizhuan.xchat_android_core.utils.net.IgnoreException; import com.yizhuan.xchat_android_library.base.factory.CreatePresenter; import com.yizhuan.xchat_android_library.utils.FormatUtils; import com.yizhuan.xchat_android_library.utils.SingleToastUtil; +import com.zhpan.bannerview.BannerViewPager; +import com.zhpan.bannerview.BaseBannerAdapter; +import com.zhpan.bannerview.BaseViewHolder; import org.greenrobot.eventbus.EventBus; @@ -64,6 +74,7 @@ public class ChargeActivity extends BaseMvpActivity mVpBanner; private RecyclerView mRecyclerView; private TextView mIvCharge; private CheckBox mTvProtocol; @@ -95,10 +106,12 @@ public class ChargeActivity extends BaseMvpActivity banners) { + mVpBanner.setLifecycleRegistry(getLifecycle()) + .setAdapter(new BaseBannerAdapter<>() { + @Override + protected void bindData(BaseViewHolder holder, Banner data, int position, int pageSize) { + ImageView ivBanner = holder.findViewById(R.id.iv_banner); + ImageLoadUtilsV2.loadImage(ivBanner, data.getBannerUrl()); + ivBanner.setOnClickListener(v -> + CommonWebViewActivity.start(ChargeActivity.this, data.getLinkUrl())); + } + + @Override + public int getLayoutId(int viewType) { + return R.layout.item_banner_charge; + } + }) + .create(banners); + } } diff --git a/app/src/main/java/com/yizhuan/erban/ui/user/activity/UserInfoActivity.java b/app/src/main/java/com/yizhuan/erban/ui/user/activity/UserInfoActivity.java index 1afc48165..bc95b8292 100644 --- a/app/src/main/java/com/yizhuan/erban/ui/user/activity/UserInfoActivity.java +++ b/app/src/main/java/com/yizhuan/erban/ui/user/activity/UserInfoActivity.java @@ -321,6 +321,8 @@ public class UserInfoActivity extends BaseBindingActivity<|BMM6+kP&iD_2><{uYrqH){|7meBt=qYRSoRH|CB)em0@Nc z=&C$W0&-+aikzyhhGoeD-E@}!Hpl?7fSDTV|AJWCZW`%Xii68o(YC%VYy->~GDuKt zTU)m5@6Rr{MNd8iC&DBc0%IUj-K{~Sx+HgZ*Y+)n0D;2)6DW7NknYl5cGVU{h!6py z0EjCDAmsc>_)?G$a$w5RjM7s}kfIzlQSJm@GRQ(gO)lG^gv)dc9*N3{Km8m*$iIa(<_ zc9bS_n3SvwhgLvS%*?+hab87!Wna^zM+H|yWJiP9-I_4P)LIlf8OfHRWg2;EMNv_N zON+U%il9Icf_xAQLQv9YA43R+R;4mPbr zEkSG$p|CMt;1T> zBlD`>|28)I*^kF~hVA|RC&Ee0y8Si!yU&XmH_!Hlm3NnZIHgaOzdf()o7Ifq_;_wh zPHo8~bTaVRfMcF|>I3&nmv(EuzH##K@9WLv@3re2vF)Shw@ubpsVu6_PyRKmhMPy0STvi+-m#yArY5n)Jq|Nlj8MBQ5wh)igL^H&X)37ey0bPVa~DK+PTC~u3znV3XDRI%iNmAn+5@6`!Y1KI_BpyZ+DdblDs~G?=PbN zjNG=3M9n_undS|OzYB5Ov0m|Egz_ERO=iosjk)FT{n+}>?K+d$U&;HO3Gr*!tbbpJ zx@YPD(vvx*(Cx`H7gUydiG&|kttJ|J|K^{m?KStO6jZuF{hAmJdi<3hJO)rgzTnnP z8-exK)-m&1vo!!#16akdv_@<#ud}wEdE;hvL{~^BwJB~7RTiZ5iam%WE%g0<-s47T z$v0)U?;kwGhxrJO9^>PD;v_oJ!R>8f_!L<>u%DR$NrvL%7PJBp?gF~GrRLfZtddC66KCyax+8+;D%|I8svSclXOV}S-xDQ8S4nmCqz`z11pYwO)c z2=lP69XKW^-p(W8i{J;gzZUT5#} zn-)hcI_*dTa~HK*bUT^DkUcC;Vq0OX7Aj?HR$BUI+S(UrZXb=-f`laNJHZvV?hEH8 z7-x~qy|aG7Y^iw`wP<@nfmYw6B8qGWnp^sUTl+>MP-siElCyu{597>+V{JhPp}kOS z?At5(l)d{}1O86aY4mo3`_bFdZv$MX$d+d?nm4tpX2`lmW85D>{yVFUoSO#j{3o~< zz;}dSv3K{begE+zz?>pz!4Lq$u!nvMo+D^aTs!<-$j}OHC++wx@jdMx)-0B>hcm14 z{3e*UaVpBnOxwIQ*fMT(d!eiBd)N}3{(-v(?>{BmYMBH%q)GDk<>mg(`EE_b@C z`y7>*0H6e*KB`1!KG&t7_@V?0(Y9z6wY2sI|JsD{W7=H4uZgS)DFw{k8ZAy)%2Oq& z=1?T$EfrEyuucWFB{fGY8jF?lo&FzaZt5Mg3Ki>rR*U8_rU*s3mw#s)5f`OWPMb1G zvXEBZ*90UwQ(W$Qrh3(qZou`}CDP+F0H&E6Y3Wx&DIGd@iBQfJpK6&JmFIP!G?AnE z6~Fn!k{G*M@m%1Y+Z;q(bbC6RyQQ_Q{nr5RYa~i?+LnvrQCd+Ha$_Qv4y3tEmDD-0 zVL9~7@Pw?TKGdmxDa#yPK>)}hYcH4;rdTgjIw&cTVxptkS_7<+o|)yUst4e3=B;3l z5ZwNfs(%Tspi8R1qdl#YHLoUdc9{xumBM0{FfkJ!Q>%s?5WPf|DPCS8H&3a^DXB~Z z7%oyp%BhltOiZZ*>bE(C0r3%npUI~4{tj+W5u(2XK$g5INoy3Sa6Jah>a;L6nowt` z{-cYz_9c0AP)$f{O5d>pOgo!9&`NDn#{Zti7v-gz6H1vwrsa2-Cjel~z(3Q9Si|g+ zNl6!}lu8e=I!}6{3z;#hU!MW+j8+ug6vFH@WOUxj=84CwDcma=- zz)hXL_lp4Y-~!diZ|iUcoqfK+OO16vtr*Jq2ZwG*+^>Ez!rG=+vNp}D9f2=%(Ns7+ zp9g@fDVk?NM7@-q%XE+C<}PQMqc?L|W|C)ICqvKI+Ni!3z~jQK`-g8_mo(1s)oxab z_*PtK7QppnM_@eG(0p1${9S1hg5xtB6b#*raiV)9hU>GypSNb?%v2|xQt~bkQ9^Bt^=*D%i`~10!4@&qEkEA@z4*)!5<^+%lbZ}ru3oD^vFCZ5_ zPb7dxLJt6%D|x%f-q9zIA3M5x4-V|VEm;b4ByjkQzi4EjcHtt}OasTAR%n}P05X&& zrhz_(6?z`z-yZb*_|d%w?y#D46-NRF^PXLO@}XmU_Z`CidjW$!HU^s1!GWr}g`pj@ z(cZ)WtgzkiX1%c(=uI|;_y!KqIsEcXhLP1cpeK7UI}oV^FoOuNnd_Sx?Ac+kU+Xm3 uJJ0qZCwM;mW|M}CZp(W5;^lM2`yW^(Bm3ElmqYLEf8Re?v{?HT1ONcb4Cp2R literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/activity_charge.xml b/app/src/main/res/layout/activity_charge.xml index e6795761e..365c31a50 100644 --- a/app/src/main/res/layout/activity_charge.xml +++ b/app/src/main/res/layout/activity_charge.xml @@ -31,42 +31,42 @@ android:layout_marginBottom="@dimen/dp_10" android:background="@drawable/bg_common_translate_rectangle" app:layout_constraintBottom_toBottomOf="@+id/iv_bg" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintEnd_toEndOf="parent"/> + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" /> + app:layout_constraintEnd_toStartOf="@+id/tv_title_diamond" + app:layout_constraintTop_toTopOf="@+id/tv_title_diamond" /> + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="@+id/iv_translate_bg" /> + + + android:visibility="gone" /> + + + + diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/pay/IPayModel.java b/core/src/main/java/com/yizhuan/xchat_android_core/pay/IPayModel.java index 887907dd2..bf10eb8a9 100644 --- a/core/src/main/java/com/yizhuan/xchat_android_core/pay/IPayModel.java +++ b/core/src/main/java/com/yizhuan/xchat_android_core/pay/IPayModel.java @@ -6,6 +6,7 @@ import com.google.gson.JsonObject; import com.yizhuan.xchat_android_core.base.IModel; import com.yizhuan.xchat_android_core.bean.response.ServiceResult; import com.yizhuan.xchat_android_core.bean.response.result.ChargeListResult; +import com.yizhuan.xchat_android_core.pay.bean.Banner; import com.yizhuan.xchat_android_core.pay.bean.FirstChargeGoods; import com.yizhuan.xchat_android_core.pay.bean.NewUserChargeInfo; import com.yizhuan.xchat_android_core.pay.bean.PayRecordId; @@ -113,4 +114,6 @@ public interface IPayModel extends IModel { Single placeOrder(String googlePlayProdId); + Single> loadChargeBanner(); + } diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/pay/PayModel.java b/core/src/main/java/com/yizhuan/xchat_android_core/pay/PayModel.java index bc979d822..d07268f8e 100644 --- a/core/src/main/java/com/yizhuan/xchat_android_core/pay/PayModel.java +++ b/core/src/main/java/com/yizhuan/xchat_android_core/pay/PayModel.java @@ -15,6 +15,8 @@ import com.yizhuan.xchat_android_core.bean.response.result.ChargeListResult; import com.yizhuan.xchat_android_core.bean.response.result.WalletInfoResult; import com.yizhuan.xchat_android_core.manager.IMNetEaseManager; import com.yizhuan.xchat_android_core.manager.RoomEvent; +import com.yizhuan.xchat_android_core.pay.bean.Banner; +import com.yizhuan.xchat_android_core.pay.bean.ChargeBannerInfo; import com.yizhuan.xchat_android_core.pay.bean.FirstChargeGoods; import com.yizhuan.xchat_android_core.pay.bean.NewUserChargeInfo; import com.yizhuan.xchat_android_core.pay.bean.PayRecordId; @@ -470,6 +472,14 @@ public class PayModel extends BaseModel implements IPayModel { .compose(RxHelper.handleSchedulers()); } + @Override + public Single> loadChargeBanner() { + return api.getChargeBanner() + .compose(RxHelper.handleBeanData()) + .compose(RxHelper.handleSchedulers()) + .map(ChargeBannerInfo::getBanners); + } + public interface Api { @@ -634,6 +644,9 @@ public class PayModel extends BaseModel implements IPayModel { @GET("/first/charge/limit/list") Single> getNewUserChargeInfo(); + @GET("/charge/guide/banner") + Single> getChargeBanner(); + /** * 验证googlePlay订单 * diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/pay/bean/Banner.kt b/core/src/main/java/com/yizhuan/xchat_android_core/pay/bean/Banner.kt new file mode 100644 index 000000000..108ea6d05 --- /dev/null +++ b/core/src/main/java/com/yizhuan/xchat_android_core/pay/bean/Banner.kt @@ -0,0 +1,6 @@ +package com.yizhuan.xchat_android_core.pay.bean + +data class Banner( + val bannerUrl: String, + val linkUrl: String +) \ No newline at end of file diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/pay/bean/ChargeBannerInfo.kt b/core/src/main/java/com/yizhuan/xchat_android_core/pay/bean/ChargeBannerInfo.kt new file mode 100644 index 000000000..86692e30f --- /dev/null +++ b/core/src/main/java/com/yizhuan/xchat_android_core/pay/bean/ChargeBannerInfo.kt @@ -0,0 +1,6 @@ +package com.yizhuan.xchat_android_core.pay.bean + +data class ChargeBannerInfo( + val banners: List, + val isBanner: Boolean +) \ No newline at end of file diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/user/bean/UserInfo.java b/core/src/main/java/com/yizhuan/xchat_android_core/user/bean/UserInfo.java index 1b5a08bd3..044869e82 100644 --- a/core/src/main/java/com/yizhuan/xchat_android_core/user/bean/UserInfo.java +++ b/core/src/main/java/com/yizhuan/xchat_android_core/user/bean/UserInfo.java @@ -194,6 +194,13 @@ public class UserInfo implements Serializable { * 位置相关 */ private Location userExpand; + + /** + * 是否是官方代充用户 + */ + @Getter + private boolean isRechargeUser; + /** * 0-普通用户 1-超管用户 */ @@ -835,7 +842,7 @@ public class UserInfo implements Serializable { * 声音签名 */ @Data - public static class SoundBean implements Serializable{ + public static class SoundBean implements Serializable { private long uid; private String audioUrl;//音频七牛云url private Integer second;//时间