146 lines
3.6 KiB
Swift
146 lines
3.6 KiB
Swift
//
|
|
// XSStoreViewController.swift
|
|
// XSeri
|
|
//
|
|
// Created by 长沙鸿瑶 on 2026/3/16.
|
|
//
|
|
|
|
import UIKit
|
|
|
|
class XSStoreViewController: XSViewController {
|
|
|
|
private var payRequest: XSPayDataRequest?
|
|
|
|
private var payDataModel: XSPayDateModel? = XSIapManager.manager.payDateModel
|
|
|
|
private lazy var scrollView: XSScrollView = {
|
|
let scrollView = XSScrollView()
|
|
return scrollView
|
|
}()
|
|
|
|
private lazy var stackView: UIStackView = {
|
|
let view = UIStackView()
|
|
view.axis = .vertical
|
|
view.spacing = 12
|
|
return view
|
|
}()
|
|
|
|
private lazy var coinsView: XSStoreCoinsView = {
|
|
let view = XSStoreCoinsView()
|
|
view.buyFinishHandle = { [weak self] in
|
|
self?.buyFinish()
|
|
}
|
|
return view
|
|
}()
|
|
|
|
private lazy var vipView: XSStoreVipView = {
|
|
let view = XSStoreVipView()
|
|
view.buyFinishHandle = { [weak self] in
|
|
self?.buyFinish()
|
|
}
|
|
return view
|
|
}()
|
|
|
|
override func viewDidLoad() {
|
|
super.viewDidLoad()
|
|
self.title = "Store".localized
|
|
|
|
|
|
xs_setupUI()
|
|
|
|
reloadData()
|
|
|
|
requestPayData()
|
|
}
|
|
|
|
|
|
override func viewWillAppear(_ animated: Bool) {
|
|
super.viewWillAppear(animated)
|
|
self.navigationController?.setNavigationBarHidden(false, animated: true)
|
|
xs_setNavigationStyle()
|
|
}
|
|
|
|
func reloadData() {
|
|
self.stackView.xs_removeAllArrangedSubview()
|
|
guard let model = self.payDataModel else { return }
|
|
|
|
if let sort = model.sort, sort.count > 0 {
|
|
sort.forEach {
|
|
if $0 == .vip {
|
|
self.addVipView()
|
|
} else if $0 == .coin {
|
|
self.addCoinsView()
|
|
}
|
|
}
|
|
} else {
|
|
self.addVipView()
|
|
self.addCoinsView()
|
|
}
|
|
// self.stackView.addArrangedSubview(tipView)
|
|
}
|
|
|
|
private func addCoinsView() {
|
|
guard let model = self.payDataModel else { return }
|
|
|
|
var newList: [XSPayItem] = []
|
|
if let list = model.list_coins, list.count > 0 {
|
|
newList = list
|
|
}
|
|
if newList.count > 0 {
|
|
coinsView.setDataArr(newList)
|
|
self.stackView.addArrangedSubview(coinsView)
|
|
}
|
|
}
|
|
|
|
private func addVipView() {
|
|
guard let list = payDataModel?.list_sub_vip else { return }
|
|
guard list.count > 0 else { return }
|
|
|
|
self.vipView.dataArr = list
|
|
self.stackView.addArrangedSubview(self.vipView)
|
|
}
|
|
|
|
private func buyFinish() {
|
|
self.requestPayData()
|
|
}
|
|
|
|
}
|
|
|
|
extension XSStoreViewController {
|
|
|
|
private func xs_setupUI() {
|
|
view.addSubview(scrollView)
|
|
scrollView.addSubview(stackView)
|
|
|
|
scrollView.snp.makeConstraints { make in
|
|
make.left.right.bottom.equalToSuperview()
|
|
make.top.equalToSuperview().offset(XSScreen.navBarHeight)
|
|
}
|
|
|
|
stackView.snp.makeConstraints { make in
|
|
make.left.centerX.equalToSuperview()
|
|
make.top.equalToSuperview().offset(12)
|
|
make.bottom.equalToSuperview().offset(-(XSScreen.safeBottom + 10))
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
|
|
extension XSStoreViewController {
|
|
|
|
private func requestPayData() {
|
|
payRequest = XSPayDataRequest()
|
|
|
|
payRequest?.requestProducts { [weak self] model in
|
|
guard let self = self else { return }
|
|
guard let model = model else { return }
|
|
|
|
self.payDataModel = model
|
|
|
|
self.reloadData()
|
|
}
|
|
|
|
}
|
|
}
|