fix
lmw
2023-03-14 128cbeac95dbc995fe1760bbd0f0a985fa5d23ba
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
package com.fuban.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 com.fuban.user.R
import com.fuban.user.ui.trip.ChooseCouponActivity
import com.fuban.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 val isCancel by lazy {
        arguments?.getBoolean("isCancel",false)?:false
    }
    private val coupon by lazy {
        arguments?.getInt("coupon",0)?:0
    }
    private val orderId by lazy {
        arguments?.getInt("id",0)?:0
    }
    private val type by lazy {
        arguments?.getInt("type",0)?:0
    }
    private val isLogistics by lazy {
        arguments?.getBoolean("isLogistics",false)?:false
    }
    private var payWay = 2 //1=微信,2=支付宝,3=余额
    private var couponId = 0
 
    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        couponId = 0
        tv_money.text = String.format(if (isCancel) "%.2f元" else "¥%.2f",money)
        group_coupon.visibility = if (isCancel) { //取消支付没有优惠券
            View.GONE
        } else {
            tv_coupon.text = String.format("%d张可用",coupon)
            rb_balance.text = String.format("充值余额(%.2f可用)",balance)
            View.VISIBLE
        }
        if (isLogistics){ //物流订单没有优惠券
            group_coupon.gone()
        }
        if (type == Const.OrderType.TYPE_CROSS_CITY) //跨城支付有线下支付
            rb_offline.gone()
        tv_action.setOnClickListener {
            if (payWay == 3&&!isCancel&&balance<money)
                myToast("余额不足,请选择其他支付方式")
            else
                callback?.onOk(payWay,couponId)
        }
        iv_close.setOnClickListener {
            callback?.onClose()
            dismiss()
        }
        tv_coupon.setOnClickListener {
            startActivityForResult<ChooseCouponActivity>(1,"id" to orderId,"type" to type)
        }
        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){
            couponId = data.getIntExtra("id",0)
            val couponMoney = data.getDoubleExtra("money", 0.0)
            tv_coupon.text = String.format("-%.2f", couponMoney)
            tv_money.text = String.format("¥%.2f",money-couponMoney)
        }
    }
 
    interface Callback{
        fun onOk(way: Int,couponId: Int)
        fun onClose()
    }
 
    private var callback: Callback? = null
 
    fun setCallback(callback: Callback){
        this.callback = callback
    }
}