新人限时首充接口对接

This commit is contained in:
huangjian
2022-07-29 15:13:49 +08:00
parent be882c861f
commit 9a97d6321d
12 changed files with 85 additions and 38 deletions

View File

@@ -36,6 +36,7 @@ import com.yizhuan.xchat_android_core.pay.bean.PaymentResult
import com.yizhuan.xchat_android_core.pay.event.FirstChargeEvent import com.yizhuan.xchat_android_core.pay.event.FirstChargeEvent
import com.yizhuan.xchat_android_core.pay.event.NewUserChargeEvent import com.yizhuan.xchat_android_core.pay.event.NewUserChargeEvent
import com.yizhuan.xchat_android_core.pay.model.unionpay.UnionPayModel import com.yizhuan.xchat_android_core.pay.model.unionpay.UnionPayModel
import com.yizhuan.xchat_android_core.user.UserModel
import com.yizhuan.xchat_android_core.user.bean.UserInfo import com.yizhuan.xchat_android_core.user.bean.UserInfo
import com.yizhuan.xchat_android_core.utils.CurrentTimeUtils import com.yizhuan.xchat_android_core.utils.CurrentTimeUtils
import com.yizhuan.xchat_android_core.utils.toast import com.yizhuan.xchat_android_core.utils.toast
@@ -94,10 +95,11 @@ class NewUserChargeGiftDialog : BaseViewBindingActivity<DialogNewUserChargeGiftB
.build() .build()
dialogManager.showProgressDialog(this) dialogManager.showProgressDialog(this)
PayModel.get().firstChargeList PayModel.get().newUserChargeInfo
.compose(bindToLifecycle()) .compose(bindToLifecycle())
.subscribe({ .subscribe({
initData(it) initData(it.limitFirstChargeTaskList)
initNewUserCharge(it.limitEndTime)
dialogManager.dismissDialog() dialogManager.dismissDialog()
}, { }, {
it.printStackTrace() it.printStackTrace()
@@ -118,7 +120,6 @@ class NewUserChargeGiftDialog : BaseViewBindingActivity<DialogNewUserChargeGiftB
private fun initData(goodsList: List<FirstChargeGoods>) { private fun initData(goodsList: List<FirstChargeGoods>) {
this.goodsList = goodsList this.goodsList = goodsList
updateCurrGoods(goodsList.getOrNull(0)) updateCurrGoods(goodsList.getOrNull(0))
initNewUserCharge(CurrentTimeUtils.getCurrentTime() + 3 * 60 * 1000)
val planViews = arrayListOf( val planViews = arrayListOf(
binding.rbPlanA, binding.rbPlanA,
binding.rbPlanB, binding.rbPlanB,
@@ -129,7 +130,7 @@ class NewUserChargeGiftDialog : BaseViewBindingActivity<DialogNewUserChargeGiftB
var initChecked = false var initChecked = false
planViews.forEachIndexed { index, button -> planViews.forEachIndexed { index, button ->
goodsList.getOrNull(index)?.let { goodsList.getOrNull(index)?.let {
if (!it.isFinish && !initChecked) { if (!it.isFinishCharge && !initChecked) {
initChecked = true initChecked = true
button.isChecked = true button.isChecked = true
} }
@@ -141,9 +142,10 @@ class NewUserChargeGiftDialog : BaseViewBindingActivity<DialogNewUserChargeGiftB
} }
} }
@SuppressLint("CheckResult") @SuppressLint("CheckResult", "SetTextI18n")
private fun initNewUserCharge(limitChargeEndTime: Long) { private fun initNewUserCharge(limitChargeEndTime: Long) {
val count = (limitChargeEndTime - CurrentTimeUtils.getCurrentTime()) / 1000 / 60 + 1 val count = (limitChargeEndTime - CurrentTimeUtils.getCurrentTime()) / 1000 / 60 + 1
if (count <= 0) return
Observable.intervalRange(0, count, 0, 1, TimeUnit.MINUTES) Observable.intervalRange(0, count, 0, 1, TimeUnit.MINUTES)
.compose(bindUntilEvent(ActivityEvent.DESTROY)) .compose(bindUntilEvent(ActivityEvent.DESTROY))
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
@@ -154,10 +156,11 @@ class NewUserChargeGiftDialog : BaseViewBindingActivity<DialogNewUserChargeGiftB
val residueTime = val residueTime =
limitChargeEndTime - CurrentTimeUtils.getCurrentTime() limitChargeEndTime - CurrentTimeUtils.getCurrentTime()
if (residueTime <= 0) { if (residueTime <= 0) {
UserModel.get().cacheLoginUserInfo?.isShowLimitCharge = false
finish() finish()
} else { } else {
binding.tvTime.text = binding.tvTime.text =
TimeUtil.getElapseTimeForNewUserCharge(residueTime) "限时${TimeUtil.getElapseTimeForNewUserCharge(residueTime)}"
} }
}, { }, {
it.printStackTrace() it.printStackTrace()
@@ -179,7 +182,7 @@ class NewUserChargeGiftDialog : BaseViewBindingActivity<DialogNewUserChargeGiftB
) )
binding.tvTitle.text = builder binding.tvTitle.text = builder
} }
binding.tvCharge.isInvisible = it.isFinish binding.tvCharge.isInvisible = it.isFinishCharge
rewardAdapter.setNewData(it.firstChargeRewardList) rewardAdapter.setNewData(it.firstChargeRewardList)
} }
} }

View File

@@ -177,10 +177,12 @@ class MeFragment : BaseFragment(), View.OnClickListener {
} }
private fun setCenterInfoData(pagerList: List<List<MeCenterInfo>?>) { private fun setCenterInfoData(pagerList: List<List<MeCenterInfo>>?) {
if (ListUtils.isListEmpty(pagerList)) { if (pagerList.isNullOrEmpty()) {
mBinding.llSettingEntrance.isVisible = false
return return
} }
mBinding.llSettingEntrance.isVisible = true
mBinding.magicIndicatorEntrance.initIndicator(pagerList.size) mBinding.magicIndicatorEntrance.initIndicator(pagerList.size)
mBinding.magicIndicatorEntrance.setSelectedPage(0) mBinding.magicIndicatorEntrance.setSelectedPage(0)
mBinding.magicIndicatorEntrance.visibility = mBinding.magicIndicatorEntrance.visibility =
@@ -233,10 +235,12 @@ class MeFragment : BaseFragment(), View.OnClickListener {
}) })
} }
private fun setGameInfoData(pagerList: List<List<GameInfo>?>) { private fun setGameInfoData(pagerList: List<List<GameInfo>>?) {
if (ListUtils.isListEmpty(pagerList)) { if (pagerList.isNullOrEmpty()) {
mBinding.llGame.isVisible = false
return return
} }
mBinding.llGame.isVisible = true
mBinding.magicIndicatorGame.initIndicator(pagerList.size) mBinding.magicIndicatorGame.initIndicator(pagerList.size)
mBinding.magicIndicatorGame.setSelectedPage(0) mBinding.magicIndicatorGame.setSelectedPage(0)
mBinding.magicIndicatorGame.visibility = mBinding.magicIndicatorGame.visibility =
@@ -300,12 +304,7 @@ class MeFragment : BaseFragment(), View.OnClickListener {
override fun onResume() { override fun onResume() {
super.onResume() super.onResume()
initUserDate() initUserDate()
// 每次页面重新可见的时候,如果处于审核状态,都尝试刷新拿取最新信息 requestUpdateUserInfo()
// 不算是一个多好的做法,但是 it works
// 不算频繁,可以接受
if (mUserInfo?.isReview == true) {
requestUpdateUserInfo()
}
} }
private fun initUserDate() { private fun initUserDate() {
@@ -366,9 +365,13 @@ class MeFragment : BaseFragment(), View.OnClickListener {
CurrentTimeUtils.getCurrentTime() + 2 * 60 * 1000 + 30 * 1000 CurrentTimeUtils.getCurrentTime() + 2 * 60 * 1000 + 30 * 1000
} }
if (userinfo.isShowLimitCharge) { if (userinfo.isShowLimitCharge) {
mBinding.flNewUserCharge.isVisible = true
val count = val count =
(userinfo.limitChargeEndTime - CurrentTimeUtils.getCurrentTime()) / 1000 / 60 + 1 (userinfo.limitChargeEndTime - CurrentTimeUtils.getCurrentTime()) / 1000 / 60 + 1
if (count <= 0) {
mBinding.flNewUserCharge.isVisible = false
return
}
mBinding.flNewUserCharge.isVisible = true
newUserDisposable?.dispose() newUserDisposable?.dispose()
newUserDisposable = newUserDisposable =
Observable.intervalRange(0, count, 0, 1, TimeUnit.MINUTES) Observable.intervalRange(0, count, 0, 1, TimeUnit.MINUTES)

View File

@@ -16,7 +16,7 @@ import com.yizhuan.xchat_android_library.utils.ListUtils
class BannerHelper { class BannerHelper {
companion object { companion object {
fun setBanner(rollView: RollPagerView, bannerList: List<BannerInfo>) { fun setBanner(rollView: RollPagerView, bannerList: List<BannerInfo>?) {
if (ListUtils.isListEmpty(bannerList)) { if (ListUtils.isListEmpty(bannerList)) {
rollView.visibility = View.GONE rollView.visibility = View.GONE

View File

@@ -33,7 +33,7 @@
android:layout_marginStart="21dp" android:layout_marginStart="21dp"
android:layout_marginTop="87dp" android:layout_marginTop="87dp"
android:gravity="center" android:gravity="center"
android:text="限时6天23小时9分" tools:text="限时6天23小时9分"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="10sp" android:textSize="10sp"
app:layout_constraintStart_toStartOf="@id/view_bg" app:layout_constraintStart_toStartOf="@id/view_bg"

View File

@@ -14,6 +14,7 @@
<LinearLayout <LinearLayout
android:layout_width="279dp" android:layout_width="279dp"
android:layout_height="268dp" android:layout_height="268dp"
android:layout_gravity="center"
android:background="@drawable/bg_new_user_charge_prize" android:background="@drawable/bg_new_user_charge_prize"
android:gravity="center_horizontal" android:gravity="center_horizontal"
android:orientation="vertical"> android:orientation="vertical">
@@ -22,7 +23,9 @@
android:id="@+id/recycler_view" android:id="@+id/recycler_view"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="94dp" android:layout_height="94dp"
android:layout_marginTop="73dp" /> android:layout_marginStart="20dp"
android:layout_marginTop="73dp"
android:layout_marginEnd="20dp" />
<ImageView <ImageView
android:id="@+id/iv_know" android:id="@+id/iv_know"
@@ -43,7 +46,6 @@
</LinearLayout> </LinearLayout>
</FrameLayout> </FrameLayout>
</layout> </layout>

View File

@@ -543,9 +543,11 @@
android:layout_marginEnd="@dimen/dp_15" android:layout_marginEnd="@dimen/dp_15"
android:background="@drawable/shape_white_8dp_round" android:background="@drawable/shape_white_8dp_round"
android:orientation="vertical" android:orientation="vertical"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/me_item_wallet"> app:layout_constraintTop_toBottomOf="@id/me_item_wallet"
tools:visibility="visible">
<androidx.viewpager.widget.ViewPager <androidx.viewpager.widget.ViewPager
android:id="@+id/view_pager_entrance" android:id="@+id/view_pager_entrance"
@@ -573,10 +575,12 @@
android:layout_marginEnd="@dimen/dp_15" android:layout_marginEnd="@dimen/dp_15"
android:background="@drawable/shape_white_8dp_round" android:background="@drawable/shape_white_8dp_round"
android:orientation="vertical" android:orientation="vertical"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/ll_setting_entrance" app:layout_constraintTop_toBottomOf="@id/ll_setting_entrance"
app:layout_constraintVertical_bias="0"> app:layout_constraintVertical_bias="0"
tools:visibility="visible">
<FrameLayout <FrameLayout
android:layout_width="wrap_content" android:layout_width="wrap_content"

View File

@@ -7,10 +7,10 @@
<View <View
android:id="@+id/view_bg" android:id="@+id/view_bg"
android:layout_width="56dp" android:layout_width="50dp"
android:layout_height="56dp" android:layout_height="50dp"
android:layout_marginStart="8dp" android:layout_marginStart="5dp"
android:layout_marginEnd="8dp" android:layout_marginEnd="5dp"
android:background="@drawable/bg_new_user_charge_reward_item" android:background="@drawable/bg_new_user_charge_reward_item"
android:scaleType="fitCenter" android:scaleType="fitCenter"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
@@ -20,8 +20,8 @@
<ImageView <ImageView
android:id="@+id/iv_pic" android:id="@+id/iv_pic"
android:layout_width="50dp" android:layout_width="45dp"
android:layout_height="50dp" android:layout_height="45dp"
android:scaleType="fitCenter" android:scaleType="fitCenter"
app:layout_constraintBottom_toBottomOf="@id/view_bg" app:layout_constraintBottom_toBottomOf="@id/view_bg"
app:layout_constraintEnd_toEndOf="@id/view_bg" app:layout_constraintEnd_toEndOf="@id/view_bg"
@@ -33,14 +33,13 @@
android:id="@+id/tv_name" android:id="@+id/tv_name"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="6dp" android:layout_marginTop="4dp"
android:ellipsize="end" android:ellipsize="end"
android:gravity="center" android:gravity="center"
android:includeFontPadding="false"
android:lines="1" android:lines="1"
android:maxWidth="70dp" android:maxWidth="55dp"
android:textColor="@color/color_333333" android:textColor="@color/color_333333"
android:textSize="12sp" android:textSize="10sp"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/view_bg" app:layout_constraintTop_toBottomOf="@id/view_bg"

View File

@@ -6,11 +6,10 @@ import com.google.gson.JsonObject;
import com.yizhuan.xchat_android_core.base.IModel; 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.ServiceResult;
import com.yizhuan.xchat_android_core.bean.response.result.ChargeListResult; import com.yizhuan.xchat_android_core.bean.response.result.ChargeListResult;
import com.yizhuan.xchat_android_core.pay.bean.ChargeBean;
import com.yizhuan.xchat_android_core.pay.bean.FirstChargeGoods; 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.WalletInfo; import com.yizhuan.xchat_android_core.pay.bean.WalletInfo;
import com.yizhuan.xchat_android_core.pay.bean.WxPayType; import com.yizhuan.xchat_android_core.pay.bean.WxPayType;
import com.yizhuan.xchat_android_library.coremanager.IBaseCore;
import java.util.List; import java.util.List;
@@ -100,4 +99,6 @@ public interface IPayModel extends IModel {
Single<String> giveGold(long toUid, String goldNum,String password); Single<String> giveGold(long toUid, String goldNum,String password);
Single<List<FirstChargeGoods>> getFirstChargeList(); Single<List<FirstChargeGoods>> getFirstChargeList();
Single<NewUserChargeInfo> getNewUserChargeInfo();
} }

View File

@@ -14,6 +14,7 @@ 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.IMNetEaseManager;
import com.yizhuan.xchat_android_core.manager.RoomEvent; import com.yizhuan.xchat_android_core.manager.RoomEvent;
import com.yizhuan.xchat_android_core.pay.bean.FirstChargeGoods; 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.WalletInfo; import com.yizhuan.xchat_android_core.pay.bean.WalletInfo;
import com.yizhuan.xchat_android_core.pay.bean.WxPayType; import com.yizhuan.xchat_android_core.pay.bean.WxPayType;
import com.yizhuan.xchat_android_core.pay.event.ChargeCustomNotificationEvent; import com.yizhuan.xchat_android_core.pay.event.ChargeCustomNotificationEvent;
@@ -434,6 +435,19 @@ public class PayModel extends BaseModel implements IPayModel {
.compose(RxHelper.handleSchAndExce()); .compose(RxHelper.handleSchAndExce());
} }
/**
* 获取新用户限时首充产品列表
*
* @return
*/
@Override
public Single<NewUserChargeInfo> getNewUserChargeInfo(){
return api.getNewUserChargeInfo()
.compose(RxHelper.handleBeanData())
.compose(RxHelper.handleSchAndExce());
}
public interface Api { public interface Api {
/** /**
@@ -594,6 +608,14 @@ public class PayModel extends BaseModel implements IPayModel {
*/ */
@GET("/first/charge/list") @GET("/first/charge/list")
Single<ServiceResult<List<FirstChargeGoods>>> getFirstChargeList(); Single<ServiceResult<List<FirstChargeGoods>>> getFirstChargeList();
/**
* 获取新用户限时首充产品列表
*
* @return
*/
@GET("/first/charge/limit/list")
Single<ServiceResult<NewUserChargeInfo>> getNewUserChargeInfo();
} }
} }

View File

@@ -14,5 +14,5 @@ public class FirstChargeGoods {
private String chargeProdTitle; private String chargeProdTitle;
private ArrayList<FirstChargeReward> firstChargeRewardList; private ArrayList<FirstChargeReward> firstChargeRewardList;
private String giveMoney; private String giveMoney;
private boolean finish; private boolean finishCharge;
} }

View File

@@ -0,0 +1,13 @@
package com.yizhuan.xchat_android_core.pay.bean;
import java.util.List;
import lombok.Data;
@Data
public class NewUserChargeInfo {
private long limitEndTime;
private List<FirstChargeGoods> limitFirstChargeTaskList;
public NewUserChargeInfo() {
}
}

View File

@@ -313,7 +313,7 @@ public class TimeUtil {
long hour = seconds / (60 * 60) % 24; long hour = seconds / (60 * 60) % 24;
sb.append(hour).append(""); sb.append(hour).append("");
long minute = (seconds - 60 * 60 * hour) / 60; long minute = seconds / 60 % 60;
sb.append(minute).append(""); sb.append(minute).append("");
return sb.toString(); return sb.toString();