lmw
2023-06-16 03972ad1d3ce6ffe0be0395c0a4d5dcb4474031f
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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
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
    }
}