//
|
// TreeTeskEnergyExchangeVC.swift
|
// XQMuse
|
//
|
// Created by 无故事王国 on 2024/9/11.
|
//
|
|
import UIKit
|
import JQTools
|
import RxSwift
|
import RxCocoa
|
import RxRelay
|
|
class TreeTeskExchangeViewModel:RefreshModel<EnergyExchangeGiftModel>{
|
var energyValue = BehaviorRelay<Int>(value:0)
|
|
override func api() -> (Observable<BaseResponse<[EnergyExchangeGiftModel]>>)? {
|
return Services.energyExchangeGift(page: page)
|
}
|
}
|
|
class TreeTeskEnergyExchangeVC: BaseVC {
|
|
@IBOutlet weak var tableView: UITableView!
|
@IBOutlet weak var label_energy: UILabel!
|
@IBOutlet weak var image_qrCode: UIImageView!
|
|
var viewModel = TreeTeskExchangeViewModel()
|
|
override func viewDidLoad() {
|
super.viewDidLoad()
|
title = "礼品兑换"
|
viewModel.configure(tableView)
|
viewModel.beginRefresh()
|
|
getData()
|
|
Services.getCustomerCode().subscribe(onNext: {[weak self] data in
|
self?.image_qrCode.sd_setImage(with: URL(string: data.data?.jq_urlEncoded() ?? ""))
|
}).disposed(by: disposeBag)
|
|
let longPress = UILongPressGestureRecognizer(target: self, action: #selector(longPressCopyAction(_:)))
|
longPress.minimumPressDuration = 0.8
|
image_qrCode.isUserInteractionEnabled = true
|
image_qrCode.addGestureRecognizer(longPress)
|
}
|
|
override func setUI() {
|
|
let btn = UIButton(type: .custom)
|
btn.setTitle("兑换记录", for: .normal)
|
btn.setTitleColor(.black.withAlphaComponent(0.55), for: .normal)
|
btn.titleLabel?.font = .systemFont(ofSize: 14, weight: .medium)
|
btn.addTarget(self, action: #selector(exchangeRecordAction), for: .touchUpInside)
|
|
navigationItem.rightBarButtonItem = UIBarButtonItem(customView: btn)
|
|
tableView.delegate = self
|
tableView.dataSource = self
|
tableView.separatorStyle = .none
|
tableView.register(UINib(nibName: "TreeTeskEnergyTCell", bundle: nil), forCellReuseIdentifier: "_TreeTeskEnergyTCell")
|
}
|
|
private func getData(){
|
Services.getTotalEnergy().subscribe(onNext: {[weak self] data in
|
self?.viewModel.energyValue.accept(data.data ?? 0)
|
self?.label_energy.text = "\(data.data ?? 0)"
|
}).disposed(by: disposeBag)
|
}
|
|
@objc func exchangeRecordAction(){
|
let vc = TreeTeskEnergyExchangeRecordVC()
|
push(vc: vc)
|
}
|
|
@objc private func longPressCopyAction(_ gesture:UILongPressGestureRecognizer){
|
if gesture.state == .began{
|
if let img = image_qrCode.image{
|
image_qrCode.isUserInteractionEnabled = false
|
UIImageWriteToSavedPhotosAlbum(img, nil,nil, nil)
|
alertSuccess(msg: "保存成功")
|
}
|
}
|
}
|
}
|
|
extension TreeTeskEnergyExchangeVC:UITableViewDataSource & UITableViewDelegate{
|
|
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
|
|
let m = viewModel.dataSource.value[indexPath.row]
|
|
guard m.receiveStatus == .no else {
|
CommonAlertView.show(title: "提示", content: "你已经兑换过了", isSingle: true) { _ in
|
|
}
|
return
|
}
|
|
guard viewModel.energyValue.value >= m.energyValue else {
|
CommonAlertView.show(title: "提示", content: "兑换能量值不足", isSingle: true) { _ in
|
|
}
|
return
|
}
|
|
//17064
|
let attribute = AttributedStringbuilder.build().add(string: "是否确认使用\(m.energyValue)能量值兑换当前礼品?\n兑换后系统将自动扣除能量值", withFont: .systemFont(ofSize: 14, weight: .medium), withColor: .black.withAlphaComponent(0.59), indent: 0, lineSpace: 6).mutableAttributedString
|
|
CommonAlertView.show(title: "提示", attribute: attribute, isSingle: false, cancelStr: "再想想", completeStr: "确认") { state in
|
if state{
|
Services.exchangeGift(prizeId: m.id).subscribe(onNext: {data in
|
TreeTeskExchangeSuccessView.show(code: data.data ?? "",customerImage: self.image_qrCode.image ?? UIImage())
|
self.viewModel.beginRefresh()
|
self.getData()
|
}).disposed(by: self.disposeBag)
|
}
|
}
|
}
|
|
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
|
let m = viewModel.dataSource.value[indexPath.row]
|
let cell = tableView.dequeueReusableCell(withIdentifier: "_TreeTeskEnergyTCell") as! TreeTeskEnergyTCell
|
cell.setEnergyExchangeGiftModel(m)
|
return cell
|
}
|
|
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
|
return viewModel.dataSource.value.count
|
}
|
|
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
|
return 91
|
}
|
}
|