| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363 |
- //
- // QSLFriendController.swift
- // QuickSearchLocation
- //
- // Created by mac on 2024/4/10.
- //
- import UIKit
- import CRRefresh
- import WMZDropDownMenu
- class QSLFriendController: QSLBaseController {
-
- var friendList: [QSLUserModel] = [QSLUserModel]()
-
- lazy var friendBg: UIImageView = {
-
- let imageView = UIImageView()
- imageView.image = UIImage(named: "mine_bg")
- return imageView
- }()
-
- lazy var friendTitle: UIImageView = {
-
- let imageView = UIImageView()
- imageView.image = UIImage(named: "friends_title")
- return imageView
- }()
-
- lazy var friTableView: UITableView = {
-
- let tableView = UITableView(frame: .zero, style: .grouped)
- tableView.backgroundColor = .clear
- tableView.separatorStyle = .none
- tableView.showsVerticalScrollIndicator = false
- tableView.delegate = self
- tableView.dataSource = self
- tableView.tableViewNeverAdjustContentInset()
- tableView.bounces = true
- tableView.isUserInteractionEnabled = true
- tableView.isScrollEnabled = true
- tableView.contentInsetAdjustmentBehavior = .never
- tableView.register(cellClass: QSLFriendTableViewCell.self)
-
- tableView.cr.addHeadRefresh(animator: NormalHeaderAnimator()) { [weak self] in
- self?.requestFriendList()
- }
-
- return tableView
- }()
-
- lazy var bottomView: UIView = {
-
- let view = UIView()
- view.backgroundColor = .white
- view.layer.cornerRadius = 12.rpx
- view.layer.shadowOffset = CGSize(width: 0, height: -1)
- view.layer.shadowColor = UIColor.hexStringColor(hexString: "#A7A7A7", alpha: 0.1).cgColor
- view.layer.shadowOpacity = 5
- view.layer.shadowRadius = 0
- return view
- }()
-
- lazy var friAddBtn: UIButton = {
-
- let btn = UIButton()
- btn.addRadius(radius: 22.rpx)
- btn.gradientBackgroundColor(color1: .hexStringColor(hexString: "#15CBA1"), color2: .hexStringColor(hexString: "#1FE0BA"), width: QSLConst.qsl_kScreenW - 32.rpx, height: 44.rpx, direction: .horizontal)
- btn.image(UIImage(named: "home_friends_header_add_icon"))
- btn.title("添加好友")
- btn.mediumFont(16)
- btn.textColor(.white)
- btn.setImageTitleLayout(.imgLeft, spacing: 0)
- btn.addTarget(self, action: #selector(addButtonAction), for: .touchUpInside)
- return btn
- }()
-
- lazy var resortBtn: UIButton = {
-
- let btn = UIButton()
- btn.setBackgroundImage(UIImage(named: "friends_resort_btn"), for: .normal)
- btn.addTarget(self, action: #selector(resortBtnAction), for: .touchUpInside)
- return btn
- }()
-
- private var popView: QSLPopView?
-
- override func viewDidLoad() {
- super.viewDidLoad()
-
- initializeView()
-
- friendList.append(QSLBaseManager.shared.userModel)
- self.friTableView.reloadData()
-
- self.friTableView.cr.beginHeaderRefresh()
-
- NotificationCenter.default.addObserver(self, selector: #selector(requestFriendList), name: QSLNotification.QSLLogin, object: nil)
- NotificationCenter.default.addObserver(self, selector: #selector(requestFriendList), name: QSLNotification.QSLLogout, object: nil)
- NotificationCenter.default.addObserver(self, selector: #selector(requestFriendList), name: QSLNotification.QSLRefreshRequest, object: nil)
- NotificationCenter.default.addObserver(self, selector: #selector(requestFriendList), name: QSLNotification.QSLRefreshFriend, object: nil)
- }
- }
- extension QSLFriendController {
-
- @objc func addButtonAction() {
-
- if QSLBaseManager.shared.isVip() {
- ///点击添加好友埋点
- gravityInstance?.track(QSLGravityConst.vip_friend_click_add, properties: ["id": 04001])
- } else {
- ///点击添加好友埋点
- gravityInstance?.track(QSLGravityConst.friend_click_add, properties: ["id": 04002])
- }
-
- QSLJumpManager.shared.pushToAdd(type: .friend)
- }
-
- @objc func resortBtnAction() {
-
- gravityInstance?.track(QSLGravityConst.contact_shortcut_send)
- QSLNetwork().request(.contactMaydayFavor(dict: [:])) { response in
- self.view.toast(text: "求助信息发送成功")
- } fail: { code, error in
- self.view.toast(text: error)
- }
- }
- }
- extension QSLFriendController {
-
- // 请求好友列表
- @objc func requestFriendList() {
-
- self.friendList.removeAll()
- self.friendList.append(QSLBaseManager.shared.userModel)
-
- QSLNetwork().request(.friendList(dict: [:])) { response in
-
- self.friTableView.cr.endHeaderRefresh()
- let list = response.mapArray(QSLUserModel.self, modelKey: "data>list")
- self.friendList.append(contentsOf: list)
- self.friTableView.reloadData()
- } fail: { code, error in
-
- self.friTableView.cr.endHeaderRefresh()
- self.friTableView.reloadData()
- }
- }
- }
- extension QSLFriendController: QSLFriendTableViewCellDelegate {
-
- func roadBtnClickAction(model: QSLUserModel) {
-
- if !QSLBaseManager.shared.isLogin() {
-
- if let view = self.tabBarController?.view {
-
- QSLAlertView.alert(view: view, title: "温馨提示", content: "登录即可体验查看轨迹记录", secondBtnClosure: {
-
- QSLJumpManager.shared.pushToLogin(type: .road)
- })
- }
- return
- }
-
- if !QSLBaseManager.shared.isVip() {
-
- QSLJumpManager.shared.pushToVip(type: .friendRoad)
- return
- }
-
- QSLJumpManager.shared.pushToRoad(type: .friend, model: model)
- }
-
- func moreBtnAction(model: QSLUserModel, btn: UIButton) {
-
- var item3Text = ""
- if !model.blockedHim {
- item3Text = "不给TA看"
- } else {
- item3Text = "给TA看"
- }
-
- let items = [(UIImage(), "互删好友"), (UIImage(), "修改备注"), (UIImage(), item3Text), (UIImage(), "查看TA的手机号")]
- popView = QSLPopView(items: items) { index in
- print("选择了第 \(index) 项")
-
- switch index {
- case 0:
- self.deleteFri(model: model)
- break
- case 1:
- self.editRemark(model: model)
- break
- case 2:
- self.blockHime(model: model)
- break
- case 3:
- self.checkPhoneNum(model: model)
- break
- default:
- break
- }
- }
-
- popView?.contentWidth = 130.rpx
- popView?.isShowMaskView = true
-
- popView?.show(from: btn, selfVC: self)
- }
-
- // 删除好友
- func deleteFri(model: QSLUserModel) {
-
- gravityInstance?.track(QSLGravityConst.friend_delete)
- if let view = self.tabBarController?.view {
- QSLAlertView.alert(view: view, title: "温馨提示", content: "互删好友后,双方将停止位置的分享,以及清除相关定位记录,是否确认互删?", isOneBtn: false, secondBtnClosure: {
- QSLNetwork().request(.friendDelete(dict: ["friendId": model.friendId])) { response in
-
- gravityInstance?.track(QSLGravityConst.friend_delete_success)
- self.view.toast(text: "删除成功")
- NotificationCenter.default.post(name: QSLNotification.QSLRefreshFriend, object: nil)
- } fail: { code, error in
-
- gravityInstance?.track(QSLGravityConst.friend_delete_fail)
- }
- })
- }
- }
-
- // 修改备注
- func editRemark(model: QSLUserModel) {
-
- gravityInstance?.track(QSLGravityConst.friend_remark)
- if let view = self.tabBarController?.view {
- QSLFriendRemarkAlertView.alert(view: view) { remark in
-
- QSLNetwork().request(.friendRemark(dict: ["friendId": model.friendId, "remark": remark])) { response in
-
- UIApplication.keyWindow?.toast(text: "修改成功")
- NotificationCenter.default.post(name: QSLNotification.QSLRefreshFriend, object: nil)
- } fail: { code, error in
-
- }
- }
- }
- }
-
- // 给他看
- func blockHime(model: QSLUserModel) {
-
- if model.blockedHim {
- gravityInstance?.track(QSLGravityConst.friend_not_block_him)
- } else {
- gravityInstance?.track(QSLGravityConst.friend_block_him)
- }
-
- QSLNetwork().request(.friendBlocked(dict: ["friendId": model.friendId, "blocked": !model.blockedHim])) { response in
-
- NotificationCenter.default.post(name: QSLNotification.QSLRefreshFriend, object: nil)
- } fail: { code, error in
-
- }
- }
-
- // 查看手机号码
- func checkPhoneNum(model: QSLUserModel) {
-
- gravityInstance?.track(QSLGravityConst.friend_phoneNum)
- if let view = self.tabBarController?.view {
- QSLAlertView.alert(view: view, title: "Ta的手机号", content: model.phone, isOneBtn: true, oneBtnText: "复制号码", oneBtnClosure: {
- gravityInstance?.track(QSLGravityConst.friend_phoneNum_click)
- UIPasteboard.general.string = model.phone
- view.toast(text: "复制成功")
- })
- }
- }
- }
- // MARK: - 设置Tableview
- extension QSLFriendController: UITableViewDelegate, UITableViewDataSource {
-
- func numberOfSections(in tableView: UITableView) -> Int {
- return friendList.count
- }
-
- func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
- return 1
- }
-
- func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
-
- let cell = tableView.dequeueReusableCell(cellType: QSLFriendTableViewCell.self, cellForRowAt: indexPath)
- cell.delegate = self
- cell.selectionStyle = .none
- let model = self.friendList[indexPath.section]
- cell.config(model: model)
- return cell
- }
-
- func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
- return 154.rpx
- }
-
- func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
- return 0.0001
- }
-
- func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
- return 8.rpx
- }
-
- }
- extension QSLFriendController {
-
- func initializeView() {
-
- self.view.addSubview(friendBg)
- friendBg.snp.makeConstraints { make in
- make.left.top.right.equalTo(0)
- }
-
- self.view.addSubview(friendTitle)
- friendTitle.snp.makeConstraints { make in
- make.size.equalTo(CGSize(width: 82.rpx, height: 26.rpx))
- make.left.equalTo(12.rpx)
- make.top.equalTo(QSLConst.qsl_kStatusBarFrameH)
- }
-
- self.view.addSubview(bottomView)
- bottomView.snp.makeConstraints { make in
- make.left.right.equalTo(0)
- make.bottom.equalTo(-QSLConst.qsl_kTabbarFrameH)
- make.height.equalTo(76.rpx)
- }
-
- bottomView.addSubview(friAddBtn)
- friAddBtn.snp.makeConstraints { make in
- make.left.top.equalTo(16.rpx)
- make.right.bottom.equalTo(-16.rpx)
- }
-
- self.view.addSubview(friTableView)
- friTableView.snp.makeConstraints { make in
- make.left.equalTo(12.rpx)
- make.right.equalTo(-12.rpx)
- make.top.equalTo(friendTitle.snp.bottom).offset(13.rpx)
- make.bottom.equalTo(bottomView.snp.top)
- }
-
- self.view.addSubview(resortBtn)
- resortBtn.snp.makeConstraints { make in
- make.size.equalTo(CGSize(width: 60.rpx, height: 60.rpx))
- make.right.equalTo(-12.rpx)
- make.bottom.equalTo(bottomView.snp.top).offset(-32.rpx)
- }
- }
- }
|