杨锴
2025-04-16 09a372bc45fde16fd42257ab6f78b8deeecf720b
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
//
//  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
                }
}