QSLMineController.swift 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285
  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(requestVip), name: QSLNotification.QSLRefreshMember, object: nil)
  40. }
  41. override func viewWillAppear(_ animated: Bool) {
  42. super.viewWillAppear(animated)
  43. self.requestVip()
  44. }
  45. }
  46. extension QSLMineController {
  47. // 请求vip信息
  48. @objc func requestVip() {
  49. QSLNetwork().request(.userMember(dict: [:])) { response in
  50. let memberModel = response.mapObject(QSLMemberModel.self, modelKey: "data")
  51. QSLBaseManager.shared.userModel.memberModel = memberModel
  52. if memberModel.expired {
  53. QSLBaseManager.shared.saveVipExpiredTime(time: 0)
  54. } else {
  55. QSLBaseManager.shared.saveVipExpiredTime(time: memberModel.endTimestamp)
  56. }
  57. QSLBaseManager.shared.saveUserId(id: memberModel.userId)
  58. self.updateUI()
  59. } fail: { code, error in
  60. }
  61. }
  62. // 清除用户数据
  63. func requestClearUser() {
  64. QSLNetwork().request(.userClear(dict: [:])) { response in
  65. self.view.toast(text: "注销成功")
  66. QSLBaseManager.shared.logOut()
  67. } fail: { code, error in
  68. }
  69. }
  70. }
  71. extension QSLMineController {
  72. // 跳转到登录页面
  73. @objc func jumpToLogin() {
  74. if !QSLBaseManager.shared.isLogin() {
  75. QSQuickLogonHandle.share.currentVC = self
  76. QSQuickLogonHandle.share.starOneQuickLogin(loginSuccess: {
  77. })
  78. }
  79. }
  80. }
  81. extension QSLMineController: QSLMineVipViewDelegate {
  82. // 跳转到vip页面
  83. func unlockBtnAction() {
  84. QSEventHandle.eventPush( eventName: QSLGravityConst.mine_vip)
  85. QSLJumpManager.shared.pushToVip(type: .mine)
  86. }
  87. }
  88. extension QSLMineController: QSLMineFuncViewDelegate {
  89. func didSelectRowAt(indexPath: IndexPath) {
  90. switch viewModel.funcLists[indexPath.row]["title"] {
  91. case "添加紧急联系人":
  92. self.jumpToContact()
  93. break
  94. case "权限设置":
  95. // 权限跳转
  96. self.authAction()
  97. break
  98. case "关于我们":
  99. // 关于我们
  100. self.jumpToInfo()
  101. break
  102. case "注销账号":
  103. // 注销
  104. self.logOffAction()
  105. break
  106. case "退出登录":
  107. // 退出登录
  108. self.logoutAction()
  109. break
  110. case "用户反馈":
  111. self.feedbackAction()
  112. break
  113. case "联系客服":
  114. self.customerAction()
  115. break
  116. default: break
  117. }
  118. }
  119. func customerAction() {
  120. QSLJumpManager.shared.pushToCustomer()
  121. }
  122. func feedbackAction() {
  123. QSLJumpManager.shared.pushToFeedback()
  124. }
  125. func jumpToContact() {
  126. if QSLBaseManager.shared.isVip() {
  127. if !QSLBaseManager.shared.isLogin() {
  128. QSLJumpManager.shared.pushToLogin(type: .contact)
  129. return
  130. }
  131. }else{
  132. QSLJumpManager.shared.pushToVip(type: .contact)
  133. return
  134. }
  135. QSEventHandle.eventPush( eventName: QSLGravityConst.mine_contact)
  136. QSLJumpManager.shared.pushToContact(type: .mine)
  137. }
  138. func jumpToInfo() {
  139. QSEventHandle.eventPush( eventName: QSLGravityConst.mine_about)
  140. let vc = QSLAppInfoController()
  141. vc.title = "关于我们"
  142. self.navigationController?.pushViewController(vc, animated: true)
  143. }
  144. // MARK: - 权限
  145. func authAction() {
  146. QSEventHandle.eventPush( eventName: QSLGravityConst.mine_auth)
  147. if let url = URL(string: UIApplication.openSettingsURLString), UIApplication.shared.canOpenURL(url) {
  148. UIApplication.shared.open(url)
  149. }
  150. }
  151. // MARK: - 注销账号
  152. func logOffAction() {
  153. if let view = self.tabBarController?.view {
  154. QSLAlertView.alert(view: view, title: "温馨提示", content: "确认注销账号吗?", secondBtnClosure: {
  155. self.view.toast(text: "注销成功")
  156. self.requestClearUser()
  157. })
  158. }
  159. }
  160. // MARK: - 退出登录
  161. func logoutAction() {
  162. QSEventHandle.eventPush( eventName: QSLGravityConst.mine_logout)
  163. if let view = self.tabBarController?.view {
  164. QSLAlertView.alert(view: view, title: "温馨提示", content: "确认退出登录吗?", firstBtnClosure: {
  165. QSEventHandle.eventPush( eventName: QSLGravityConst.mine_logout_cancel)
  166. }, secondBtnClosure: {
  167. QSEventHandle.eventPush( eventName: QSLGravityConst.mine_logout_confirm)
  168. self.view.toast(text: "退出登录成功")
  169. QSLBaseManager.shared.logOut()
  170. })
  171. }
  172. }
  173. }
  174. extension QSLMineController {
  175. @objc func updateUI() {
  176. if QSLBaseManager.shared.isLogin() {
  177. let name = "用户\(QSLBaseManager.shared.userModel.phone.suffix(4))"
  178. self.mineInfoView.config(name: name, content: "您好,尊敬的用户")
  179. } else {
  180. if QSLBaseManager.shared.isVip(){
  181. self.mineInfoView.config(name: "立即登录", content: " 登录即享受会员权益 ")
  182. }else{
  183. self.mineInfoView.config(name: "立即登录", content: "解锁更多精彩内容")
  184. }
  185. }
  186. mineVipView.updateUI()
  187. self.viewModel.initFuncData()
  188. mineFuncView.snp.updateConstraints { make in
  189. make.height.equalTo(viewModel.funcViewHeight)
  190. }
  191. self.mineFuncView.funcTableView.reloadData()
  192. }
  193. func setUpUI() {
  194. view.addSubview(mineBgImageView)
  195. mineBgImageView.snp.makeConstraints { make in
  196. make.left.top.right.equalTo(0)
  197. }
  198. view.addSubview(mineInfoView)
  199. mineInfoView.snp.makeConstraints { make in
  200. make.left.top.right.equalTo(0)
  201. make.height.equalTo(122 + QSLConst.qsl_kStatusBarFrameH)
  202. }
  203. view.addSubview(mineVipView)
  204. mineVipView.snp.makeConstraints { make in
  205. make.left.equalTo(12)
  206. make.right.equalTo(-12)
  207. make.top.equalTo(mineInfoView.snp.bottom).offset(10)
  208. make.height.equalTo(90)
  209. }
  210. view.addSubview(mineFuncView)
  211. mineFuncView.snp.makeConstraints { make in
  212. make.top.equalTo(mineVipView.snp.bottom).offset(12)
  213. make.left.equalTo(12)
  214. make.right.equalTo(-12)
  215. make.height.equalTo(viewModel.funcViewHeight)
  216. }
  217. }
  218. }