// // SPVIPOrderRecordViewController.swift // MoviaBox // // Created by 佳尔 on 2025/4/29. // import UIKit class SPVIPOrderRecordViewController: 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 = 74 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) } SPVIPOrderRecordCell.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 SPVIPOrderRecordViewController { private func _setupUI() { view.addSubview(tableView) tableView.snp.makeConstraints { make in make.edges.equalToSuperview() } } } //MARK: -------------- UITableViewDelegate & UITableViewDataSource -------------- extension SPVIPOrderRecordViewController: UITableViewDelegate, UITableViewDataSource { func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = SPVIPOrderRecordCell.dequeueReusableCell(tableView: tableView, indexPath: indexPath) cell.model = self.dataArr[indexPath.row] return cell } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { let count = self.dataArr.count if count == 0 { self.tableView.addNormalEmpty() } else { self.tableView.hiddenEmpty() } return count } } extension SPVIPOrderRecordViewController { private func requestDataArr(page: Int, completer: (() -> Void)?) { SPWalletAPI.requestRechargeRecord(buyType: .vip, 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?() } } }