//
|
// CouponPaymentView.swift
|
// OKProject
|
//
|
// Created by 无故事王国 on 2022/2/11.
|
// Copyright © 2022 yangwang. All rights reserved.
|
//
|
|
import UIKit
|
import RxSwift
|
import RxCocoa
|
|
class CouponPaymentView: UIView,NIBLoadable{
|
|
@IBOutlet weak var label_payMoney: UILabel!
|
@IBOutlet weak var label_originPayMoney: UILabel!
|
@IBOutlet weak var view_container: UIView!
|
@IBOutlet weak var originMoneyView: UIView!
|
@IBOutlet weak var paymentBtn: UIButton!
|
@IBOutlet weak var wechatImg: UIImageView!
|
@IBOutlet weak var aliImg: UIImageView!
|
@IBOutlet weak var balanceImg: UIImageView!
|
@IBOutlet weak var balanceL: UILabel!
|
|
private var money:Double = 0
|
private var cardId:Int = 0
|
private var originMoney:Double?
|
private var orderType:Int = 0
|
private let payType = BehaviorRelay<PayTypeNormal>(value: .balance)
|
private var dismissClouse:(()->Void)?
|
// private let travelServicePayViewModel = TravelServicePayViewModel()
|
|
override func awakeFromNib() {
|
super.awakeFromNib()
|
}
|
|
/// 获取Self
|
/// - Returns: Self
|
class func instance(cardId: Int,money:Double,originMoney:Double? = nil) -> CouponPaymentView {
|
let v = CouponPaymentView.loadViewFromNib()
|
v.setupViews()
|
v.money = money
|
v.originMoney = originMoney
|
v.cardId = cardId
|
return v
|
}
|
|
func setupViews() {
|
self.frame = UIScreen.main.bounds
|
self.view_container.transform = CGAffineTransform.init(translationX: 0, y: screenH)
|
bindRx()
|
}
|
|
func bindRx() {
|
payType.subscribe(onNext: {[weak self] type in
|
guard let weakSelf = self else { return }
|
switch type{
|
case .ali:
|
weakSelf.aliImg.image = UIImage(named: "icon_raidobutton_selected")
|
weakSelf.wechatImg.image = UIImage(named: "icon_raidobutton")
|
weakSelf.balanceImg.image = UIImage(named: "icon_raidobutton")
|
case .balance:
|
weakSelf.aliImg.image = UIImage(named: "icon_raidobutton")
|
weakSelf.wechatImg.image = UIImage(named: "icon_raidobutton")
|
weakSelf.balanceImg.image = UIImage(named: "icon_raidobutton_selected")
|
case .weChat:
|
weakSelf.aliImg.image = UIImage(named: "icon_raidobutton")
|
weakSelf.wechatImg.image = UIImage(named: "icon_raidobutton_selected")
|
weakSelf.balanceImg.image = UIImage(named: "icon_raidobutton")
|
case .offline:
|
break
|
case .company:
|
break
|
|
}
|
|
}).disposed(by: rx.disposeBag)
|
|
|
// travelServicePayViewModel.queryBalanceSubject.subscribe(onNext: {status in
|
// switch status {
|
// case .loading:break
|
// case .success(let model):
|
// guard let data = model as? QueryBalanceModel else{return}
|
// self.balanceL.text = "余额(余额\(data.balance)元)"
|
// break
|
// default:break
|
// }
|
//
|
// }).disposed(by: rx.disposeBag)
|
|
// travelServicePayViewModel.orderId.accept(cardId)
|
// travelServicePayViewModel.orderType.accept(.taxi)
|
// travelServicePayViewModel.queryBalance()
|
}
|
|
/// 显示
|
func show(defaultPayBy:PayTypeNormal = .weChat,orderType:Int,dismissClouse: @escaping ()->Void) {
|
self.label_payMoney.text = String(format: "¥%@", money.ld_formatFloat)
|
self.label_originPayMoney.text = String(format: "¥%@元", (originMoney ?? 0).ld_formatFloat)
|
originMoneyView.isHidden = originMoney == nil
|
self.paymentBtn.setTitle(String(format: "立即支付¥%@元", money.ld_formatFloat), for: .normal)
|
self.balanceL.text = "余额(余额:\(app.userInfo.balance.ld_formatFloat)元)"
|
app.window?.addSubview(self)
|
UIView.animate(withDuration: 0.2) {
|
self.view_container.transform = CGAffineTransform.identity
|
}
|
self.orderType = orderType
|
self.dismissClouse = dismissClouse
|
payType.accept(defaultPayBy)
|
}
|
|
@IBAction func paymentAction(_ sender: UIButton) {
|
APIManager.shared.provider.rx.request(.payTaxiCard(id: cardId, payType: payType.value)).map(YYModel<PayModel>.self).validate().subscribe(onSuccess: {[weak self] model in
|
guard let weakSelf = self else { return }
|
guard let data = model.data else { return }
|
switch weakSelf.payType.value {
|
case .weChat:
|
let request = YYWeChatPayRequest(partnerId: data.partnerid, prepayId: data.prepayid, package: data.package, nonceStr: data.noncestr, timeStamp: TimeInterval(data.timestamp) ?? 0, sign: data.sign)
|
YYPaymentManager.shared.sendPaymentRequest(request) {result in
|
switch result {
|
case .success:
|
alert(text: "支付成功")
|
NotificationCenter.default.post(name: UpdateShopList_RefreshNoti, object: weakSelf.orderType)
|
weakSelf.dismiss()
|
case .cancel:
|
alert(text: "支付取消")
|
case .failure(let error):
|
alert(text: error.localizedDescription)
|
}
|
}
|
case .ali:
|
let request = PayModel(orderString: data.orderString)
|
YYPaymentManager.shared.sendPaymentRequest(request) { result in
|
switch result {
|
case .success:
|
alert(text: "支付成功")
|
NotificationCenter.default.post(name: UpdateShopList_RefreshNoti, object: weakSelf.orderType)
|
weakSelf.dismiss()
|
case .cancel:
|
alert(text: "支付取消")
|
case .failure(let error):
|
alert(text: error.localizedDescription)
|
}
|
}
|
case .balance:
|
if model.code == 200{
|
alert(text: "支付成功")
|
NotificationCenter.default.post(name: UpdateShopList_RefreshNoti, object: weakSelf.orderType)
|
app.userInfo.balance -= weakSelf.money
|
app.userInfo.save()
|
weakSelf.dismiss()
|
}else{
|
alert(text: "余额不足")
|
}
|
default:break
|
}
|
}) { error in
|
alert(text: error.localizedDescription)
|
}.disposed(by: rx.disposeBag)
|
}
|
|
/// 隐藏
|
func dismiss() {
|
UIView.animate(withDuration: 0.2, animations: {
|
self.view_container.transform = CGAffineTransform.init(translationX: 0, y: screenH)
|
}) { (_) in
|
self.dismissClouse?()
|
self.removeFromSuperview()
|
}
|
|
}
|
|
@IBAction func paytypeAction(_ sender: UIButton) {
|
switch sender.tag {
|
case 10:
|
payType.accept(.weChat)
|
case 11:
|
payType.accept(.ali)
|
case 12:
|
payType.accept(.balance)
|
default:break
|
}
|
}
|
|
@IBAction func closeAction(_ sender: Any) {
|
dismiss()
|
}
|
|
}
|