QSLJumpManager.swift 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. //
  2. // QSLJumpManager.swift
  3. // QuickSearchLocation
  4. //
  5. // Created by Destiny on 2024/12/24.
  6. //
  7. import Foundation
  8. import UIKit
  9. enum JumpType: Int {
  10. case createInspration = 0 // 灵感创作
  11. case createDiy // 自定义创作
  12. case mine // 我的
  13. case vip // 会员
  14. case login // 登录
  15. case accompaniment // 伴奏
  16. }
  17. class QSLJumpManager: NSObject {
  18. static let shared = QSLJumpManager()
  19. private override init() {}
  20. }
  21. extension QSLJumpManager {
  22. // 跳转到Vip页面
  23. func pushToVip(type: QSLVipJumpType) {
  24. let vc = QSLVipController()
  25. vc.type = type
  26. self.rootViewController()?.pushVC(vc: vc)
  27. vc.finishHandler = {[weak self] isCancel in
  28. if isCancel {
  29. return
  30. }
  31. if QSLBaseManager.shared.isVip() {
  32. return
  33. }
  34. if let currentWindow = UIApplication.keyWindow {
  35. gravityInstance?.track(QSLGravityConst.new_vip_retention_show, properties: ["trigger_type":"close_vip_center"])
  36. QSLRetainPopUpAlertView.alert(view: currentWindow, isOneBtn: true, oneBtnText: "继续支付", oneBtnClosure: { [weak self] in
  37. self?.unlockBtnAction()
  38. gravityInstance?.track(QSLGravityConst.new_vip_retention_click, properties: ["button":"continue_payment"])
  39. },closeBtnClosure: {
  40. gravityInstance?.track(QSLGravityConst.new_vip_retention_click, properties: ["button":"close"])
  41. })
  42. }
  43. }
  44. }
  45. func unlockBtnAction(){
  46. if let selectGood = QSLCountdownManager.shared.selectGood{
  47. let memberModel = QSLBaseManager.shared.userModel.memberModel
  48. if let subscriptionExpired = memberModel.subscriptionExpired, !subscriptionExpired {
  49. UIApplication.keyWindow?.toast(text: "你已经订阅了")
  50. return
  51. }
  52. QSLLoading.show()
  53. QSLVipManager.shared.startPay(goods: selectGood) { status, outTradeNo in
  54. QSLVipManager.shared.isPaying = false
  55. if status == .success {
  56. QSLLoading.success(text: "支付成功")
  57. gravityInstance?.track(QSLGravityConst.new_vip_result, properties: ["is_member":QSLBaseManager.shared.isVip(),"purchase_result": "success","pay_amount":Int32(selectGood.amount)])
  58. //支付成功埋点
  59. gravityInstance?.track(QSLGravityConst.vip_submit_success, properties: ["id": 01001])
  60. //弹出是否好评的弹窗
  61. QSLGuideusersToCommentManager.commentShare.manageWhetherTriggerPopUpWindow(QSLGuideusersToCommentType.member)
  62. // 引力传递支付事件
  63. gravityInstance?.trackPayEvent(withAmount: Int32(selectGood.amount), withPayType: "CNY", withOrderId: outTradeNo, withPayReason: selectGood.name, withPayMethod: "apple")
  64. DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
  65. NotificationCenter.default.post(name: QSLNotification.QSLRefreshMember, object: nil)
  66. }
  67. } else if status == .cancel {
  68. gravityInstance?.track(QSLGravityConst.new_vip_result, properties: ["is_member":QSLBaseManager.shared.isVip(),"purchase_result": "cancel","pay_amount":Int32(selectGood.amount)])
  69. QSLLoading.error(text: "支付取消")
  70. } else if status == .fail {
  71. gravityInstance?.track(QSLGravityConst.new_vip_result, properties: ["is_member":QSLBaseManager.shared.isVip(),"purchase_result": "fail","pay_amount":Int32(selectGood.amount)])
  72. gravityInstance?.track(QSLGravityConst.vip_fail)
  73. QSLLoading.error(text: "支付失败")
  74. } else if status == .searchFail {
  75. QSLLoading.error(text: "查询订单失败,请稍后重试")
  76. }
  77. }
  78. }
  79. }
  80. // 跳转到登录页面
  81. func pushToLogin(type: QSLLoginJumpType) {
  82. let vc = QSLLoginViewController()
  83. vc.type = type
  84. self.rootViewController()?.pushVC(vc: vc)
  85. }
  86. // 跳转到紧急联系人页面
  87. func pushToContact(type: QSLContactJumpPage) {
  88. let vc = QSLContactController()
  89. vc.type = type
  90. self.rootViewController()?.pushVC(vc: vc)
  91. }
  92. // 跳转到轨迹页面
  93. func pushToRoad(type: QSLRoadJumpType, model: QSLUserModel) {
  94. let vc = QSLRoadController(userModel: model)
  95. vc.type = type
  96. self.rootViewController()?.pushVC(vc: vc)
  97. }
  98. // 跳转到添加好友页面
  99. func pushToAdd(type: QSLAddJumpType) {
  100. let vc = QSLAddController()
  101. vc.type = type
  102. self.rootViewController()?.pushVC(vc: vc)
  103. }
  104. }