fix
杨锴
2025-04-16 f646fbebad928833d15546a36e37768d00fe6173
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
172
173
174
//
//  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
        case huiminCard
                                case worldCup
                }
 
                @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) || !WXApi.isWXAppInstalled()
                                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,.worldCup:
                                                                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()
                }
 
}