// // SPCoinOrderRecordViewController.swift // MoviaBox // // Created by 佳尔 on 2025/4/29. // import UIKit class SPCoinOrderRecordViewController: SPViewController { private var dataArr: [SPRechargeRecordModel] = [] private var page: Int = 1 //MARK: UI属性 private lazy var tableView: SPTableView = { let tableView = SPTableView(frame: .zero, style: .plain) tableView.delegate = self tableView.dataSource = self tableView.rowHeight = 70 tableView.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: kSPTabbarSafeBottomMargin, right: 0) tableView.sp_addRefreshHeader { [weak self] in self?.handleHeaderRefresh(nil) } tableView.sp_addRefreshBackFooter(insetBottom: tableView.contentInset.bottom) { [weak self] in self?.handleFooterRefresh(nil) } SPCoinOrderRecordCell.registerCell(tableView: tableView) return tableView }() override func viewDidLoad() { super.viewDidLoad() setBackgroundView(isShowGradient: false, bgImage: nil, backgroundColor: .clear) requestDataArr(page: 1, completer: nil) _setupUI() } override func handleHeaderRefresh(_ completer: (() -> Void)?) { self.requestDataArr(page: 1) { [weak self] in self?.tableView.sp_endHeaderRefreshing() } } override func handleFooterRefresh(_ completer: (() -> Void)?) { self.requestDataArr(page: self.page + 1) { [weak self] in self?.tableView.sp_endFooterRefreshing() } } } extension SPCoinOrderRecordViewController { private func _setupUI() { view.addSubview(tableView) tableView.snp.makeConstraints { make in make.edges.equalToSuperview() } } } //MARK: -------------- UITableViewDelegate & UITableViewDataSource -------------- extension SPCoinOrderRecordViewController: UITableViewDelegate, UITableViewDataSource { func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = SPCoinOrderRecordCell.dequeueReusableCell(tableView: tableView, indexPath: indexPath) cell.model = self.dataArr[indexPath.row] return cell } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return self.dataArr.count } } extension SPCoinOrderRecordViewController { private func requestDataArr(page: Int, completer: (() -> Void)?) { SPWalletAPI.requestRechargeRecord(buyType: .coins, page: page) { [weak self] listModel in guard let self = self else { return } if let list = listModel?.list { if page == 1 { self.dataArr.removeAll() } self.dataArr += list self.page = page self.tableView.reloadData() } completer?() } } }