无故事王国
2023-12-22 c490a22b7cf6949a0b45eb8ee732bace1c023eeb
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
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
//
//  PaymentView.swift
//  WanPai
//
//  Created by 杨锴 on 2023/6/8.
//
 
import UIKit
import JQTools
 
class PaymentView: UIView,JQNibView{
 
    enum PaymentEnumType {
    case course //课程
    case yard //场地
    case joinMember //会员加入
    case game //游戏
    case recharge //充值
    case goods(ExchangeType)
    case activity
    }
 
    @IBOutlet weak var view_container: UIView!
    @IBOutlet weak var cons_bottom: NSLayoutConstraint!
    @IBOutlet weak var btn_wechat: UIButton!
    @IBOutlet weak var btn_alipay: UIButton!
    @IBOutlet weak var btn_coin: UIButton!
    @IBOutlet weak var btn_course: UIButton!
    @IBOutlet weak var label_integral: UILabel!
    
    @IBOutlet weak var view_wechat: UIView!
    @IBOutlet weak var view_alipay: UIView!
    @IBOutlet weak var view_coin: UIView!
    @IBOutlet weak var view_course: UIView!
    @IBOutlet weak var view_integral: UIView!
    
    @IBOutlet weak var label_wechatMoney: UILabel!
    @IBOutlet weak var label_aliPayMoney: UILabel!
    @IBOutlet weak var label_coinMoney: UILabel!
    @IBOutlet weak var label_courseMoney: UILabel!
    @IBOutlet weak var btn_complete: UIButton!
    @IBOutlet weak var btn_integral: UIButton!
    private var hasNotStudent:Bool = false
    private var clouse:((PayType)->Void)?
    private var payType:PayType!
    private var paymentEnumType:PaymentEnumType!
    private var customType = [PayType]() //支付项目
 
    override func awakeFromNib() {
        super.awakeFromNib()
 
        cons_bottom.constant = -(225 + UIDevice.jq_safeEdges.bottom)
        view_wechat.isHidden = true
        view_coin.isHidden = true
        view_course.isHidden = true
        view_alipay.isHidden = true
        alpha = 0
 
        layoutIfNeeded()
    }
 
    static func show(enumType:PaymentEnumType,money:(ali:Double?,wx:Double?,coin:Int?,course:Int?,integral:Int?),hasNotStudent:Bool = false,_ clouse:@escaping (PayType)->Void){
        let paymentView = PaymentView.jq_loadNibView()
        paymentView.frame = sceneDelegate?.window?.frame ?? .zero
        paymentView.clouse = clouse
        paymentView.paymentEnumType = enumType
//        paymentView.view_wechat.isHidden = (money.wx == nil || money.wx == 0)
        paymentView.view_coin.isHidden = (money.coin == nil || money.coin == 0)
        paymentView.view_course.isHidden = (money.course == nil || money.course == 0)
        paymentView.view_alipay.isHidden = (money.ali == nil || money.ali == 0)
        paymentView.view_integral.isHidden = (money.integral == nil || money.integral == 0)
        paymentView.label_aliPayMoney.text = money.ali?.currency() ?? "0"
        paymentView.label_wechatMoney.text = money.wx?.currency() ?? "0"
        paymentView.label_coinMoney.text = "\(money.coin ?? 0)币"
        paymentView.label_courseMoney.text = "\(money.course ?? 0)课时"
        paymentView.label_integral.text = "\(money.integral ?? 0)积分"
        paymentView.view_course.alpha = hasNotStudent ? 0.5:1
        sceneDelegate?.window?.addSubview(paymentView)
        paymentView.cons_bottom.constant = 0
 
        var customType = [PayType]()
        if !paymentView.view_alipay.isHidden{customType.append(.aliPay)}
        if !paymentView.view_wechat.isHidden{customType.append(.wechat)}
        if !paymentView.view_coin.isHidden{customType.append(.coin)}
        paymentView.customType = customType
        paymentView.btn_course.isUserInteractionEnabled = !hasNotStudent
 
        paymentView.payType = customType.first
        switch customType.first {
            case .aliPay:paymentView.btn_alipay.isSelected = true
            case .coin:paymentView.btn_coin.isSelected = true
            case .wechat:paymentView.btn_wechat.isSelected = true
            default:break
        }
 
        UIView.animate(withDuration: 0.4) {
            paymentView.alpha = 1
            paymentView.layoutIfNeeded()
        }
    }
    
    override func layoutSubviews() {
        super.layoutSubviews()
        view_container.jq_addCorners(corner: [.topLeft,.topRight], radius: 20)
        btn_complete.localGradientColor(cornerRadius: 20)
    }
    
    
    private func hidden(){
        cons_bottom.constant = -(225 + UIDevice.jq_safeEdges.bottom)
        UIView.animate(withDuration: 0.4) {
            self.alpha = 0
            self.layoutIfNeeded()
        }completion: { _ in
            self.removeFromSuperview()
        }
    }
    
    
    @IBAction func tapAction(_ sender: UIButton) {
        switch sender.tag{
            case 10:
                payType = .wechat
            case 11:
                payType = .aliPay
            case 12:
                payType = .coin
            case 14:
                payType = .courseNum
            case 15:
                payType = .integral
            default:break
        }
        
        btn_alipay.isSelected = payType == .aliPay
        btn_coin.isSelected = payType == .coin
        btn_wechat.isSelected = payType == .wechat
        btn_course.isSelected = payType == .courseNum
        btn_integral.isSelected = payType == .integral
    }
    
    @IBAction func paymentAction(_ sender: UIButton) {
        //场地,游戏,门票 可免费,根据上面的金额,展示了哪些条目判断,如果都没展示,金额全部会是0
        switch paymentEnumType {
            case .yard,.game:
                if payType == nil && customType.count == 0{
                    payType = .coin
                }else{
                    guard payType != nil else {alertError(msg: "请选择支付方式");return}
                }
            case .goods(let type):
                if type == .ticket{
                    if payType == nil && customType.count == 0{
                        payType = .coin
                    }else{
                        guard payType != nil else {alertError(msg: "请选择支付方式");return}
                    }
                }else{
                    guard payType != nil else {alertError(msg: "请选择支付方式");return}
                }
            default:guard payType != nil else {alertError(msg: "请选择支付方式");return}
        }
        clouse?(payType!)
        hidden()
    }
    
    @IBAction func cancelAction(_ sender: UIButton) {
        hidden()
    }
    
}