XSeri/XSeri/Class/Store/Controller/XSStoreViewController.swift
2026-03-19 10:34:16 +08:00

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()
}
}
}