package com.sinata.xqmuse.ui.home
|
|
import android.view.View
|
import androidx.core.os.bundleOf
|
import cn.sinata.xldutils.utils.SpanBuilder
|
import cn.sinata.xldutils.utils.showAllowingStateLoss
|
import com.sinata.xqmuse.R
|
import com.sinata.xqmuse.dialog.BuyRuleDialog
|
import com.sinata.xqmuse.dialog.TipDialog
|
import com.sinata.xqmuse.network.HttpManager
|
import com.sinata.xqmuse.network.entity.ConfirmOrder
|
import com.sinata.xqmuse.network.request
|
import com.sinata.xqmuse.ui.TransparentStatusBarActivity
|
import com.sinata.xqmuse.ui.course.PaySuccessActivity
|
import com.sinata.xqmuse.utils.extention.clickDelay
|
import com.sinata.xqmuse.utils.interfaces.StringCallback
|
import com.sinata.xqmuse.utils.pay.PayListener
|
import kotlinx.android.synthetic.main.activity_buy_course.*
|
import org.jetbrains.anko.browse
|
import org.jetbrains.anko.startActivity
|
import org.jetbrains.anko.toast
|
|
class BuyVoiceActivity:TransparentStatusBarActivity(),PayListener {
|
override fun setContentView() = R.layout.activity_buy_course
|
|
private val fromDetail by lazy { intent.getBooleanExtra("fromDetail",true) }
|
private val id by lazy { intent.getStringExtra("id") }
|
private var data:ConfirmOrder? = null
|
private var orderId = ""
|
|
override fun initClick() {
|
tv_buy_rule.clickDelay {
|
HttpManager.getH5(5).request(this){ _, data->
|
val buyRuleDialog = BuyRuleDialog()
|
buyRuleDialog.arguments = bundleOf("rule" to data?.content)
|
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){
|
if ((data?.generalPrice?:"0.0").toDouble() == 0.0||rb_balance.isChecked&&((data?.balance?:"0.0").toDouble()>=(data?.generalPrice?:"0.0").toDouble())){//余额勾选,并且可用余额大于课程价格,直接扣余额
|
payBalance()
|
}else if (rb_ali.isChecked){
|
pay(2)
|
}else if (rb_wx.isChecked){
|
pay(1)
|
}else{
|
toast("请选择支付方式")
|
}
|
}else
|
toast("请阅读并同意《购买协议》")
|
}
|
}
|
|
private fun pay(way:Int) {
|
tv_action.isEnabled = false
|
showDialog()
|
HttpManager.placeOrder(1,way,if (rb_balance.isChecked) 1 else 2,null,null,data?.id?:"",null,data?.orderId).request(this,success = {_,data->
|
tv_action.isEnabled = true
|
orderId = data?.orderId?:""
|
if (way == 1)
|
data?.jumpToWx(this)
|
else
|
browse(data?.qrcodeUrl?:"")
|
}){_,_->
|
tv_action.isEnabled = true
|
}
|
}
|
|
private fun payBalance() {
|
tv_action.isEnabled = false
|
showDialog()
|
HttpManager.gvieCourse(data?.id?:"",1).request(this,success = {_,_->
|
onPaySuccess()
|
}){_,_->
|
tv_action.isEnabled = true
|
}
|
}
|
|
override fun initView() {
|
val parcelableExtra = intent.getParcelableExtra<ConfirmOrder>("data")
|
if (parcelableExtra == null)
|
getData()
|
else{
|
data = parcelableExtra
|
data?.apply {
|
generalPrice = amount
|
if (!orderId.isNullOrEmpty()){
|
titleBar.addRightButton("取消订单",onClickListener = View.OnClickListener {
|
TipDialog.show(supportFragmentManager,"是否确认取消该订单?",object : TipDialog.OnClickCallback{
|
override fun onOk() {
|
HttpManager.cancel(orderId).request(this@BuyVoiceActivity){_,_->
|
toast("取消成功")
|
setResult(RESULT_OK)
|
finish()
|
}
|
}
|
|
override fun onCancel() {
|
}
|
})
|
})
|
}
|
iv_cover.setImageURI(coverUrl.split(",").firstOrNull())
|
tv_title.text = title
|
tv_price.text = SpanBuilder("¥$generalPrice").size(0,1,11).build()
|
tv_money.text = SpanBuilder("¥$generalPrice").size(0,1,11).build()
|
tv_total.text = generalPrice
|
val s = "余额抵扣 当前可用 ¥$balance"
|
rb_balance.text = SpanBuilder(s).size(4,s.length,11).color(this@BuyVoiceActivity,4,s.length,R.color.textColor99).build()
|
rb_balance.isChecked = !(balance.isNullOrEmpty()||balance.toDouble() == 0.0)
|
if ((data?.generalPrice?:"0.0").toDouble() == 0.0){
|
rb_ali.isEnabled = false
|
rb_wx.isEnabled = false
|
rb_ali.alpha = 0.6f
|
rb_wx.alpha = 0.6f
|
}
|
}
|
}
|
}
|
|
private fun getData() {
|
HttpManager.confirmOrderVoice(id?:"").request(this){_,data->
|
this.data = data
|
data?.apply {
|
iv_cover.setImageURI(coverUrl.split(",").firstOrNull())
|
tv_title.text = meditationTitle
|
// tv_teacher.text = "导师 $tutorName"
|
tv_price.text = SpanBuilder("¥$generalPrice").size(0,1,11).build()
|
tv_money.text = SpanBuilder("¥$generalPrice").size(0,1,11).build()
|
tv_total.text = generalPrice
|
val s = "余额抵扣 当前可用 ¥$balance"
|
rb_balance.text = SpanBuilder(s).size(4,s.length,11).color(this@BuyVoiceActivity,4,s.length,R.color.textColor99).build()
|
rb_balance.isChecked = !(balance.isNullOrEmpty()||balance.toDouble() == 0.0)
|
}
|
}
|
}
|
|
private fun checkPayStatus(){
|
if (!orderId.isNullOrEmpty()){
|
HttpManager.queryPayment(orderId).request(this){_,data->
|
when(data){
|
"pending"->{
|
toast("未查询到支付结果,如已付款请忽略")
|
}
|
"succeeded"->{
|
toast("支付成功")
|
onPaySuccess()
|
}
|
"failed"->{
|
toast("支付失败")
|
}
|
}
|
}
|
orderId = ""
|
}
|
}
|
|
override fun onResume() {
|
super.onResume()
|
checkPayStatus()
|
}
|
|
override fun onPaySuccess() {
|
setResult(RESULT_OK)
|
startActivity<PaySuccessActivity>("data" to data,"fromDetail" to fromDetail,"isAudio" to true)
|
finish()
|
}
|
|
override fun onPayCancel() {
|
}
|
|
override fun onPayError(msg: String) {
|
}
|
}
|