package com.sinata.xqmuse.ui.mine
|
|
import android.webkit.WebChromeClient
|
import android.webkit.WebSettings
|
import android.webkit.WebViewClient
|
import androidx.core.os.bundleOf
|
import androidx.recyclerview.widget.GridLayoutManager
|
import cn.sinata.xldutils.gone
|
import cn.sinata.xldutils.utils.showAllowingStateLoss
|
import com.sinata.xqmuse.R
|
import com.sinata.xqmuse.dialog.BuyRuleDialog
|
import com.sinata.xqmuse.dialog.PayDialog
|
import com.sinata.xqmuse.network.HttpManager
|
import com.sinata.xqmuse.network.request
|
import com.sinata.xqmuse.ui.TransparentStatusBarActivity
|
import com.sinata.xqmuse.ui.mine.adapter.VipPriceAdapter
|
import com.sinata.xqmuse.utils.Const
|
import com.sinata.xqmuse.utils.event.EmptyEvent
|
import com.sinata.xqmuse.utils.interfaces.StringCallback
|
import com.sinata.xqmuse.utils.pay.PayListener
|
import com.sinata.xqmuse.utils.pay.PayUtil
|
import kotlinx.android.synthetic.main.activity_vip.*
|
import org.greenrobot.eventbus.EventBus
|
import org.jetbrains.anko.backgroundResource
|
import org.jetbrains.anko.browse
|
import org.jetbrains.anko.toast
|
|
class VipActivity : TransparentStatusBarActivity(), PayListener {
|
override fun setContentView() = R.layout.activity_vip
|
|
private val price = arrayListOf<Double>()
|
private val adapter = VipPriceAdapter(price)
|
private var orderId = ""
|
|
override fun initClick() {
|
iv_back.setOnClickListener { finish() }
|
adapter.setOnItemClickListener { _, position ->
|
adapter.checked = position
|
adapter.notifyDataSetChanged()
|
}
|
tv_rule.setOnClickListener {
|
HttpManager.getVipContent(2).request(this){ _, data->
|
val buyRuleDialog = BuyRuleDialog()
|
buyRuleDialog.arguments = bundleOf("rule" to data,"title" to "会员用户协议")
|
buyRuleDialog.callback = object :StringCallback{
|
override fun onResult(rst: String) {
|
cb_rule.isChecked = rst == "ok"
|
}
|
}
|
buyRuleDialog.showAllowingStateLoss(supportFragmentManager,"rule")
|
}
|
}
|
|
tv_action.setOnClickListener {
|
if (cb_rule.isChecked){
|
PayDialog.show(supportFragmentManager,object :StringCallback{
|
override fun onResult(rst: String) {
|
HttpManager.placeOrder(3,rst.toInt(),2,price[adapter.checked],null,null,adapter.checked+1 )
|
.request(this@VipActivity){_,data->
|
orderId = data?.orderId?:""
|
if (rst == "1")
|
data?.jumpToWx(this@VipActivity)
|
else
|
browse(data?.qrcodeUrl?:"")
|
}
|
}
|
},enableBalance = false)
|
}else
|
toast("请阅读并同意《会员用户协议》")
|
}
|
}
|
|
override fun initView() {
|
titleBar.gone()
|
rv_price.layoutManager = GridLayoutManager(this,3)
|
rv_price.adapter = adapter
|
val settings = webView.settings
|
settings.javaScriptEnabled = true
|
settings.javaScriptCanOpenWindowsAutomatically = true
|
settings.defaultTextEncodingName = "utf-8"
|
settings.domStorageEnabled = true
|
settings.setSupportZoom(true)
|
// settings.textZoom = 200
|
settings.useWideViewPort = true
|
settings.loadWithOverviewMode = true
|
settings.layoutAlgorithm = WebSettings.LayoutAlgorithm.TEXT_AUTOSIZING
|
webView.webChromeClient = object : WebChromeClient() {}
|
webView.webViewClient = object : WebViewClient() {}
|
PayUtil.addPayListener(this)
|
showVipInfo()
|
getPrice()
|
getH5()
|
}
|
|
private fun showVipInfo() {
|
HttpManager.getUserInfo().request(this){_,data->
|
data?.apply {
|
tv_vip.text = if (isVip == 2){
|
bg_vip.backgroundResource = R.mipmap.no_vip
|
tv_describe.text = "升级为会员,解锁会员专属体验"
|
"你还未开通会员服务"
|
} else{
|
bg_vip.backgroundResource = R.mipmap.bg_vip
|
tv_describe.text = "您将享受所有会员专享音频,尽情畅游泉疗愈世界"
|
"${vipExpireTime?.substring(0,10)}到期"
|
}
|
}
|
}
|
}
|
|
private fun getPrice() {
|
HttpManager.getVipPrice().request(this){_,data->
|
data?.apply {
|
price.clear()
|
price.add(monthlyVip)
|
price.add(quarterlyVip)
|
price.add(annualVip)
|
adapter.notifyDataSetChanged()
|
}
|
}
|
}
|
|
private fun getH5(){
|
HttpManager.getVipContent(1).request(this){_,data->
|
val sHead =
|
"<html><head><meta name=\"viewport\" content=\"width=device-width, " + "initial-scale=1.0, minimum-scale=0.5, maximum-scale=2.0, user-scalable=yes\" />" + "<style>img{max-width:100% !important;height:auto !important;}</style>" + "<style>body{max-width:100% !important;}</style>" + "</head><body>"
|
webView!!.loadDataWithBaseURL(
|
null,
|
sHead + data,
|
"text/html",
|
"utf-8",
|
null
|
)
|
}
|
}
|
|
private fun checkPayStatus(){
|
if (!orderId.isNullOrEmpty()){
|
HttpManager.queryPayment(orderId).request(this){_,data->
|
when(data){
|
"pending"->{
|
toast("未查询到支付结果,如已付款请忽略")
|
}
|
"succeeded"->{
|
toast("支付成功")
|
onPaySuccess()
|
}
|
"failed"->{
|
toast("支付失败")
|
}
|
}
|
}
|
orderId = ""
|
}
|
}
|
|
override fun onDestroy() {
|
super.onDestroy()
|
PayUtil.unregisterApp()
|
PayUtil.removePayListener(this)
|
}
|
|
override fun onPaySuccess() {
|
showVipInfo()
|
EventBus.getDefault().post(EmptyEvent(Const.EventCode.USER_INFO_CHANGED))
|
}
|
|
override fun onPayCancel() {
|
}
|
|
override fun onPayError(msg: String) {
|
}
|
|
override fun onResume() {
|
super.onResume()
|
checkPayStatus()
|
}
|
}
|