OrderFinishPayController.swift 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. //
  2. // ShoppingCartFinishPayController.swift
  3. // RainbowPlanet
  4. //
  5. // Created by Christopher on 2019/5/9.
  6. // Copyright © 2019 RainbowPlanet. All rights reserved.
  7. // 购物车--支付完成Vc
  8. import UIKit
  9. import RxSwift
  10. /// OrderFinishPayVCType
  11. ///
  12. /// - cart: 购物车
  13. /// - productDetail: 订单详情
  14. /// - order: 订单
  15. /// - orderDetails: 订单详情
  16. enum OrderFinishPayVCType {
  17. case cart
  18. case productDetail
  19. case order
  20. case orderDetail
  21. }
  22. class OrderFinishPayController: BaseViewController {
  23. var payStatus: Bool? = true {
  24. didSet {
  25. if payStatus ?? true {
  26. navigationBar.title = "支付成功"
  27. } else {
  28. navigationBar.title = "支付失败"
  29. }
  30. }
  31. }
  32. var orderFinishPayVCType : OrderFinishPayVCType?
  33. typealias ReloadClosure = () -> Void
  34. var reloadClosure : ReloadClosure?
  35. var productSearchModelArray = Array<ProductSearchModel>()
  36. override func viewDidLoad() {
  37. super.viewDidLoad()
  38. setupViews()
  39. setupLayouts()
  40. setupData()
  41. }
  42. override func setupViews() {
  43. view.addSubview(finishPayView)
  44. }
  45. override func setupLayouts() {
  46. finishPayView.snp.makeConstraints { (make) in
  47. make.bottom.left.right.equalToSuperview()
  48. make.top.equalTo(kNavBarTotalHeight)
  49. }
  50. }
  51. override func setupData() {
  52. if !(payStatus ?? true) {
  53. configPickupNodeIndexApi()
  54. }
  55. finishPayView.tableView.addHeaderWithHeader(withBeginRefresh: true, animation: false) { [weak self] (page) in
  56. self?.productHotSaleApi(page: page)
  57. }
  58. navigationBar.onClickLeftButton = {
  59. [weak self] in
  60. switch self?.orderFinishPayVCType {
  61. case .cart?:
  62. self?.navigationController?.popToRootViewController(animated: true)
  63. break
  64. case .productDetail?:
  65. self?.navigationController?.popToClass(type: ProductDetailViewController.self)
  66. break
  67. case .order?:
  68. if self?.payStatus ?? true {
  69. if let reloadClosure = self?.reloadClosure {
  70. reloadClosure()
  71. }
  72. }
  73. self?.navigationController?.popViewController(animated: true)
  74. break
  75. case .orderDetail?:
  76. if self?.payStatus ?? true {
  77. NotificationCenter.default.post(name: NSNotification.Name(rawValue: "OrderFinishPayVCOrderDetail"), object: nil)
  78. self?.navigationController?.popToClass(type: OrderViewController.self)
  79. }else {
  80. self?.navigationController?.popViewController(animated: true)
  81. }
  82. break
  83. default:
  84. break
  85. }
  86. }
  87. }
  88. private lazy var finishPayView: OrderFinishPayView = {
  89. let finishPayView = OrderFinishPayView()
  90. finishPayView.payStatus = payStatus
  91. finishPayView.repayTransBlock = {
  92. [weak self] in
  93. let vc = OrderViewController()
  94. vc.orderVCType = .pendingPayment
  95. self?.navigationController?.pushViewController(vc, animated: true)
  96. }
  97. finishPayView.jumpTransBlock = {
  98. [weak self] (jType) in
  99. switch jType {
  100. case PayJumpDes.homePage:
  101. self?.tabBarController?.selectedIndex = 0
  102. self?.navigationController?.popToRootViewController(animated: false)
  103. case PayJumpDes.checkOrder:
  104. let vc = OrderViewController()
  105. vc.orderVCType = .toBeShipped
  106. self?.navigationController?.pushViewController(vc, animated: true)
  107. }
  108. }
  109. finishPayView.jumpToDetailTransClosure = {
  110. [weak self] (proId, shopId) in
  111. let vc = ProductDetailViewController()
  112. vc.productId = proId
  113. vc.shopId = shopId
  114. self?.navigationController?.pushViewController(vc, animated: true)
  115. }
  116. return finishPayView
  117. }()
  118. /// 商品热销
  119. func productHotSaleApi(page:Int = 1) {
  120. SwiftMoyaNetWorkServiceProduct.shared().productHotSaleApi(page: page) { [weak self] (productSearchListModel) -> (Void) in
  121. let productSearchListModel = productSearchListModel as? ProductSearchListModel
  122. if productSearchListModel?.pagination?.currentPage ?? 1 <= productSearchListModel?.pagination?.totalPages ?? 1 {
  123. if productSearchListModel?.pagination?.currentPage == 1{
  124. self?.productSearchModelArray.removeAll()
  125. }
  126. self?.productSearchModelArray = (self?.productSearchModelArray)! + (productSearchListModel?.data!)!
  127. self?.finishPayView.hotSaleModelArr = self?.productSearchModelArray
  128. } else {
  129. self?.finishPayView.hotSaleModelArr = self?.productSearchModelArray
  130. }
  131. }
  132. }
  133. func configPickupNodeIndexApi() {
  134. SwiftMoyaNetWorkServiceConfig.shared().configPickupNodeIndexApi {
  135. [weak self] (configModel) -> (Void) in
  136. self?.finishPayView.configModel = configModel as? ConfigModel
  137. }
  138. }
  139. }