新增 充值页 Banner, 个人信息页 "官方代充" 标识
This commit is contained in:
@@ -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()));
|
||||
}
|
||||
}
|
||||
|
@@ -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);
|
||||
|
||||
}
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
||||
|
@@ -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())));
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
||||
|
BIN
app/src/main/res/drawable-xhdpi/img_charge_agent.webp
Normal file
BIN
app/src/main/res/drawable-xhdpi/img_charge_agent.webp
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.5 KiB |
@@ -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"
|
||||
|
@@ -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"
|
||||
|
7
app/src/main/res/layout/item_banner_charge.xml
Normal file
7
app/src/main/res/layout/item_banner_charge.xml
Normal 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" />
|
@@ -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();
|
||||
|
||||
}
|
||||
|
@@ -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订单
|
||||
*
|
||||
|
@@ -0,0 +1,6 @@
|
||||
package com.yizhuan.xchat_android_core.pay.bean
|
||||
|
||||
data class Banner(
|
||||
val bannerUrl: String,
|
||||
val linkUrl: String
|
||||
)
|
@@ -0,0 +1,6 @@
|
||||
package com.yizhuan.xchat_android_core.pay.bean
|
||||
|
||||
data class ChargeBannerInfo(
|
||||
val banners: List<Banner>,
|
||||
val isBanner: Boolean
|
||||
)
|
@@ -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;//时间
|
||||
|
Reference in New Issue
Block a user