// // SearchLocationResultVC.swift // QuickLocation // import UIKit import RxSwift import RxCocoa import ObjectMapper import URLNavigator class SearchLocationResultVC: BaseViewController { fileprivate var rootView: SearchLocationResultView! override func loadView() { rootView = SearchLocationResultView(frame: UIScreen.main.bounds) view = rootView } private let phone: String private let code: Int private let memberData: [String: Any] private var groupModel: GroupModel? override func viewDidLoad() { super.viewDidLoad() let isVip = AppContextManager.shared.vip > 1 rootView.unlockVipView.isHidden = isVip rootView.scrollView.isHidden = !isVip reactiveAction() requestPhoneArea() } override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) rootView.startMarqueeAnimation() } private func reactiveAction() { rootView.actionBtn.rx.tap.subscribe(onNext: { _ in switch self.code { case 0: NotificationCenter.default.post(name: .ShowMemberLocationNotification, object: nil, userInfo: self.memberData) self.navigationController?.popToRootViewController(animated: true) if let tab = self.tabBarController as? MainTabBarController ?? UIViewController.topMost?.tabBarController as? MainTabBarController { tab.selectTab(at: 0) } case 20004: SharePopView.show() case 20005: self.showGroupPicker() default: break } }).disposed(by: disposeBag) } private func showGroupPicker() { guard let model = groupModel else { requestGroupInfo(showPicker: true) return } presentGroupPicker(with: model) } private func presentGroupPicker(with model: GroupModel) { GroupListPopView.show(groupModel: model) { groupKey in guard let key = groupKey, let groupInfo = model.groups.first(where: { $0.group_key == key })?.toJSON() else { return } AppRouter.push(Route.inviteJoin, userInfo: ["groupInfo": groupInfo]) } } private func shareApp() { let text = "快来极速定位,实时守护家人出行安全" let activity = UIActivityViewController(activityItems: [text], applicationActivities: nil) present(activity, animated: true) } private func handleCode() { guard AppContextManager.shared.vip > 1 else { return } rootView.actionBtn.isHidden = true rootView.inviteView.isHidden = true switch code { case 0: rootView.configureResult( status: "定位成功", disclaimer: "点击去查看可获得具体位置", showInviteRow: false ) rootView.actionBtn.setTitle("去查看", for: .normal) rootView.actionBtn.isHidden = false case 20004: rootView.configureResult( status: "用户未注册", disclaimer: "根据最新的相关法规,需用户双方均安装该APP才可实现定位,未安装APP的用户将不再提供具体定位功能。", showInviteRow: false ) rootView.actionBtn.setTitle("分享", for: .normal) rootView.actionBtn.isHidden = false case 20005: rootView.configureResult( status: "定位成功", disclaimer: "根据最新的相关法规,您查询的用户与您不在同一个圈子时, 不再提供具体的位置定位,邀请ta加入你的圈子后可随时查看位置。", showInviteRow: false ) rootView.actionBtn.setTitle("邀请TA加入", for: .normal) rootView.actionBtn.isHidden = false requestGroupInfo() default: break } } private func requestPhoneArea() { SystemService.phoneArea(phone: phone).subscribe(onNext: { response in guard let data = response.data else { return } self.handleCode() let province = data["Province"].safeString let city = data["City"].safeString let area = "\(province)·\(city)" self.rootView.phoneAreaLab.text = area self.rootView.unlockVipPhoneAreaLab.text = area }).disposed(by: disposeBag) } private func requestGroupInfo(showPicker: Bool = false) { GroupService.groupInfo().subscribe { [weak self] response in guard let self = self, let model = response.model else { return } self.groupModel = model if showPicker { self.presentGroupPicker(with: model) } }.disposed(by: disposeBag) } init(phone: String, code: Int, memberData: [String: Any] = [:]) { self.phone = phone self.code = code self.memberData = memberData super.init(nibName: nil, bundle: nil) } required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } }