新增 充值页 Banner, 个人信息页 "官方代充" 标识

This commit is contained in:
wzq
2023-09-19 17:20:08 +08:00
parent 9a6d31a711
commit a5094d6ead
14 changed files with 135 additions and 17 deletions

View File

@@ -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<IChargeView> {
refreshWalletInfo(false);
}
@SuppressLint("CheckResult")
public void loadBanner() {
payModel.loadChargeBanner()
.compose(bindUntilEvent(PresenterEvent.DESTROY))
.subscribe( list -> getMvpView().onLoadedBanners(list),
error -> ToastUtils.show(error.getMessage()));
}
}

View File

@@ -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<Banner> banners);
}

View File

@@ -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<IChargeView, ChargePresenter
private static final String TAG = "ChargeActivity";
private TextView mTv_gold;
private BannerViewPager<Banner> mVpBanner;
private RecyclerView mRecyclerView;
private TextView mIvCharge;
private CheckBox mTvProtocol;
@@ -95,10 +106,12 @@ public class ChargeActivity extends BaseMvpActivity<IChargeView, ChargePresenter
initBilling();
setProtocol();
getMvpPresenter().loadUserInfo();
getMvpPresenter().loadBanner();
}
private void findView() {
mTv_gold = findViewById(R.id.tv_gold);
mVpBanner = findViewById(R.id.vp_banner);
mRecyclerView = findViewById(R.id.recyclerView);
mIvCharge = findViewById(R.id.tv_charge);
mTvProtocol = findViewById(R.id.tv_protocol);
@@ -358,4 +371,23 @@ public class ChargeActivity extends BaseMvpActivity<IChargeView, ChargePresenter
}
}
@Override
public void onLoadedBanners(List<Banner> banners) {
mVpBanner.setLifecycleRegistry(getLifecycle())
.setAdapter(new BaseBannerAdapter<>() {
@Override
protected void bindData(BaseViewHolder<Banner> 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);
}
}

View File

@@ -321,6 +321,8 @@ public class UserInfoActivity extends BaseBindingActivity<ActivityUserInfoBindin
PraiseModel.get().isPraised(AuthModel.get().getCurrentUid(), userInfo.getUid()).subscribe();
}
mBinding.ivChargeAgent.setVisibility(userInfo.isRechargeUser() ? View.VISIBLE : View.GONE);
VipHelper.loadVipIcon(mBinding.ivVipIcon, userInfo.getUserVipInfoVO());
initVoiceShow(userInfo.getAudioCard());
@@ -336,7 +338,7 @@ public class UserInfoActivity extends BaseBindingActivity<ActivityUserInfoBindin
}
}
private void copyName(){
private void copyName() {
try {
ClipboardManager cm = (ClipboardManager) UserInfoActivity.this.getSystemService(Context.CLIPBOARD_SERVICE);
cm.setPrimaryClip(ClipData.newPlainText("text", String.valueOf(userInfo.getErbanNo())));

View File

@@ -42,6 +42,7 @@ import com.yizhuan.xchat_android_core.manager.AvRoomDataManager;
import com.yizhuan.xchat_android_core.market_verify.MarketVerifyModel;
import com.yizhuan.xchat_android_core.pay.PayModel;
import com.yizhuan.xchat_android_core.pay.bean.WalletInfo;
import com.yizhuan.xchat_android_core.praise.PraiseModel;
import com.yizhuan.xchat_android_core.public_chat_hall.manager.PublicChatHallDataManager;
import com.yizhuan.xchat_android_core.room.bean.RoomInfo;
import com.yizhuan.xchat_android_core.user.UserModel;
@@ -543,4 +544,12 @@ public class JSInterface {
if (mActivity instanceof TarotPayWebViewActivity) mActivity.finish();
}
/**
* 跳转app并且自动关注用户然后打开私聊页面
*/
@JavascriptInterface
public void openAppConcernedChat(String uid) {
PraiseModel.get().praise(Long.parseLong(uid), true).subscribe();
NimP2PMessageActivity.start(context, uid);
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@@ -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" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/ic_charge_diamond"
android:layout_marginEnd="@dimen/dp_4"
app:layout_constraintTop_toTopOf="@+id/tv_title_diamond"
android:src="@mipmap/ic_charge_diamond"
app:layout_constraintBottom_toBottomOf="@+id/tv_title_diamond"
app:layout_constraintEnd_toStartOf="@+id/tv_title_diamond"/>
app:layout_constraintEnd_toStartOf="@+id/tv_title_diamond"
app:layout_constraintTop_toTopOf="@+id/tv_title_diamond" />
<TextView
android:id="@+id/tv_title_diamond"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_10"
android:gravity="center"
android:text="@string/charge_my_diamond"
android:textColor="@color/color_333333"
android:textSize="@dimen/text_size_14"
android:gravity="center"
app:layout_constraintTop_toTopOf="@+id/iv_translate_bg"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/iv_translate_bg" />
<TextView
android:id="@+id/tv_gold"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="12dp"
android:fontFamily="sans-serif-medium"
android:includeFontPadding="false"
android:text="0.0"
android:textColor="@color/color_333333"
android:textSize="@dimen/text_size_30"
android:layout_marginTop="12dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_title_diamond"
@@ -86,6 +86,14 @@
android:background="@drawable/bg_common_top_14_white"
android:orientation="vertical">
<com.zhpan.bannerview.BannerViewPager
android:id="@+id/vp_banner"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_90"
android:layout_marginTop="@dimen/dp_16"
android:layout_marginStart="@dimen/dp_16"
android:layout_marginEnd="@dimen/dp_16" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
@@ -115,15 +123,16 @@
android:id="@+id/tv_protocol_hint"
android:layout_width="180dp"
android:layout_height="wrap_content"
android:layout_marginBottom="2dp"
android:layout_gravity="center_horizontal"
android:layout_marginBottom="2dp"
android:background="@drawable/bg_login_protocol_hint"
android:gravity="center"
android:paddingBottom="6dp"
android:text="@string/charge_agree_with_the_protocol"
android:textColor="@color/white"
android:textSize="@dimen/sp_10"
android:visibility="gone"/>
android:visibility="gone" />
<CheckBox
android:id="@+id/tv_protocol"
android:layout_width="wrap_content"
@@ -131,12 +140,12 @@
android:layout_gravity="center"
android:layout_marginBottom="25dp"
android:button="@null"
android:checked="true"
android:drawableStart="@drawable/selector_login_radio_btn"
android:drawablePadding="@dimen/dp_5"
android:text="@string/text_login_charge_protocol"
android:textColor="@color/color_B3B3C3"
android:textSize="@dimen/dp_11"
android:checked="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"

View File

@@ -323,6 +323,15 @@
</androidx.constraintlayout.widget.ConstraintLayout>
<ImageView
android:id="@+id/iv_charge_agent"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_20"
android:layout_gravity="center_vertical"
android:adjustViewBounds="true"
android:src="@drawable/img_charge_agent"
android:visibility="gone" />
<View
android:layout_width="0dp"
android:layout_height="wrap_content"

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<com.makeramen.roundedimageview.RoundedImageView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/iv_banner"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:riv_corner_radius="@dimen/dp_16" />

View File

@@ -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<PayRecordId> placeOrder(String googlePlayProdId);
Single<List<Banner>> loadChargeBanner();
}

View File

@@ -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<List<Banner>> 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<ServiceResult<NewUserChargeInfo>> getNewUserChargeInfo();
@GET("/charge/guide/banner")
Single<ServiceResult<ChargeBannerInfo>> getChargeBanner();
/**
* 验证googlePlay订单
*

View File

@@ -0,0 +1,6 @@
package com.yizhuan.xchat_android_core.pay.bean
data class Banner(
val bannerUrl: String,
val linkUrl: String
)

View File

@@ -0,0 +1,6 @@
package com.yizhuan.xchat_android_core.pay.bean
data class ChargeBannerInfo(
val banners: List<Banner>,
val isBanner: Boolean
)

View File

@@ -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;//时间