QSLMineController.swift 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237
  1. //
  2. // QSLMineController.swift
  3. // QuickSearchLocation
  4. //
  5. // Created by mac on 2024/4/10.
  6. //
  7. import UIKit
  8. class QSLMineController: QSLBaseController {
  9. var viewModel:QSLMineViewModel = QSLMineViewModel()
  10. lazy var mineBgImageView: UIImageView = {
  11. let imageView = UIImageView()
  12. imageView.image = UIImage(named: "mine_bg")
  13. return imageView
  14. }()
  15. lazy var mineInfoView: QSLMineInfoView = {
  16. let view = QSLMineInfoView()
  17. view.isUserInteractionEnabled = true
  18. let tap = UITapGestureRecognizer(target: self, action: #selector(jumpToLogin))
  19. view.addGestureRecognizer(tap)
  20. return view
  21. }()
  22. lazy var mineVipView: QSLMineVipView = {
  23. let view = QSLMineVipView()
  24. view.delegate = self
  25. return view
  26. }()
  27. lazy var mineFuncView: QSLMineFuncView = {
  28. let view = QSLMineFuncView()
  29. view.delegate = self
  30. view.viewModel = viewModel
  31. return view
  32. }()
  33. override func viewDidLoad() {
  34. super.viewDidLoad()
  35. setUpUI()
  36. updateUI()
  37. NotificationCenter.default.addObserver(self, selector: #selector(updateUI), name: QSLNotification.QSLLogin, object: nil)
  38. NotificationCenter.default.addObserver(self, selector: #selector(updateUI), name: QSLNotification.QSLLogout, object: nil)
  39. NotificationCenter.default.addObserver(self, selector: #selector(updateUI), name: QSLNotification.QSLRefreshMember, object: nil)
  40. }
  41. }
  42. extension QSLMineController {
  43. // 清除用户数据
  44. func requestClearUser() {
  45. QSLNetwork().request(.userClear(dict: [:])) { response in
  46. self.view.toast(text: "注销成功")
  47. QSLBaseManager.shared.logOut()
  48. } fail: { code, error in
  49. }
  50. }
  51. }
  52. extension QSLMineController {
  53. // 跳转到登录页面
  54. @objc func jumpToLogin() {
  55. if !QSLBaseManager.shared.isLogin() {
  56. gravityInstance?.track(QSLGravityConst.mine_login)
  57. QSLJumpManager.shared.pushToLogin(type: .mine)
  58. }
  59. }
  60. }
  61. extension QSLMineController: QSLMineVipViewDelegate {
  62. // 跳转到vip页面
  63. func unlockBtnAction() {
  64. gravityInstance?.track(QSLGravityConst.mine_vip)
  65. QSLJumpManager.shared.pushToVip(type: .mine)
  66. }
  67. }
  68. extension QSLMineController: QSLMineFuncViewDelegate {
  69. func didSelectRowAt(indexPath: IndexPath) {
  70. switch indexPath.row {
  71. case 0:
  72. self.jumpToContact()
  73. break
  74. case 1:
  75. // 权限跳转
  76. self.authAction()
  77. break
  78. case 2:
  79. // 关于我们
  80. self.jumpToInfo()
  81. break
  82. case 3:
  83. // 注销
  84. self.logOffAction()
  85. break
  86. case 4:
  87. // 退出登录
  88. self.logoutAction()
  89. break
  90. case 5: break
  91. case 6: break
  92. case 7:
  93. break
  94. default: break
  95. }
  96. }
  97. func jumpToContact() {
  98. gravityInstance?.track(QSLGravityConst.mine_contact)
  99. QSLJumpManager.shared.pushToContact(type: .mine)
  100. // let vc = QSLContactController()
  101. // self.navigationController?.pushViewController(vc, animated: true)
  102. }
  103. func jumpToInfo() {
  104. gravityInstance?.track(QSLGravityConst.mine_about)
  105. let vc = QSLAppInfoController()
  106. vc.title = "关于我们"
  107. self.navigationController?.pushViewController(vc, animated: true)
  108. }
  109. // MARK: - 权限
  110. func authAction() {
  111. gravityInstance?.track(QSLGravityConst.mine_auth)
  112. if let url = URL(string: UIApplication.openSettingsURLString), UIApplication.shared.canOpenURL(url) {
  113. UIApplication.shared.open(url)
  114. }
  115. }
  116. // MARK: - 注销账号
  117. func logOffAction() {
  118. if let view = self.tabBarController?.view {
  119. QSLAlertView.alert(view: view, title: "温馨提示", content: "确认注销账号吗?", secondBtnClosure: {
  120. self.view.toast(text: "注销成功")
  121. self.requestClearUser()
  122. })
  123. }
  124. }
  125. // MARK: - 退出登录
  126. func logoutAction() {
  127. gravityInstance?.track(QSLGravityConst.mine_logout)
  128. if let view = self.tabBarController?.view {
  129. QSLAlertView.alert(view: view, title: "温馨提示", content: "确认退出登录吗?", firstBtnClosure: {
  130. gravityInstance?.track(QSLGravityConst.mine_logout_cancel)
  131. }, secondBtnClosure: {
  132. gravityInstance?.track(QSLGravityConst.mine_logout_confirm)
  133. self.view.toast(text: "退出登录成功")
  134. QSLBaseManager.shared.logOut()
  135. })
  136. }
  137. }
  138. }
  139. extension QSLMineController {
  140. @objc func updateUI() {
  141. self.viewModel.initFuncData()
  142. mineFuncView.snp.updateConstraints { make in
  143. make.height.equalTo(viewModel.funcViewHeight)
  144. }
  145. self.mineFuncView.funcTableView.reloadData()
  146. if QSLBaseManager.shared.isLogin() {
  147. let name = "用户\(QSLBaseManager.shared.userModel.phone.suffix(4))"
  148. self.mineInfoView.config(name: name, content: "您好,尊敬的用户")
  149. } else {
  150. self.mineInfoView.config(name: "立即登录", content: "解锁更多精彩内容")
  151. }
  152. mineVipView.updateUI()
  153. }
  154. func setUpUI() {
  155. view.addSubview(mineBgImageView)
  156. mineBgImageView.snp.makeConstraints { make in
  157. make.left.top.right.equalTo(0)
  158. }
  159. view.addSubview(mineInfoView)
  160. mineInfoView.snp.makeConstraints { make in
  161. make.left.top.right.equalTo(0)
  162. make.height.equalTo(122 + QSLConst.qsl_kStatusBarFrameH)
  163. }
  164. view.addSubview(mineVipView)
  165. mineVipView.snp.makeConstraints { make in
  166. make.left.equalTo(12)
  167. make.right.equalTo(-12)
  168. make.top.equalTo(mineInfoView.snp.bottom).offset(10)
  169. make.height.equalTo(90)
  170. }
  171. view.addSubview(mineFuncView)
  172. mineFuncView.snp.makeConstraints { make in
  173. make.top.equalTo(mineVipView.snp.bottom).offset(12)
  174. make.left.equalTo(12)
  175. make.right.equalTo(-12)
  176. make.height.equalTo(viewModel.funcViewHeight)
  177. }
  178. }
  179. }