无故事王国
2023-10-07 0e4747bd8b31ae22575e47156ba34d8a22b98fed
WanPai/Root/Home/VC/HomeVC.swift
@@ -43,33 +43,7 @@
    override func viewDidLoad() {
        super.viewDidLoad()
        viewModel.configure(collectionView,needMore: false)
      startLocation()
        viewModel.dataSource.subscribe(onNext: {[weak self] data in
            guard let weakSelf = self else { return }
            guard data.count != 0 else {return}
            weakSelf.items = data
            let group = DispatchGroup()
         Services.homeInfo2(storeId: weakSelf.viewModel.storeId.value).subscribe(onNext: {data in
         }) { error in
         }.disposed(by: weakSelf.disposeBag)
            group.notify(queue: .main){
                //重置Layout,不然不更新
                self!.layout = WaterFallFlowLayout()
                self!.layout.cols = 2
                self!.layout.sectionInset = UIEdgeInsets(top: 14, left: 34, bottom: 14, right: 34)
                self!.layout.delegate = self
                self!.collectionView.collectionViewLayout = self!.layout
                self!.collectionView.reloadData()
            }
        }).disposed(by: disposeBag)
        Services.startCourseHome().subscribe(onNext: {[weak self] data in
            if let model = data.data{
@@ -95,6 +69,51 @@
      }) { error in
      }.disposed(by: disposeBag)
      viewModel.dataSource.subscribe(onNext: {[weak self] data in
         guard let weakSelf = self else { return }
         guard data.count != 0 else {return}
         weakSelf.items = data
         let group = DispatchGroup()
         let queue = DispatchQueue(label: "imgRadio")
         queue.async(group: group){
            group.enter()
            Services.homeStoreConfig2(storeId: weakSelf.viewModel.storeId.value).subscribe(onNext: { data in
               if let items = data.data{
                  weakSelf.items.append(contentsOf: items)
                  var i = 0
                  for (_,model) in weakSelf.items.enumerated(){
                     SDWebImageDownloader.shared.downloadImage(with: URL(string: model.backgroundImage)) { image, data, error, status in
                        if let i = image{
                           model.radio = i.size.width / i.size.height
                        }else{
                           model.radio = model.type.defaultImg.size.width / model.type.defaultImg.size.height
                        }
                        i += 1
                        if i == weakSelf.items.count - 1{
                           group.leave()
                        }
                     }
                  }
               }
            }) { error in
               group.leave()
            }.disposed(by: weakSelf.disposeBag)
         }
         group.notify(queue: .main){
               //重置Layout,不然不更新
            self!.layout = WaterFallFlowLayout()
            self!.layout.cols = 2
            self!.layout.sectionInset = UIEdgeInsets(top: 14, left: 34, bottom: 14, right: 34)
            self!.layout.delegate = self
            self!.collectionView.collectionViewLayout = self!.layout
            self!.collectionView.reloadData()
         }
      }).disposed(by: disposeBag)
    }
    
@@ -136,27 +155,11 @@
                  self?.label_vipInfo.text = text
               }
                    self?.viewModel.beginRefresh()
                }else{
                    self?.defaultData()
                }
            }
        }) { [weak self] error in
            self?.label_store.text = "门店获取失败"
            self?.defaultData()
        }.disposed(by: disposeBag)
    }
    private func defaultData(){
        for index in 1...8{
            let type = HomeItemType(rawValue: index)!
            let m = HomeStoreConfigModel()
            m.type = type
            m.isOpen = 1
            m.sort = index
            m.radio = type.defaultImg.size.width / type.defaultImg.size.height
            items.append(m)
        }
        collectionView.reloadData()
    }
   private func startLocation(){
@@ -236,6 +239,7 @@
                let vc = WelfareWeeklyListVC()
                push(vc: vc)
            case .wisdomCourt:
            guard viewModel.storeId.value != 0 else {alert(msg: "请先选择门店");return}
                let vc = GamesVC()
                push(vc: vc)
            case .welfare:
@@ -272,11 +276,9 @@
extension HomeVC: WaterFallLayoutDelegate{
    func waterFlowLayout(_ waterFlowLayout: WaterFallFlowLayout, itemHeight indexPath: IndexPath) -> CGFloat {
      if indexPath.row % 2 != 0{
            return 185
        }else{
            return 288
        }
      let item = items[indexPath.row]
      let w = (view.frame.width - 68 - waterFlowLayout.minimumLineSpacing) / Double(waterFlowLayout.cols)
      return w / item.radio
    }
}