Commit 583105f3 authored by 王雪伟's avatar 王雪伟

[提交人]:王雪伟

[提交简述] :加入充值
[实现方案] :
parent 460cdf3b
...@@ -24,4 +24,5 @@ public class AppContext { ...@@ -24,4 +24,5 @@ public class AppContext {
return mAppContext; return mAppContext;
} }
} }
} }
\ No newline at end of file
...@@ -9,6 +9,7 @@ import android.Manifest; ...@@ -9,6 +9,7 @@ import android.Manifest;
public class Constant { public class Constant {
public static String PAY_PAL_CLIENT_ID ="AeCOQewq8tWcuy7V2YsL3S3IRMDZk6zSTtHP76x-yiHIgYN7PZ1xT4Iyzv-2zJm15OqR5sWjc6__9xhE"; public static String PAY_PAL_CLIENT_ID ="AeCOQewq8tWcuy7V2YsL3S3IRMDZk6zSTtHP76x-yiHIgYN7PZ1xT4Iyzv-2zJm15OqR5sWjc6__9xhE";
// public static String PAY_PAL_CLIENT_ID ="AfYZMocYWtjeORYcG29SjvjJjS8L9_Mh8xlTi74ifLXboxFaVb43F_ZLc8geZVqLN47m2wr9PD24tRIh";
//公共参数 //公共参数
String UMENG_APPKEY = "597dbf2abbea835685001b27"; String UMENG_APPKEY = "597dbf2abbea835685001b27";
...@@ -55,6 +56,7 @@ public class Constant { ...@@ -55,6 +56,7 @@ public class Constant {
public static String PAY_TYPE_COIN = "0"; public static String PAY_TYPE_COIN = "0";
public static String PAY_TYPE_VIP = "1"; public static String PAY_TYPE_VIP = "1";
public static String PAY_TYPE_VIP_DIALOG = "2";
} }
......
...@@ -11,6 +11,7 @@ import androidx.recyclerview.widget.RecyclerView ...@@ -11,6 +11,7 @@ import androidx.recyclerview.widget.RecyclerView
import com.zxhl.cms.R import com.zxhl.cms.R
import com.zxhl.cms.common.base.BaseRecyclerAdapter import com.zxhl.cms.common.base.BaseRecyclerAdapter
import com.zxhl.cms.net.model.pay.VipPayEntity import com.zxhl.cms.net.model.pay.VipPayEntity
import com.zxhl.cms.net.model.video.MemberEntity
import com.zxhl.cms.utils.OnRecycleItemClickListener import com.zxhl.cms.utils.OnRecycleItemClickListener
/** /**
...@@ -18,14 +19,15 @@ import com.zxhl.cms.utils.OnRecycleItemClickListener ...@@ -18,14 +19,15 @@ import com.zxhl.cms.utils.OnRecycleItemClickListener
* @datetime 2022-04-12 19:04 GMT+8 * @datetime 2022-04-12 19:04 GMT+8
* @detail : * @detail :
*/ */
class BecomeVipDialogPriceAdapter : BaseRecyclerAdapter<VipPayEntity, BecomeVipDialogPriceAdapter.ViewHolder> { class BecomeVipDialogPriceAdapter :
BaseRecyclerAdapter<MemberEntity.ProductDetail, BecomeVipDialogPriceAdapter.ViewHolder> {
private var mContext: Context? = null private var mContext: Context? = null
private var mPosition = 0 private var mPosition = 0
private val listener: OnRecycleItemClickListener<VipPayEntity> private val listener: OnRecycleItemClickListener<MemberEntity.ProductDetail>
constructor( constructor(
content: Context?, content: Context?,
listener: OnRecycleItemClickListener<VipPayEntity> listener: OnRecycleItemClickListener<MemberEntity.ProductDetail>
) : super() { ) : super() {
this.listener = listener this.listener = listener
mContext = content mContext = content
...@@ -36,7 +38,10 @@ class BecomeVipDialogPriceAdapter : BaseRecyclerAdapter<VipPayEntity, BecomeVipD ...@@ -36,7 +38,10 @@ class BecomeVipDialogPriceAdapter : BaseRecyclerAdapter<VipPayEntity, BecomeVipD
notifyDataSetChanged() notifyDataSetChanged()
} }
override fun onCreateViewHolder(holder: ViewGroup, p1: Int): BecomeVipDialogPriceAdapter.ViewHolder { override fun onCreateViewHolder(
holder: ViewGroup,
p1: Int
): BecomeVipDialogPriceAdapter.ViewHolder {
return ViewHolder( return ViewHolder(
LayoutInflater.from(holder.context) LayoutInflater.from(holder.context)
.inflate(R.layout.item_layout_become_dialog_vip_price_view, holder, false) .inflate(R.layout.item_layout_become_dialog_vip_price_view, holder, false)
...@@ -44,29 +49,30 @@ class BecomeVipDialogPriceAdapter : BaseRecyclerAdapter<VipPayEntity, BecomeVipD ...@@ -44,29 +49,30 @@ class BecomeVipDialogPriceAdapter : BaseRecyclerAdapter<VipPayEntity, BecomeVipD
} }
override fun onBindViewHolder(holder: BecomeVipDialogPriceAdapter.ViewHolder, position: Int) { override fun onBindViewHolder(holder: BecomeVipDialogPriceAdapter.ViewHolder, position: Int) {
// val data = mList[position] val data = mList[position]
holder.id_vip_time.text = "1 Week +" holder.id_vip_time.text = "${data.name}"
holder.id_coin_num.text = "780" holder.id_coin_num.text = "${data.buttonText}"
holder.id_money.text = "$${2.99}" holder.id_money.text = "$${data.title}"
if (mPosition==position){ if (mPosition == position) {
holder.id_item_view.background = mContext?.getDrawable(R.drawable.shape_8857ff_bd8aff_bg_r10) holder.id_item_view.background =
mContext?.getDrawable(R.drawable.shape_8857ff_bd8aff_bg_r10)
holder.id_vip_time.setTextColor(Color.parseColor("#FFFFFF")) holder.id_vip_time.setTextColor(Color.parseColor("#FFFFFF"))
holder.id_coin_num.setTextColor(Color.parseColor("#FFFFFF")) holder.id_coin_num.setTextColor(Color.parseColor("#FFFFFF"))
holder.id_money.setTextColor(Color.parseColor("#FFFFFF")) holder.id_money.setTextColor(Color.parseColor("#FFFFFF"))
}else{ } else {
holder.id_item_view.background = mContext?.getDrawable(R.drawable.shape_f4edff_r10_bg) holder.id_item_view.background = mContext?.getDrawable(R.drawable.shape_f4edff_r10_bg)
holder.id_vip_time.setTextColor(Color.parseColor("#333333")) holder.id_vip_time.setTextColor(Color.parseColor("#333333"))
holder.id_coin_num.setTextColor(Color.parseColor("#333333")) holder.id_coin_num.setTextColor(Color.parseColor("#333333"))
holder.id_money.setTextColor(Color.parseColor("#333333")) holder.id_money.setTextColor(Color.parseColor("#333333"))
} }
holder.id_item_view?.setOnClickListener { holder.id_item_view?.setOnClickListener {
listener.onItemClick(it,position,null) listener.onItemClick(it, position, null)
} }
} }
//
override fun getItemCount(): Int { // override fun getItemCount(): Int {
return 3 // return 3
} // }
inner class ViewHolder : RecyclerView.ViewHolder { inner class ViewHolder : RecyclerView.ViewHolder {
......
...@@ -11,6 +11,7 @@ import androidx.recyclerview.widget.RecyclerView ...@@ -11,6 +11,7 @@ import androidx.recyclerview.widget.RecyclerView
import com.zxhl.cms.R import com.zxhl.cms.R
import com.zxhl.cms.common.base.BaseRecyclerAdapter import com.zxhl.cms.common.base.BaseRecyclerAdapter
import com.zxhl.cms.net.model.pay.VipPayEntity import com.zxhl.cms.net.model.pay.VipPayEntity
import com.zxhl.cms.net.model.video.MemberEntity
import com.zxhl.cms.utils.OnRecycleItemClickListener import com.zxhl.cms.utils.OnRecycleItemClickListener
/** /**
...@@ -18,14 +19,15 @@ import com.zxhl.cms.utils.OnRecycleItemClickListener ...@@ -18,14 +19,15 @@ import com.zxhl.cms.utils.OnRecycleItemClickListener
* @datetime 2022-04-12 19:04 GMT+8 * @datetime 2022-04-12 19:04 GMT+8
* @detail : * @detail :
*/ */
class BecomeVipPriceAdapter : BaseRecyclerAdapter<VipPayEntity, BecomeVipPriceAdapter.ViewHolder> { class BecomeVipPriceAdapter :
BaseRecyclerAdapter<MemberEntity.ProductDetail, BecomeVipPriceAdapter.ViewHolder> {
private var mContext: Context? = null private var mContext: Context? = null
private var mPosition = 0 private var mPosition = 0
private val listener: OnRecycleItemClickListener<VipPayEntity> private val listener: OnRecycleItemClickListener<MemberEntity.ProductDetail>
constructor( constructor(
content: Context?, content: Context?,
listener: OnRecycleItemClickListener<VipPayEntity> listener: OnRecycleItemClickListener<MemberEntity.ProductDetail>
) : super() { ) : super() {
this.listener = listener this.listener = listener
mContext = content mContext = content
...@@ -44,26 +46,27 @@ class BecomeVipPriceAdapter : BaseRecyclerAdapter<VipPayEntity, BecomeVipPriceAd ...@@ -44,26 +46,27 @@ class BecomeVipPriceAdapter : BaseRecyclerAdapter<VipPayEntity, BecomeVipPriceAd
} }
override fun onBindViewHolder(holder: BecomeVipPriceAdapter.ViewHolder, position: Int) { override fun onBindViewHolder(holder: BecomeVipPriceAdapter.ViewHolder, position: Int) {
// val data = mList[position] val data = mList[position]
holder.id_vip_time.text = "1 Week" holder.id_vip_time.text = "${data.name}"
holder.id_vip_money.text = "$${2.99}" holder.id_vip_money.text = "$${data.title}"
if (mPosition==position){ if (mPosition == position) {
holder.id_item_view.background = mContext?.getDrawable(R.drawable.shape_8857ff_bd8aff_bg_r10) holder.id_item_view.background =
mContext?.getDrawable(R.drawable.shape_8857ff_bd8aff_bg_r10)
holder.id_vip_time.setTextColor(Color.parseColor("#FFFFFF")) holder.id_vip_time.setTextColor(Color.parseColor("#FFFFFF"))
holder.id_vip_money.setTextColor(Color.parseColor("#FFFFFF")) holder.id_vip_money.setTextColor(Color.parseColor("#FFFFFF"))
}else{ } else {
holder.id_item_view.background = mContext?.getDrawable(R.drawable.shape_white_r10) holder.id_item_view.background = mContext?.getDrawable(R.drawable.shape_white_r10)
holder.id_vip_time.setTextColor(Color.parseColor("#333333")) holder.id_vip_time.setTextColor(Color.parseColor("#333333"))
holder.id_vip_money.setTextColor(Color.parseColor("#333333")) holder.id_vip_money.setTextColor(Color.parseColor("#333333"))
} }
holder.id_item_view?.setOnClickListener { holder.id_item_view?.setOnClickListener {
listener.onItemClick(it,position,null) listener.onItemClick(it, position, data)
} }
} }
override fun getItemCount(): Int { // override fun getItemCount(): Int {
return 3 // return 3
} // }
inner class ViewHolder : RecyclerView.ViewHolder { inner class ViewHolder : RecyclerView.ViewHolder {
......
...@@ -11,6 +11,7 @@ import com.zxhl.cms.R ...@@ -11,6 +11,7 @@ import com.zxhl.cms.R
import com.zxhl.cms.common.base.BaseRecyclerAdapter import com.zxhl.cms.common.base.BaseRecyclerAdapter
import com.zxhl.cms.net.model.chat.RecordEntity import com.zxhl.cms.net.model.chat.RecordEntity
import com.zxhl.cms.net.model.pay.VipPayEntity import com.zxhl.cms.net.model.pay.VipPayEntity
import com.zxhl.cms.net.model.video.MemberEntity
import com.zxhl.cms.utils.OnRecycleItemClickListener import com.zxhl.cms.utils.OnRecycleItemClickListener
/** /**
...@@ -18,13 +19,14 @@ import com.zxhl.cms.utils.OnRecycleItemClickListener ...@@ -18,13 +19,14 @@ import com.zxhl.cms.utils.OnRecycleItemClickListener
* @datetime 2022-04-12 19:04 GMT+8 * @datetime 2022-04-12 19:04 GMT+8
* @detail : * @detail :
*/ */
class CoinStoreAdapter: BaseRecyclerAdapter<RecordEntity, CoinStoreAdapter.ViewHolder> { class CoinStoreAdapter :
BaseRecyclerAdapter<MemberEntity.ProductDetail, CoinStoreAdapter.ViewHolder> {
private var mContext: Context? = null private var mContext: Context? = null
private val listener: OnRecycleItemClickListener<RecordEntity> private val listener: OnRecycleItemClickListener<MemberEntity.ProductDetail>
constructor( constructor(
content: Context?, content: Context?,
listener: OnRecycleItemClickListener<RecordEntity> listener: OnRecycleItemClickListener<MemberEntity.ProductDetail>
) : super() { ) : super() {
this.listener = listener this.listener = listener
mContext = content mContext = content
...@@ -38,17 +40,17 @@ class CoinStoreAdapter: BaseRecyclerAdapter<RecordEntity, CoinStoreAdapter.ViewH ...@@ -38,17 +40,17 @@ class CoinStoreAdapter: BaseRecyclerAdapter<RecordEntity, CoinStoreAdapter.ViewH
} }
override fun onBindViewHolder(holder: CoinStoreAdapter.ViewHolder, position: Int) { override fun onBindViewHolder(holder: CoinStoreAdapter.ViewHolder, position: Int) {
// val data = mList[position] val data = mList[position]
holder.id_tv_coin.text="${360}" holder.id_tv_coin.text = "${data.name}"
holder.id_tv_money.text="$${4.99}" holder.id_tv_money.text = "$${data.title}"
holder.id_ll_item_view.setOnClickListener { holder.id_ll_item_view.setOnClickListener {
listener?.onItemClick(it,position,null) listener?.onItemClick(it, position, data)
} }
} }
override fun getItemCount(): Int { // override fun getItemCount(): Int {
return 4 // return 4
} // }
inner class ViewHolder : RecyclerView.ViewHolder { inner class ViewHolder : RecyclerView.ViewHolder {
......
package com.zxhl.cms.pay.contract package com.zxhl.cms.pay.contract
import com.zxhl.cms.net.model.pay.CoinStoreEntity import com.zxhl.cms.net.model.pay.CoinStoreEntity
import com.zxhl.cms.net.model.video.MemberEntity
class CoinStoreContract { class CoinStoreContract {
interface View { interface View {
fun setCoinPayList(result: List<CoinStoreEntity>?) fun setCoinPayList(result: List<MemberEntity.ProductDetail>?)
fun setUserCoins(coinNum: Double) fun setUserCoins(coinNum: Double)
} }
......
package com.zxhl.cms.pay.contract package com.zxhl.cms.pay.contract
import com.zxhl.cms.net.model.pay.CoinStoreEntity import com.zxhl.cms.net.model.video.MemberEntity
class VipPayContract { class VipPayContract {
interface View { interface View {
fun setVipPayList(result: List<CoinStoreEntity>?) fun setVipPayList(result: List<MemberEntity.ProductDetail>?)
} }
interface Presenter { interface Presenter {
......
package com.zxhl.cms.pay.contract
import com.zxhl.cms.net.model.video.MemberEntity
class VipPayDialogContract {
interface View {
fun setVipPayList(result: List<MemberEntity.ProductDetail>?)
}
interface Presenter {
fun getVipPayList()
}
}
\ No newline at end of file
...@@ -46,24 +46,22 @@ class PayPalHelper { ...@@ -46,24 +46,22 @@ class PayPalHelper {
) { ) {
mPayButton = payView; mPayButton = payView;
mPayCallBack = payCallBack mPayCallBack = payCallBack
startPay("2222", goodsPrice)
//向服务端获取订单ID //向服务端获取订单ID
// ApiClient.userInfoAPi.googlePay(goodsId, "5", "", "", payMode) ApiClient.userInfoAPi.googlePay(goodsId, "5", "", "", payMode)
// .compose(RxSchedulers.observableIO2Main()) .compose(RxSchedulers.observableIO2Main())
// .subscribe(object : BaseObserver<GooglePayEntity>() { .subscribe(object : BaseObserver<GooglePayEntity>() {
// override fun onSuccess(result: GooglePayEntity?) { override fun onSuccess(result: GooglePayEntity?) {
// if (result != null) { if (result != null) {
// startPay(result.outTradeNo, goodsPrice) startPay(result.outTradeNo, goodsPrice)
// } else { } else {
// mPayCallBack?.onError("payPalPay 未获取到订单数据") mPayCallBack?.onError("payPalPay 未获取到订单数据")
// } }
// } }
//
// override fun onFailure(e: Throwable?, code: String?, errorMsg: String?) { override fun onFailure(e: Throwable?, code: String?, errorMsg: String?) {
// mPayCallBack?.onError("payPalPay 获取订单号接口异常 Error:$errorMsg") mPayCallBack?.onError("payPalPay 获取订单号接口异常 Error:$errorMsg")
// } }
// }) })
} }
private fun startPay(orderId: String, price: String) { private fun startPay(orderId: String, price: String) {
...@@ -79,7 +77,7 @@ class PayPalHelper { ...@@ -79,7 +77,7 @@ class PayPalHelper {
//金额相关 //金额相关
amount = Amount(currencyCode = CurrencyCode.USD, value = price), amount = Amount(currencyCode = CurrencyCode.USD, value = price),
//发票编号 //发票编号
invoiceId = orderId, invoiceId = orderId
//引用ID //引用ID
// referenceId = "" + System.currentTimeMillis(), // referenceId = "" + System.currentTimeMillis(),
// customId = orderId, // customId = orderId,
...@@ -113,11 +111,19 @@ class PayPalHelper { ...@@ -113,11 +111,19 @@ class PayPalHelper {
// Log.e(TAG, "CaptureOrder approval.data.orderId: ${approval.data.cart}") // Log.e(TAG, "CaptureOrder approval.data.orderId: ${approval.data.cart}")
// Log.e(TAG, "CaptureOrder approval.data.orderId: ${approval.data.payer}") // Log.e(TAG, "CaptureOrder approval.data.orderId: ${approval.data.payer}")
if (captureOrderResult is CaptureOrderResult.Success) { if (captureOrderResult is CaptureOrderResult.Success) {
var result = if (!captureOrderResult.orderResponse?.purchaseUnits?.get(0)?.payments?.captures?.get(0)?.id.isNullOrEmpty()) { var result =
"{\"orderId\":\"${orderId}\",\"payPalId\":\"${captureOrderResult.orderResponse?.purchaseUnits?.get(0)?.payments?.captures?.get(0)?.id}\"}" if (!captureOrderResult.orderResponse?.purchaseUnits?.get(0)?.payments?.captures?.get(
} else { 0
"{\"orderId\":\"${orderId}\",\"payPalId\":\"\"}" )?.id.isNullOrEmpty()
} ) {
"{\"orderId\":\"${orderId}\",\"payPalId\":\"${
captureOrderResult.orderResponse?.purchaseUnits?.get(
0
)?.payments?.captures?.get(0)?.id
}\"}"
} else {
"{\"orderId\":\"${orderId}\",\"payPalId\":\"\"}"
}
mPayCallBack?.onPaySuccess(result) mPayCallBack?.onPaySuccess(result)
} else if (captureOrderResult is CaptureOrderResult.Error) { } else if (captureOrderResult is CaptureOrderResult.Error) {
mPayCallBack?.onError("PayPal 获取订单失败 msg: ${captureOrderResult.message} reason:${captureOrderResult.reason}") mPayCallBack?.onError("PayPal 获取订单失败 msg: ${captureOrderResult.message} reason:${captureOrderResult.reason}")
......
package com.zxhl.cms.pay.presenter package com.zxhl.cms.pay.presenter
import com.zxhl.cms.net.ApiClient
import com.zxhl.cms.net.RxSchedulers
import com.zxhl.cms.net.callback.BaseObserver
import com.zxhl.cms.net.model.video.MemberEntity
import com.zxhl.cms.pay.contract.CoinStoreContract import com.zxhl.cms.pay.contract.CoinStoreContract
/** /**
...@@ -16,7 +20,17 @@ class CoinStorePresenter:CoinStoreContract.Presenter { ...@@ -16,7 +20,17 @@ class CoinStorePresenter:CoinStoreContract.Presenter {
} }
override fun getCoinPayList() { override fun getCoinPayList() {
ApiClient.videoInfoApi.getPayConfig("recharge").compose(RxSchedulers.observableIO2Main())
.subscribe(object : BaseObserver<MemberEntity>() {
override fun onSuccess(result: MemberEntity?) {
if (!result?.goodsList.isNullOrEmpty()){
mView.setCoinPayList(result?.goodsList)
}
}
override fun onFailure(e: Throwable?, code: String?, errorMsg: String?) {
}
})
} }
override fun getUserCoins() { override fun getUserCoins() {
......
package com.zxhl.cms.pay.presenter
import com.zxhl.cms.net.ApiClient
import com.zxhl.cms.net.RxSchedulers
import com.zxhl.cms.net.callback.BaseObserver
import com.zxhl.cms.net.model.video.MemberEntity
import com.zxhl.cms.pay.contract.CoinStoreContract
import com.zxhl.cms.pay.contract.VipPayContract
import com.zxhl.cms.pay.contract.VipPayDialogContract
/**
* @author (wangXuewei)
* @datetime 2022-04-13 10:29 GMT+8
* @detail :
*/
class VipPayDialogPresenter:VipPayDialogContract.Presenter {
private val mView: VipPayDialogContract.View
constructor(mView: VipPayDialogContract.View) {
this.mView = mView
}
override fun getVipPayList() {
ApiClient.videoInfoApi.getPayConfig("vip1").compose(RxSchedulers.observableIO2Main())
.subscribe(object : BaseObserver<MemberEntity>() {
override fun onSuccess(result: MemberEntity?) {
if (!result?.goodsList.isNullOrEmpty()){
mView.setVipPayList(result?.goodsList)
}else{
mView.setVipPayList(null)
}
}
override fun onFailure(e: Throwable?, code: String?, errorMsg: String?) {
mView.setVipPayList(null)
}
})
}
}
\ No newline at end of file
package com.zxhl.cms.pay.presenter package com.zxhl.cms.pay.presenter
import com.zxhl.cms.net.ApiClient
import com.zxhl.cms.net.RxSchedulers
import com.zxhl.cms.net.callback.BaseObserver
import com.zxhl.cms.net.model.video.MemberEntity
import com.zxhl.cms.pay.contract.CoinStoreContract import com.zxhl.cms.pay.contract.CoinStoreContract
import com.zxhl.cms.pay.contract.VipPayContract import com.zxhl.cms.pay.contract.VipPayContract
...@@ -17,5 +21,16 @@ class VipPayPresenter:VipPayContract.Presenter { ...@@ -17,5 +21,16 @@ class VipPayPresenter:VipPayContract.Presenter {
} }
override fun getVipPayList() { override fun getVipPayList() {
ApiClient.videoInfoApi.getPayConfig("vip").compose(RxSchedulers.observableIO2Main())
.subscribe(object : BaseObserver<MemberEntity>() {
override fun onSuccess(result: MemberEntity?) {
if (!result?.goodsList.isNullOrEmpty()){
mView?.setVipPayList(result?.goodsList)
}
}
override fun onFailure(e: Throwable?, code: String?, errorMsg: String?) {
}
})
} }
} }
\ No newline at end of file
...@@ -7,6 +7,7 @@ import com.zxhl.cms.common.Constant ...@@ -7,6 +7,7 @@ import com.zxhl.cms.common.Constant
import com.zxhl.cms.common.base.BaseActivity import com.zxhl.cms.common.base.BaseActivity
import com.zxhl.cms.net.model.chat.RecordEntity import com.zxhl.cms.net.model.chat.RecordEntity
import com.zxhl.cms.net.model.pay.CoinStoreEntity import com.zxhl.cms.net.model.pay.CoinStoreEntity
import com.zxhl.cms.net.model.video.MemberEntity
import com.zxhl.cms.pay.adapter.CoinStoreAdapter import com.zxhl.cms.pay.adapter.CoinStoreAdapter
import com.zxhl.cms.pay.contract.CoinStoreContract import com.zxhl.cms.pay.contract.CoinStoreContract
import com.zxhl.cms.pay.presenter.CoinStorePresenter import com.zxhl.cms.pay.presenter.CoinStorePresenter
...@@ -16,7 +17,7 @@ import kotlinx.android.synthetic.main.activity_layout_coin_store.* ...@@ -16,7 +17,7 @@ import kotlinx.android.synthetic.main.activity_layout_coin_store.*
import kotlinx.android.synthetic.main.activity_layout_coin_store.id_img_back import kotlinx.android.synthetic.main.activity_layout_coin_store.id_img_back
class CoinStoreActivity : BaseActivity(), CoinStoreContract.View, class CoinStoreActivity : BaseActivity(), CoinStoreContract.View,
OnRecycleItemClickListener<RecordEntity> { OnRecycleItemClickListener<MemberEntity.ProductDetail> {
private var mAdapter: CoinStoreAdapter? = null private var mAdapter: CoinStoreAdapter? = null
private var mPresenter: CoinStorePresenter? = null private var mPresenter: CoinStorePresenter? = null
override fun init() { override fun init() {
...@@ -49,15 +50,17 @@ class CoinStoreActivity : BaseActivity(), CoinStoreContract.View, ...@@ -49,15 +50,17 @@ class CoinStoreActivity : BaseActivity(), CoinStoreContract.View,
return R.layout.activity_layout_coin_store return R.layout.activity_layout_coin_store
} }
override fun setCoinPayList(result: List<CoinStoreEntity>?) { override fun setCoinPayList(result: List<MemberEntity.ProductDetail>?) {
mAdapter?.clear()
mAdapter?.appendToList(result)
} }
override fun setUserCoins(coinNum: Double) { override fun setUserCoins(coinNum: Double) {
id_tv_user_coins_num.text = "$coinNum" id_tv_user_coins_num.text = "$coinNum"
} }
override fun onItemClick(view: View?, position: Int, data: RecordEntity?) { override fun onItemClick(view: View?, position: Int, data: MemberEntity.ProductDetail?) {
JumpUtils.paymentPageJump(Constant.Key.PAY_TYPE_COIN,"1","name","0.1") JumpUtils.paymentPageJump(Constant.Key.PAY_TYPE_COIN, data?.goodsId, data?.name, data?.cash)
} }
} }
\ No newline at end of file
...@@ -116,7 +116,7 @@ class PaymentPageActivity : BaseActivity(), PaymentPageContract.View { ...@@ -116,7 +116,7 @@ class PaymentPageActivity : BaseActivity(), PaymentPageContract.View {
return return
} }
EventUtils.onEvent("pay_page_pay_btn", goodsPrice) EventUtils.onEvent("pay_page_pay_btn", goodsPrice)
Log.d("wxw","Payment${goodsId}${goodsPrice}") Log.d("wxw","Payment${goodsId} price:${goodsPrice}")
if (payType == GOOGLE_PAY) { if (payType == GOOGLE_PAY) {
googlePay(goodsId) googlePay(goodsId)
} else if (payType == PAY_PAL_PAY) { } else if (payType == PAY_PAL_PAY) {
......
...@@ -10,6 +10,7 @@ import com.zxhl.cms.common.Constant ...@@ -10,6 +10,7 @@ import com.zxhl.cms.common.Constant
import com.zxhl.cms.common.base.BaseActivity import com.zxhl.cms.common.base.BaseActivity
import com.zxhl.cms.net.model.pay.CoinStoreEntity import com.zxhl.cms.net.model.pay.CoinStoreEntity
import com.zxhl.cms.net.model.pay.VipPayEntity import com.zxhl.cms.net.model.pay.VipPayEntity
import com.zxhl.cms.net.model.video.MemberEntity
import com.zxhl.cms.pay.adapter.BecomeVipBannerAdapter import com.zxhl.cms.pay.adapter.BecomeVipBannerAdapter
import com.zxhl.cms.pay.adapter.BecomeVipPriceAdapter import com.zxhl.cms.pay.adapter.BecomeVipPriceAdapter
import com.zxhl.cms.pay.contract.VipPayContract import com.zxhl.cms.pay.contract.VipPayContract
...@@ -22,7 +23,7 @@ import kotlinx.android.synthetic.main.activity_layout_vip_pay.* ...@@ -22,7 +23,7 @@ import kotlinx.android.synthetic.main.activity_layout_vip_pay.*
class VipPayActivity : BaseActivity(), VipPayContract.View, class VipPayActivity : BaseActivity(), VipPayContract.View,
OnRecycleItemClickListener<VipPayEntity> { OnRecycleItemClickListener<MemberEntity.ProductDetail> {
private var mBannerAdapter: BecomeVipBannerAdapter? = null private var mBannerAdapter: BecomeVipBannerAdapter? = null
private var mPriceAdapter: BecomeVipPriceAdapter? = null private var mPriceAdapter: BecomeVipPriceAdapter? = null
private var mPresenter: VipPayPresenter? = null private var mPresenter: VipPayPresenter? = null
...@@ -38,8 +39,10 @@ class VipPayActivity : BaseActivity(), VipPayContract.View, ...@@ -38,8 +39,10 @@ class VipPayActivity : BaseActivity(), VipPayContract.View,
id_rcl_pay_vip_list?.layoutManager = LinearLayoutManager(this) id_rcl_pay_vip_list?.layoutManager = LinearLayoutManager(this)
id_rcl_pay_vip_list?.adapter = mPriceAdapter id_rcl_pay_vip_list?.adapter = mPriceAdapter
//banner
id_banner_indicator.setIndicatorCount(4)
mPresenter?.getVipPayList() mPresenter?.getVipPayList()
mPriceAdapter?.setSelectView(0)
id_img_back.setOnClickListener(this) id_img_back.setOnClickListener(this)
id_img_vip_record.setOnClickListener(this) id_img_vip_record.setOnClickListener(this)
...@@ -68,7 +71,7 @@ class VipPayActivity : BaseActivity(), VipPayContract.View, ...@@ -68,7 +71,7 @@ class VipPayActivity : BaseActivity(), VipPayContract.View,
} }
override fun onPageSelected(position: Int) { override fun onPageSelected(position: Int) {
Log.d("wxw", "pos${position}") id_banner_indicator.setSelectPos(position)
} }
}) })
) )
...@@ -81,8 +84,16 @@ class VipPayActivity : BaseActivity(), VipPayContract.View, ...@@ -81,8 +84,16 @@ class VipPayActivity : BaseActivity(), VipPayContract.View,
showToast("VIP Pay Record") showToast("VIP Pay Record")
} }
id_tv_vip_pay_btn -> { id_tv_vip_pay_btn -> {
showToast("VIP Pay ") if (tempClickData == null) {
JumpUtils.paymentPageJump(Constant.Key.PAY_TYPE_VIP,"1","vip","9.9") showToast("Please select a grade")
} else {
JumpUtils.paymentPageJump(
Constant.Key.PAY_TYPE_VIP,
tempClickData?.goodsId,
tempClickData?.name,
tempClickData?.cash
)
}
} }
id_img_back -> { id_img_back -> {
CenterDialog.showPayExitDialog(this) { CenterDialog.showPayExitDialog(this) {
...@@ -96,11 +107,17 @@ class VipPayActivity : BaseActivity(), VipPayContract.View, ...@@ -96,11 +107,17 @@ class VipPayActivity : BaseActivity(), VipPayContract.View,
return R.layout.activity_layout_vip_pay return R.layout.activity_layout_vip_pay
} }
override fun setVipPayList(result: List<CoinStoreEntity>?) { override fun setVipPayList(result: List<MemberEntity.ProductDetail>?) {
mPriceAdapter?.clear()
mPriceAdapter?.appendToList(result)
if (tempClickData == null && !result.isNullOrEmpty()) {
tempClickData = result[0];
}
} }
override fun onItemClick(view: View?, position: Int, data: VipPayEntity?) { private var tempClickData: MemberEntity.ProductDetail? = null;
override fun onItemClick(view: View?, position: Int, data: MemberEntity.ProductDetail?) {
tempClickData = data
mPriceAdapter?.setSelectView(position) mPriceAdapter?.setSelectView(position)
} }
......
...@@ -9,11 +9,17 @@ import androidx.recyclerview.widget.LinearLayoutManager ...@@ -9,11 +9,17 @@ import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.PagerSnapHelper import androidx.recyclerview.widget.PagerSnapHelper
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.zxhl.cms.R import com.zxhl.cms.R
import com.zxhl.cms.common.Constant
import com.zxhl.cms.net.model.video.MemberEntity
import com.zxhl.cms.pay.adapter.BecomeVipBannerAdapter import com.zxhl.cms.pay.adapter.BecomeVipBannerAdapter
import com.zxhl.cms.pay.adapter.BecomeVipDialogBannerAdapter import com.zxhl.cms.pay.adapter.BecomeVipDialogBannerAdapter
import com.zxhl.cms.pay.adapter.BecomeVipDialogPriceAdapter import com.zxhl.cms.pay.adapter.BecomeVipDialogPriceAdapter
import com.zxhl.cms.pay.contract.VipPayDialogContract
import com.zxhl.cms.pay.presenter.VipPayDialogPresenter
import com.zxhl.cms.utils.JumpUtils
import com.zxhl.cms.utils.OnRecycleItemClickListener import com.zxhl.cms.utils.OnRecycleItemClickListener
import com.zxhl.cms.widget.CenterDialog import com.zxhl.cms.widget.CenterDialog
import com.zxhl.cms.widget.LoadingDialog
import com.zxhl.cms.widget.RecyclerViewPageChangeListenerHelper import com.zxhl.cms.widget.RecyclerViewPageChangeListenerHelper
import com.zxhl.cms.widget.UIndicator import com.zxhl.cms.widget.UIndicator
import kotlinx.android.synthetic.main.activity_layout_vip_pay.* import kotlinx.android.synthetic.main.activity_layout_vip_pay.*
...@@ -24,8 +30,11 @@ import org.greenrobot.eventbus.EventBus ...@@ -24,8 +30,11 @@ import org.greenrobot.eventbus.EventBus
* @datetime 2022-04-16 16:13 GMT+8 * @datetime 2022-04-16 16:13 GMT+8
* @detail : * @detail :
*/ */
object VipPayDialog { object VipPayDialog : VipPayDialogContract.View {
private var mLoadLoading: LoadingDialog? = null
private var mActivity: Activity? = null; private var mActivity: Activity? = null;
private var mPresenter: VipPayDialogPresenter = VipPayDialogPresenter(this);
private var mBannerAdapter: BecomeVipDialogBannerAdapter? = null private var mBannerAdapter: BecomeVipDialogBannerAdapter? = null
private var mPriceAdapter: BecomeVipDialogPriceAdapter? = null private var mPriceAdapter: BecomeVipDialogPriceAdapter? = null
private var mCallBack: VipPayCallBack? = null private var mCallBack: VipPayCallBack? = null
...@@ -35,22 +44,22 @@ object VipPayDialog { ...@@ -35,22 +44,22 @@ object VipPayDialog {
interface VipPayCallBack { interface VipPayCallBack {
fun pageClose(); fun pageClose();
fun paySuccess(); // fun paySuccess();
fun payCancel(); // fun payCancel();
fun payError(); // fun payError();
} }
fun showVipPayDialog(activity: Activity) { fun showVipPayDialog(activity: Activity) {
this.mActivity = activity; this.mActivity = activity;
showLoading(activity)
openPayDialog(activity) mPresenter.getVipPayList()
} }
private var mDialog: Dialog? = null private var mDialog: Dialog? = null
private fun openPayDialog(act: Activity) { private fun openPayDialog(act: Activity, result: List<MemberEntity.ProductDetail>) {
if (mDialog == null) { if (mDialog == null) {
mDialog = Dialog(act!!, R.style.CenterCompatDialogTheme) mDialog = Dialog(act, R.style.CenterCompatDialogTheme)
} }
val mDialogView = CenterDialog.showBottomDialog( val mDialogView = CenterDialog.showBottomDialog(
R.layout.dialog_layout_vip_pay, R.layout.dialog_layout_vip_pay,
...@@ -71,6 +80,7 @@ object VipPayDialog { ...@@ -71,6 +80,7 @@ object VipPayDialog {
act, LinearLayoutManager.HORIZONTAL, act, LinearLayoutManager.HORIZONTAL,
false false
) )
pay_banner?.adapter = mBannerAdapter pay_banner?.adapter = mBannerAdapter
val mPagerSnapHelper = PagerSnapHelper() val mPagerSnapHelper = PagerSnapHelper()
mPagerSnapHelper.attachToRecyclerView(pay_banner) mPagerSnapHelper.attachToRecyclerView(pay_banner)
...@@ -90,16 +100,26 @@ object VipPayDialog { ...@@ -90,16 +100,26 @@ object VipPayDialog {
} }
}) })
) )
var selectPos = 0;
//price //price
mPriceAdapter = mPriceAdapter =
BecomeVipDialogPriceAdapter(act) { view, position, data -> BecomeVipDialogPriceAdapter(act) { view, position, data ->
selectPos = position
mPriceAdapter?.setSelectView(position) mPriceAdapter?.setSelectView(position)
} }
price_list?.layoutManager = LinearLayoutManager(act) price_list?.layoutManager = LinearLayoutManager(act)
price_list?.adapter = mPriceAdapter price_list?.adapter = mPriceAdapter
mPriceAdapter?.clear()
mPriceAdapter?.appendToList(result)
btn_continue.setOnClickListener { btn_continue.setOnClickListener {
mDialog?.dismiss() // mDialog?.dismiss()
JumpUtils.paymentPageJump(
Constant.Key.PAY_TYPE_VIP_DIALOG,
result[selectPos].goodsId,
result[selectPos].name,
result[selectPos].cash
)
} }
mDialog?.setOnDismissListener { mDialog?.setOnDismissListener {
...@@ -116,5 +136,29 @@ object VipPayDialog { ...@@ -116,5 +136,29 @@ object VipPayDialog {
} }
override fun setVipPayList(result: List<MemberEntity.ProductDetail>?) {
dismissLoading()
if (mActivity != null && !result.isNullOrEmpty()) {
openPayDialog(mActivity!!, result)
}
}
private fun showLoading(content: Activity) {
if (mLoadLoading == null) {
mLoadLoading = LoadingDialog.getLoadingDialog(
content,
content.getString(R.string.wait_ing),
false,
false
)
}
mLoadLoading?.setLoading(content.getString(R.string.wait_ing))
mLoadLoading?.show()
}
private fun dismissLoading() {
if (mLoadLoading != null) {
mLoadLoading?.dismiss()
}
}
} }
\ No newline at end of file
...@@ -7,5 +7,5 @@ ...@@ -7,5 +7,5 @@
android:endColor="#662CF5" android:endColor="#662CF5"
android:type="linear" android:type="linear"
android:useLevel="true" /> android:useLevel="true" />
<corners android:radius="15dp" /> <corners android:radius="10dp" />
</shape> </shape>
\ No newline at end of file
...@@ -53,26 +53,41 @@ ...@@ -53,26 +53,41 @@
android:background="#F6F6F6"> android:background="#F6F6F6">
<LinearLayout <RelativeLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:paddingBottom="70dp" android:orientation="vertical"
android:orientation="vertical"> android:paddingBottom="70dp">
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/id_rcl_banner" android:id="@+id/id_rcl_banner"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" /> android:layout_height="wrap_content" />
<com.zxhl.cms.widget.UIndicator
android:id="@+id/id_banner_indicator"
android:layout_width="match_parent"
android:layout_height="8dp"
android:layout_below="@id/id_rcl_banner"
android:layout_centerHorizontal="true"
android:layout_marginTop="-30dp"
app:circle_circle_radius="4dp"
app:normal_color="#66ffffff"
app:orientation="horizontal"
app:selected_color="#ffffffff"
app:spacing="10dp"
app:style="circle_circle" />
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/id_rcl_pay_vip_list" android:id="@+id/id_rcl_pay_vip_list"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_below="@+id/id_rcl_banner"
android:layout_marginLeft="10dp" android:layout_marginLeft="10dp"
android:layout_marginTop="5dp" android:layout_marginTop="5dp"
android:layout_marginRight="10dp" /> android:layout_marginRight="10dp" />
</LinearLayout> </RelativeLayout>
</androidx.core.widget.NestedScrollView> </androidx.core.widget.NestedScrollView>
......
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
<ImageView <ImageView
android:layout_width="20dp" android:layout_width="20dp"
android:layout_height="20dp" android:layout_height="20dp"
android:layout_marginLeft="10dp" android:layout_marginStart="10dp"
android:layout_marginEnd="5dp" android:layout_marginEnd="5dp"
android:src="@drawable/icon_xingbi_da_wode" /> android:src="@drawable/icon_xingbi_da_wode" />
......
...@@ -75,7 +75,8 @@ ...@@ -75,7 +75,8 @@
<activity <activity
android:name="com.zxhl.main.page.activity.UserDetailsActivity" android:name="com.zxhl.main.page.activity.UserDetailsActivity"
android:hardwareAccelerated="true"> android:hardwareAccelerated="true"
android:launchMode="singleTop">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.VIEW" /> <action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.DEFAULT" />
......
...@@ -121,7 +121,9 @@ class UserDetailsActivity : BaseActivity(), UserDetailsContract.View, ...@@ -121,7 +121,9 @@ class UserDetailsActivity : BaseActivity(), UserDetailsContract.View,
//Name //Name
id_tv_user_details_name.text = result.nickname id_tv_user_details_name.text = result.nickname
//国旗 //国旗
Glide.with(this).load(result.nationalFlag ?: "").into(id_img_national_flag) if (!this.isFinishing){
Glide.with(this).load(result.nationalFlag ?: "").into(id_img_national_flag)
}
//年龄 //年龄
id_tv_user_details_age.text = result.age id_tv_user_details_age.text = result.age
//是否在线 //是否在线
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment