// // LockDistractVC.swift // QuickLocation // import UIKit import RxSwift import RxCocoa final class LockDistractVC: BaseViewController { private var rootView: LockDistractView! private var groupModel: GroupModel? private var members: [GroupMemberModel] = [] private var selectedIndex = 0 override var isNavigationBarHidden: Bool { true } override func loadView() { rootView = LockDistractView(frame: UIScreen.main.bounds) view = rootView } override func viewDidLoad() { super.viewDidLoad() view.backgroundColor = UIColor(hexStr: "#FAFAFA") bind() loadGroupMembers() } private func bind() { rootView.navView.onBackTapped = { [weak self] in self?.navigationController?.popViewController(animated: true) } rootView.switchGroupBtn.rx.tap .subscribe(onNext: { [weak self] in self?.switchGroup() }) .disposed(by: disposeBag) rootView.memberPrevBtn.rx.tap .subscribe(onNext: { [weak self] in self?.stepMember(-1) }) .disposed(by: disposeBag) rootView.memberNextBtn.rx.tap .subscribe(onNext: { [weak self] in self?.stepMember(1) }) .disposed(by: disposeBag) // 未获取 / 锁定:本期不接业务 rootView.notFetchedView.rx.tapGesture .subscribe(onNext: { _ in /// TODO }).disposed(by: disposeBag) } private func loadGroupMembers() { GroupService.groupInfo().subscribe(onNext: { [weak self] response in guard let self, let model = response.model else { return } self.groupModel = model self.members = model.select_group_employee self.selectedIndex = 0 self.refreshMember() self.rootView.setTodayLockCount(0) }).disposed(by: disposeBag) } private func stepMember(_ delta: Int) { guard !members.isEmpty else { return } let count = members.count selectedIndex = (selectedIndex + delta + count) % count refreshMember() } private func refreshMember() { guard members.indices.contains(selectedIndex) else { rootView.configureMember(name: " ", avatar: nil) return } let m = members[selectedIndex] rootView.configureMember(name: m.nick_name, avatar: m.userIcon) } private func switchGroup() { guard let groupModel else { loadGroupMembers() return } GroupListPopView.show(groupModel: groupModel) { [weak self] groupKey in guard let self, let key = groupKey else { return } GroupService.operate(opType: "setdefault", requestData: ["group_key": key]) .subscribe(onNext: { [weak self] _ in NotificationCenter.default.post(name: .RefreshGroupInfoNotification, object: nil) self?.loadGroupMembers() }) .disposed(by: self.disposeBag) } } }