package com.kuanzhai.user.dialog
|
|
import android.app.Activity
|
import android.content.Intent
|
import android.os.Bundle
|
import android.view.Gravity
|
import android.view.LayoutInflater
|
import android.view.View
|
import android.view.ViewGroup
|
import androidx.fragment.app.DialogFragment
|
import cn.sinata.xldutils.gone
|
import cn.sinata.xldutils.utils.myToast
|
import cn.sinata.xldutils.visible
|
import com.kuanzhai.user.R
|
import com.kuanzhai.user.ui.mine.ChooseDiscountActivity
|
import com.kuanzhai.user.ui.trip.ChooseCouponActivity
|
import com.kuanzhai.user.utils.Const
|
import kotlinx.android.synthetic.main.dialog_pay.*
|
import org.jetbrains.anko.matchParent
|
import org.jetbrains.anko.support.v4.startActivityForResult
|
import org.jetbrains.anko.wrapContent
|
|
class PayDialog: DialogFragment() {
|
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
|
return inflater.inflate(R.layout.dialog_pay,container,false)
|
}
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
super.onCreate(savedInstanceState)
|
setStyle(STYLE_NO_FRAME,R.style.Dialog)
|
}
|
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
super.onActivityCreated(savedInstanceState)
|
dialog?.window?.setLayout(matchParent, wrapContent)
|
dialog?.window?.setGravity(Gravity.BOTTOM)
|
dialog?.setCanceledOnTouchOutside(false)
|
}
|
|
private val money by lazy {
|
arguments?.getDouble("money",0.0)?:0.0
|
}
|
private val balance by lazy {
|
arguments?.getDouble("balance",0.0)?:0.0
|
}
|
private var discount = 0.0
|
private val isCancel by lazy {
|
arguments?.getBoolean("isCancel",false)?:false
|
}
|
private val isCompany by lazy {
|
arguments?.getBoolean("isCompany",false)?:false
|
}
|
private var coupon = ""
|
|
private val orderId by lazy {
|
arguments?.getInt("id",0)?:0
|
}
|
private var discountType = 0 //数据类型(1=优惠券,2=打车卡)
|
|
private val type by lazy {
|
arguments?.getInt("type",0)?:0
|
}
|
private val isLogistics by lazy { //true,物流补差价
|
arguments?.getBoolean("isLogistics",false)?:false
|
}
|
private var payWay = 3 //1=微信,2=支付宝,3=余额
|
private var payMoney = 0.0 //实际支付价格:优惠后
|
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
super.onViewCreated(view, savedInstanceState)
|
// tv_origin_money.text = String.format(if (isCancel) "%.2f元" else "¥%.2f",money)
|
tv_origin_money.text = String.format("¥%.2f",money)
|
tv_money.text = String.format(if (isCancel) "%.2f元" else "¥%.2f",money)
|
if (isCompany){//企业公费
|
rb_ali.gone()
|
line1.gone()
|
rb_wx.gone()
|
line2.gone()
|
rb_balance.text = "企业授信额度"
|
}
|
group_coupon.visibility = if (isCancel||isLogistics) { //取消支付没有优惠券,补差价没有优惠券
|
View.GONE
|
} else {
|
coupon = arguments?.getString("coupon")?:""
|
discountType = arguments?.getInt("discountType",0)?:0
|
discount = arguments?.getDouble("discount",0.0)?:0.0
|
|
if (discountType!=0){ //有优惠
|
payMoney = if (money - discount >= 0) money - discount else 0.0
|
tv_money.text = String.format("¥%.2f",payMoney)
|
tv_coupon.text = String.format("%s优惠%.2f元",if (discountType == 1)"优惠券" else "优惠卡",discount)
|
}else{
|
payMoney = money
|
}
|
tv_action.text = "立即支付%.2f元".format(payMoney)
|
|
rb_balance.text = String.format("${if (isCompany) "企业授信额度" else "充值余额"}(%.2f可用)",balance)
|
View.VISIBLE
|
}
|
// if (isLogistics){ //物流订单没有优惠券
|
// group_coupon.gone()
|
// }
|
if (type == Const.OrderType.TYPE_CROSS_CITY&&!isCancel) //出租车支付有线下支付
|
rb_offline.gone()
|
tv_action.setOnClickListener {
|
if (payWay == 3&&!isCancel&&balance<payMoney)
|
myToast(if (isCompany) "额度不足,请申请企业额度" else "余额不足,请选择其他支付方式")
|
else
|
callback?.onOk(payWay,if (coupon.isEmpty()) 0 else coupon.toInt(),discountType)
|
}
|
iv_close.setOnClickListener {
|
callback?.onClose()
|
dismiss()
|
}
|
tv_coupon.setOnClickListener {
|
startActivityForResult<ChooseDiscountActivity>(1,"id" to orderId,"type" to type,"coupon" to coupon,"money" to money)
|
}
|
rg_pay.setOnCheckedChangeListener { _, i ->
|
payWay = when(i){
|
R.id.rb_wx->1
|
R.id.rb_ali->2
|
else->3
|
}
|
}
|
}
|
|
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
super.onActivityResult(requestCode, resultCode, data)
|
if (requestCode == 1&&resultCode == Activity.RESULT_OK&&data!=null){
|
coupon = data.getStringExtra("coupon")?:""
|
discount = "%.2f".format(data.getDoubleExtra("discount",0.0)).toDouble()
|
discountType = data.getIntExtra("discountType",0)
|
payMoney = if (money - discount>=0)money - discount else 0.0
|
if (coupon.isNotEmpty()){
|
tv_coupon.text = String.format("%s优惠%.2f元",if (discountType == 1)"优惠券" else "优惠卡",discount)
|
}else{
|
tv_coupon.text = ""
|
}
|
tv_money.text = String.format("¥%.2f",payMoney)
|
tv_action.text = "立即支付%.2f元".format(payMoney)
|
}
|
}
|
|
interface Callback{
|
fun onOk(way: Int,couponId: Int,couponType: Int)
|
fun onClose()
|
}
|
|
private var callback: Callback? = null
|
|
fun setCallback(callback: Callback){
|
this.callback = callback
|
}
|
}
|