[Modify]贵族优化
This commit is contained in:
@@ -38,7 +38,7 @@ import com.yizhuan.erban.ui.webview.CommonWebViewActivity
|
||||
import com.yizhuan.erban.ui.widget.magicindicator.buildins.commonnavigator.CommonNavigator
|
||||
import com.yizhuan.erban.vip.adapter.VipAuthAdapter
|
||||
import com.yizhuan.erban.vip.adapter.VipMagicIndicatorAdapter
|
||||
import com.yizhuan.erban.vip.dialog.PaymentDialog
|
||||
import com.yizhuan.erban.vip.dialog.SelectPayTypeDialog
|
||||
import com.yizhuan.erban.vip.dialog.VipAuthDetailsDialog
|
||||
import com.yizhuan.erban.vip.dialog.VipRemainTimeDialog
|
||||
import com.yizhuan.xchat_android_core.Constants
|
||||
@@ -79,7 +79,7 @@ class VipMainActivity : BaseViewBindingActivity<ActivityVipMainBinding>(),
|
||||
private lateinit var rvDelegate: RVDelegate<VipAuthInfo>
|
||||
private val vipViewModel: VipViewModel by viewModels()
|
||||
private var billingManager: BillingManager? = null
|
||||
private var bean: ChargeBean? = null//google
|
||||
private var googleChargeBean: ChargeBean? = null//google
|
||||
private var chargeInfo: ChargeBean? = null//official
|
||||
|
||||
@SuppressLint("SetTextI18n")
|
||||
@@ -230,31 +230,41 @@ class VipMainActivity : BaseViewBindingActivity<ActivityVipMainBinding>(),
|
||||
}
|
||||
|
||||
binding.tvOpenVip.setOnClickListener {
|
||||
PaymentDialog().show(this)
|
||||
// if (AppMetaDataUtil.getChannelID().equals(Constants.GOOGLE)) {
|
||||
// bean?.let { charge ->
|
||||
// //点击充值
|
||||
// val map = java.util.HashMap<String, Any>(3)
|
||||
// map[IReportConstants.MONEY] = charge.money
|
||||
// map[IReportConstants.MODULE] = IReportConstants.PEKO_PAY
|
||||
// ReportManager.get().reportEvent(IReportConstants.PAY_CLICK, map)
|
||||
// buyProduct(charge.skuDetails)
|
||||
// }
|
||||
// } else {
|
||||
// chargeInfo?.let { charge ->
|
||||
// //点击充值
|
||||
// val map = java.util.HashMap<String, Any>(3)
|
||||
// map[IReportConstants.MONEY] = charge.money
|
||||
// map[IReportConstants.MODULE] = IReportConstants.PEKO_PAY
|
||||
// ReportManager.get().reportEvent(IReportConstants.PAY_CLICK, map)
|
||||
// CommonWebViewActivity.start(
|
||||
// context,
|
||||
// UriProvider.getOfficialPay(5, DeviceUtil.getDeviceId(context))
|
||||
// )
|
||||
// }
|
||||
// }
|
||||
if (AppMetaDataUtil.getChannelID().equals(Constants.GOOGLE)) {
|
||||
if ((googleChargeBean?.skuDetails?.price ?: "0") == "0") {
|
||||
toast(getString(R.string.Recharge_failure))
|
||||
return@setOnClickListener
|
||||
}
|
||||
SelectPayTypeDialog.newInstance(
|
||||
googleChargeBean?.skuDetails?.price ?: "0",
|
||||
true,
|
||||
googleChargeBean?.getMoney() ?: 0.0
|
||||
)
|
||||
.apply {
|
||||
setOnDiamondChargeClick {
|
||||
vipViewModel.openVipWithDiamond()
|
||||
}
|
||||
setOnGoogleChargeClick {
|
||||
googleChargeBean?.let { charge ->
|
||||
buyProduct(charge.skuDetails)
|
||||
}
|
||||
}
|
||||
}
|
||||
.show(context)
|
||||
} else {
|
||||
SelectPayTypeDialog.newInstance(
|
||||
((chargeInfo?.getMoney() ?: 0.0) * 1000).toInt().toString(),
|
||||
false,
|
||||
chargeInfo?.getMoney() ?: 0.0
|
||||
)
|
||||
.apply {
|
||||
setOnDiamondChargeClick {
|
||||
vipViewModel.openVipWithDiamond()
|
||||
}
|
||||
}
|
||||
.show(context)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@SuppressLint("CheckResult", "SetTextI18n")
|
||||
@@ -380,9 +390,9 @@ class VipMainActivity : BaseViewBindingActivity<ActivityVipMainBinding>(),
|
||||
}
|
||||
}
|
||||
if (showChargeList.size > 0) {
|
||||
bean = showChargeList[0]
|
||||
googleChargeBean = showChargeList[0]
|
||||
binding.tvOpenVip.text = "${
|
||||
bean?.getMoney()
|
||||
googleChargeBean?.getMoney()
|
||||
}${getString(R.string.me_immediately_become_a_Peko_nobleman)}"
|
||||
}
|
||||
}
|
||||
@@ -414,8 +424,8 @@ class VipMainActivity : BaseViewBindingActivity<ActivityVipMainBinding>(),
|
||||
//L.i("token=" + token);
|
||||
billingManager?.consumeAsync(token)
|
||||
var skuDetails: SkuDetails? = null
|
||||
if (bean?.getChargeProdId() == purchase.skus[0]) {
|
||||
skuDetails = bean?.skuDetails
|
||||
if (googleChargeBean?.getChargeProdId() == purchase.skus[0]) {
|
||||
skuDetails = googleChargeBean?.skuDetails
|
||||
}
|
||||
if (skuDetails != null) {
|
||||
val eventValue: MutableMap<String, Any> =
|
||||
@@ -488,7 +498,7 @@ class VipMainActivity : BaseViewBindingActivity<ActivityVipMainBinding>(),
|
||||
super.onDestroy()
|
||||
EventBus.getDefault().unregister(this)
|
||||
billingManager?.destroy()
|
||||
bean = null
|
||||
googleChargeBean = null
|
||||
chargeInfo = null
|
||||
}
|
||||
|
||||
|
@@ -165,4 +165,11 @@ class VipViewModel : BaseViewModel() {
|
||||
_currVipInfoLiveData.value = vipInfosLiveData.value?.getOrNull(position)
|
||||
_pageLiveData.value = position
|
||||
}
|
||||
|
||||
fun openVipWithDiamond() {
|
||||
safeLaunch(true) {
|
||||
VipModel.openVipWithDiamond()
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,135 @@
|
||||
package com.yizhuan.erban.vip.dialog
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.res.ColorStateList
|
||||
import android.os.Bundle
|
||||
import android.text.style.TextAppearanceSpan
|
||||
import android.view.Gravity
|
||||
import android.view.View
|
||||
import android.view.WindowManager
|
||||
import androidx.core.graphics.toColorInt
|
||||
import com.netease.nim.uikit.common.util.sys.ScreenUtil
|
||||
import com.yizhuan.erban.base.BaseDialog
|
||||
import com.yizhuan.erban.databinding.DialogSelectPayTypeBinding
|
||||
import com.yizhuan.erban.utils.SpannableBuilder
|
||||
import com.yizhuan.xchat_android_core.pay.PayModel
|
||||
import com.yizhuan.xchat_android_core.pay.bean.WalletInfo
|
||||
import com.yizhuan.xchat_android_library.utils.FormatUtils
|
||||
import com.yizhuan.xchat_android_library.utils.SingleToastUtil
|
||||
|
||||
/**
|
||||
* 充值方式选择弹窗
|
||||
*/
|
||||
class SelectPayTypeDialog : BaseDialog<DialogSelectPayTypeBinding>() {
|
||||
|
||||
private val descText by lazy { requireArguments().getString("descText", "") }
|
||||
private val money by lazy { requireArguments().getDouble("money", 0.0) }
|
||||
private val showGoogleCharge by lazy {
|
||||
requireArguments().getBoolean(
|
||||
"showGoogleCharge",
|
||||
false
|
||||
)
|
||||
}
|
||||
|
||||
private var onDiamondChargeClick: (() -> Unit)? = null
|
||||
|
||||
private var onGoogleChargeClick: (() -> Unit)? = null
|
||||
|
||||
companion object {
|
||||
@JvmStatic
|
||||
fun newInstance(
|
||||
descText: String,
|
||||
showGoogleCharge: Boolean = false,
|
||||
money: Double = 0.0
|
||||
): SelectPayTypeDialog {
|
||||
return SelectPayTypeDialog().apply {
|
||||
arguments = Bundle().apply {
|
||||
putString("descText", descText)
|
||||
putBoolean("showGoogleCharge", showGoogleCharge)
|
||||
putDouble("money", money)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun setOnDiamondChargeClick(onDiamondChargeClick: (() -> Unit)) {
|
||||
this.onDiamondChargeClick = onDiamondChargeClick
|
||||
}
|
||||
|
||||
fun setOnGoogleChargeClick(onGoogleChargeClick: (() -> Unit)) {
|
||||
this.onGoogleChargeClick = onGoogleChargeClick
|
||||
}
|
||||
|
||||
override fun onStart() {
|
||||
width = WindowManager.LayoutParams.MATCH_PARENT
|
||||
gravity = Gravity.BOTTOM
|
||||
super.onStart()
|
||||
}
|
||||
|
||||
@SuppressLint("CheckResult")
|
||||
override fun init() {
|
||||
PayModel.get().walletInfo
|
||||
.compose(bindToLifecycle())
|
||||
.subscribe({
|
||||
setWalletData(it)
|
||||
}, {
|
||||
SingleToastUtil.showToast(it.message)
|
||||
it.printStackTrace()
|
||||
})
|
||||
|
||||
binding.tvConfirmPay.setOnClickListener {
|
||||
if (binding.rbDiamond.isChecked) {
|
||||
onDiamondChargeClick?.invoke()
|
||||
} else {
|
||||
onGoogleChargeClick?.invoke()
|
||||
}
|
||||
dismissAllowingStateLoss()
|
||||
}
|
||||
|
||||
if (showGoogleCharge) {
|
||||
binding.rbGoogle.visibility = View.VISIBLE
|
||||
binding.rg.setOnCheckedChangeListener { _, _ ->
|
||||
if (binding.rbDiamond.isChecked) {
|
||||
binding.tvDiamondNum.text = (money * 1000).toInt().toString()
|
||||
binding.tvDiamond.visibility = View.VISIBLE
|
||||
} else {
|
||||
binding.tvDiamondNum.text = descText
|
||||
binding.tvDiamond.visibility = View.GONE
|
||||
}
|
||||
}
|
||||
} else {
|
||||
binding.rbGoogle.visibility = View.GONE
|
||||
binding.tvDiamondNum.text = descText
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* defaultPay 1:默认支付宝,2:默认微信
|
||||
*/
|
||||
private fun setWalletData(walletInfo: WalletInfo) {
|
||||
val states = arrayOf(intArrayOf(android.R.attr.state_enabled))
|
||||
val colors = intArrayOf("#8A8CAB".toColorInt())
|
||||
binding.rbDiamond.text = SpannableBuilder()
|
||||
.append("钻石支付")
|
||||
.append(
|
||||
"(${FormatUtils.formatBigInteger(walletInfo.diamondNum)}钻石)",
|
||||
TextAppearanceSpan(
|
||||
null,
|
||||
0,
|
||||
ScreenUtil.sp2px(10f),
|
||||
ColorStateList(states, colors),
|
||||
null
|
||||
)
|
||||
)
|
||||
.build()
|
||||
val defaultDiamond = money != 0.0 && money * 1000 <= walletInfo.diamondNum
|
||||
if (showGoogleCharge) {
|
||||
binding.rbGoogle.visibility = View.VISIBLE
|
||||
binding.rbGoogle.isChecked = !defaultDiamond
|
||||
} else {
|
||||
binding.rbGoogle.visibility = View.GONE
|
||||
}
|
||||
binding.rbDiamond.isChecked = defaultDiamond
|
||||
}
|
||||
|
||||
}
|
10
app/src/main/res/drawable/shape_white_bottom_28dp.xml
Normal file
10
app/src/main/res/drawable/shape_white_bottom_28dp.xml
Normal file
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
|
||||
<solid android:color="@color/white" />
|
||||
|
||||
<corners
|
||||
android:topLeftRadius="@dimen/dp_28"
|
||||
android:topRightRadius="@dimen/dp_28" />
|
||||
</shape>
|
108
app/src/main/res/layout/dialog_select_pay_type.xml
Normal file
108
app/src/main/res/layout/dialog_select_pay_type.xml
Normal file
@@ -0,0 +1,108 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/shape_white_bottom_28dp">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/tvPay"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_24"
|
||||
android:includeFontPadding="false"
|
||||
android:text="@string/pay"
|
||||
android:textColor="@color/color_1F1B4F"
|
||||
android:textSize="@dimen/sp_18"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/tvDiamondNum"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_30"
|
||||
android:includeFontPadding="false"
|
||||
android:text="0"
|
||||
android:textColor="@color/color_9168FA"
|
||||
android:textSize="28sp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tvPay" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/tvDiamond"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_6"
|
||||
android:includeFontPadding="false"
|
||||
android:text="@string/diamond"
|
||||
android:textColor="@color/color_8A8CAB"
|
||||
android:textSize="@dimen/sp_14"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tvDiamondNum" />
|
||||
|
||||
<RadioGroup
|
||||
android:id="@+id/rg"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="30dp"
|
||||
android:orientation="vertical"
|
||||
android:paddingStart="@dimen/dp_40"
|
||||
android:paddingEnd="@dimen/dp_40"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tvDiamond">
|
||||
|
||||
<RadioButton
|
||||
android:id="@+id/rb_diamond"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="50dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:background="@null"
|
||||
android:button="@null"
|
||||
android:drawableStart="@drawable/ic_diamond"
|
||||
android:drawableEnd="@drawable/selector_select_pay"
|
||||
android:drawablePadding="10dp"
|
||||
android:text="@string/diamond_pay"
|
||||
android:textColor="@color/color_1F1B4F"
|
||||
android:textSize="@dimen/sp_16"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<RadioButton
|
||||
android:id="@+id/rb_google"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="50dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:background="@null"
|
||||
android:button="@null"
|
||||
android:drawableStart="@drawable/ic_google"
|
||||
android:drawableEnd="@drawable/selector_select_pay"
|
||||
android:drawablePadding="10dp"
|
||||
android:text="@string/google_pay"
|
||||
android:textColor="@color/color_1F1B4F"
|
||||
android:textSize="@dimen/sp_16"
|
||||
android:textStyle="bold"
|
||||
android:visibility="gone"
|
||||
tools:visibility="visible"/>
|
||||
|
||||
</RadioGroup>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/tvConfirmPay"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="48dp"
|
||||
android:layout_marginStart="@dimen/dp_36"
|
||||
android:layout_marginTop="@dimen/dp_20"
|
||||
android:layout_marginEnd="@dimen/dp_36"
|
||||
android:layout_marginBottom="@dimen/dp_20"
|
||||
android:background="@drawable/bg_common_confirm_30"
|
||||
android:gravity="center"
|
||||
android:text="@string/confirm_pay"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/sp_20"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/rg" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
@@ -136,17 +136,6 @@ public class ModuleClanActivity extends BaseActivity implements View.OnClickList
|
||||
ImageLoadUtils.loadRectImage(context, clanInfo.getAvatar(), binding.ivClanAvatar, R.drawable.default_avatar, ScreenUtil.dip2px(8));
|
||||
ImageLoadUtils.loadImage(context, clanInfo.getLevelIcon(), binding.ivClanLevel);
|
||||
loadHallList();
|
||||
if (clanInfo.isElderHasExchangeManagerAuth()) {
|
||||
binding.tvHallExchange.setVisibility(View.VISIBLE);
|
||||
binding.tvHallIncome.setBackgroundResource(R.drawable.bg_hall_income_small);
|
||||
binding.tvHallAdmin.setBackgroundResource(R.drawable.bg_hall_admin_small);
|
||||
binding.tvHallExchange.setBackgroundResource(R.drawable.bg_hall_exchange_small);
|
||||
} else {
|
||||
binding.tvHallExchange.setVisibility(View.GONE);
|
||||
binding.tvHallIncome.setBackgroundResource(R.drawable.bg_hall_income);
|
||||
binding.tvHallAdmin.setBackgroundResource(R.drawable.bg_hall_admin);
|
||||
binding.tvHallExchange.setBackgroundResource(R.drawable.bg_hall_exchange);
|
||||
}
|
||||
} else {
|
||||
binding.clClan.setVisibility(View.GONE);
|
||||
}
|
||||
|
@@ -5,8 +5,7 @@ import com.yizhuan.xchat_android_core.bean.response.ServiceResult
|
||||
import com.yizhuan.xchat_android_core.manager.AvRoomDataManager
|
||||
import com.yizhuan.xchat_android_core.utils.net.launchRequest
|
||||
import com.yizhuan.xchat_android_library.net.rxnet.RxNet
|
||||
import retrofit2.http.GET
|
||||
import retrofit2.http.Query
|
||||
import retrofit2.http.*
|
||||
|
||||
object VipModel : BaseModel() {
|
||||
|
||||
@@ -37,6 +36,10 @@ object VipModel : BaseModel() {
|
||||
api.changeInvisibleInRoom(open)
|
||||
}
|
||||
|
||||
suspend fun openVipWithDiamond(): Any? =
|
||||
launchRequest {
|
||||
api.openVipWithDiamond(if (AvRoomDataManager.get().roomUid == 0L) null else AvRoomDataManager.get().roomUid)
|
||||
}
|
||||
|
||||
private interface Api {
|
||||
|
||||
@@ -83,6 +86,16 @@ object VipModel : BaseModel() {
|
||||
*/
|
||||
@GET("/vip/changeInvisibleInRoom")
|
||||
suspend fun changeInvisibleInRoom(@Query("open") open: Boolean): ServiceResult<String>
|
||||
|
||||
/**
|
||||
* 使用钻石开通贵族
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@FormUrlEncoded
|
||||
@POST("/vip/openWithDiamond")
|
||||
suspend fun openVipWithDiamond(@Field("roomUid") roomUid: Long?): ServiceResult<Any>
|
||||
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user