From a1ac0f1634ff0bd8f04259fc4cf7ebabd8c8c82d Mon Sep 17 00:00:00 2001
From: 无故事王国 <841720330@qq.com>
Date: 星期二, 10 十月 2023 16:40:52 +0800
Subject: [PATCH] 修复BUG

---
 WanPai/Root/Home/VC/HomeVC.swift |  167 +++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 106 insertions(+), 61 deletions(-)

diff --git a/WanPai/Root/Home/VC/HomeVC.swift b/WanPai/Root/Home/VC/HomeVC.swift
index fa5968c..62bc2a1 100644
--- a/WanPai/Root/Home/VC/HomeVC.swift
+++ b/WanPai/Root/Home/VC/HomeVC.swift
@@ -22,7 +22,7 @@
 	
     private var layout:WaterFallFlowLayout!
     @IBOutlet weak var label_store: UILabel!
-    private var items = Array<HomeStoreConfigModel>()
+    private var items = Array<Any>()
     private var storeModel:HomeStoreModel?
 	private var storeId:Int?
 	private var currentLocal:CLLocation?
@@ -51,6 +51,7 @@
 			if let models = data.data{
 				let imgs = models.compactMap({$0.img})
 				self?.view_banner.setImages(images: imgs, type: .URL) { index in
+					//todo
 
 				}
 			}
@@ -133,32 +134,49 @@
 			showHUD()
 			let w = (weakSelf.view.frame.width - 78.0) / 2.0
 			for (_,model) in weakSelf.items.enumerated(){
-				SDWebImageDownloader.shared.downloadImage(with: URL(string: model.backgroundImage), options: .useNSURLCache) { _, _,_ in
+				if let m = model as? HomeStoreConfigModel{
+					SDWebImageDownloader.shared.downloadImage(with: URL(string: m.backgroundImage), options: .useNSURLCache) { _, _,_ in
 
-				} completed: {  image, data, error, status in
-					if let img = image{
+					} completed: {[weak self]  image, data, error, status in
+						if let img = image{
+							m.cellHeight = w / (img.size.width / img.size.height)
+						}else{
+							m.cellHeight =  w / (m.type.defaultImg.size.width / m.type.defaultImg.size.height)
+						}
 						i += 1
-						model.cellHeight = w / (img.size.width / img.size.height)
-					}else{
-						i += 1
-						model.cellHeight =  w / (model.type.defaultImg.size.width / model.type.defaultImg.size.height)
+						if i == weakSelf.items.count{
+							self?.updateUI()
+						}
 					}
+				}
 
-					print("Height:\(model.cellHeight)===\(model.type.rawValue)\n")
-					if i == weakSelf.items.count{
-							//重置Layout,不然不更新
-						self!.layout = WaterFallFlowLayout()
-						self!.layout.itemCount = self!.items.count
-						self!.layout.delegate = self
-						self!.layout.cols = 2
-						self!.layout.sectionInset = UIEdgeInsets(top: 14, left: 34, bottom: 14, right: 34)
-						self!.collectionView.collectionViewLayout = self!.layout
-						self!.collectionView.reloadData()
-						hiddenHUD()
+				if let m = model as? HomeStoreTopBannerModel{
+					SDWebImageDownloader.shared.downloadImage(with: URL(string: m.backgroundImage), options: .useNSURLCache) { _, _,_ in
+
+					} completed: {[weak self]  image, data, error, status in
+						if let img = image{
+							m.cellHeight = w / (img.size.width / img.size.height)
+							i += 1
+							if i == weakSelf.items.count{
+								self?.updateUI()
+							}
+						}
 					}
 				}
 			}
 		}
+	}
+
+	private func updateUI(){
+			//重置Layout,不然不更新
+		layout = WaterFallFlowLayout()
+		layout.itemCount = items.count
+		layout.delegate = self
+		layout.cols = 2
+		layout.sectionInset = UIEdgeInsets(top: 14, left: 34, bottom: 14, right: 34)
+		collectionView.collectionViewLayout = self.layout
+		collectionView.reloadData()
+		hiddenHUD()
 	}
 
 	private func startLocation(){
@@ -195,6 +213,7 @@
 			guard let weakSelf = self else { return }
 			weakSelf.storeId = storeId
 			weakSelf.label_store.text = storeName
+			weakSelf.storeModel = HomeStoreModel(isVip: 0, storeId: storeId, name: storeName, lon: 0, lat: 0)
 			weakSelf.items.removeAll()
 			weakSelf.getStoreItemList()
         }
@@ -207,46 +226,57 @@
 
 extension HomeVC:UICollectionViewDelegate{
     func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
-        let item = items[indexPath.row]
 
-        switch item.type{
-            case .course:
-                let vc = CourseListVC()
-                push(vc: vc)
-            case .booking:
-                let vc = YardListVC()
-                push(vc: vc)
-            case .activity:
-                let vc = ActivityListVC()
-                push(vc: vc)
-            case .video:
-                let vc = CourseOnlineListVC(position: 2)
-                vc.title = "看视频得奖励"
-                push(vc: vc)
-            case .coin:
-                let vc = CourseOnlineListVC(position: 1)
-                vc.title = "线上课得积分"
-                push(vc: vc)
-            case .ticket:
-                let vc = WelfareWeeklyListVC()
-                push(vc: vc)
-            case .wisdomCourt:
-				guard storeId != 0 else {alert(msg: "请先选择门店");return}
-                let vc = GamesVC()
-                push(vc: vc)
-            case .welfare:
-                if storeId != 0{
-                    Services.queryStoreFreeBenefit(id: storeId!).subscribe(onNext: {[weak self] data in
-                        if let m = data.data{
-                            let vc = WelfareFreeVC(m)
-                            self?.push(vc: vc)
-                        }
-                    }).disposed(by: disposeBag)
-                }else{
-                    alertError(msg: "当前门店获取失败")
-                }
-            case .none:break
-        }
+		var simpleModel:NormalSimpleModel?
+		if storeModel != nil{
+			simpleModel = NormalSimpleModel(id: storeModel!.storeId, name: storeModel!.name)
+		}
+
+        let item = items[indexPath.row]
+		if let m = item as? HomeStoreConfigModel{
+			switch m.type{
+				case .course:
+					let vc = CourseListVC(selectStore: simpleModel)
+					push(vc: vc)
+				case .booking:
+					let vc = YardListVC(selectStore: simpleModel)
+					push(vc: vc)
+				case .activity:
+					let vc = ActivityListVC()
+					push(vc: vc)
+				case .video:
+					let vc = CourseOnlineListVC(position: 2)
+					vc.title = "看视频得奖励"
+					push(vc: vc)
+				case .coin:
+					let vc = CourseOnlineListVC(position: 1)
+					vc.title = "线上课得积分"
+					push(vc: vc)
+				case .ticket:
+					let vc = WelfareWeeklyListVC()
+					push(vc: vc)
+				case .wisdomCourt:
+					guard storeId != 0 else {alert(msg: "请先选择门店");return}
+					let vc = GamesVC()
+					push(vc: vc)
+				case .welfare:
+					if storeId != 0{
+						Services.queryStoreFreeBenefit(id: storeId!).subscribe(onNext: {[weak self] data in
+							if let m = data.data{
+								let vc = WelfareFreeVC(m)
+								self?.push(vc: vc)
+							}
+						}).disposed(by: disposeBag)
+					}else{
+						alertError(msg: "当前门店获取失败")
+					}
+				case .none:break
+			}
+		}
+
+		if let m = item as? HomeStoreTopBannerModel{
+			jumpPage(name: m.name, page: m.page, type: m.type,id: m.turnId)
+		}
     }
     
 }
@@ -255,7 +285,14 @@
     func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
         let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "_HomeCCell", for: indexPath) as! HomeCCell
         let item = items[indexPath.row]
-		cell.img.sd_setImage(with: URL(string: item.backgroundImage), placeholderImage: item.type.defaultImg, options: .lowPriority)
+
+		if let m = item as? HomeStoreConfigModel{
+			cell.img.sd_setImage(with: URL(string: m.backgroundImage), placeholderImage: m.type.defaultImg, options: .lowPriority)
+		}
+
+		if let m = item as? HomeStoreTopBannerModel{
+			cell.img.sd_setImage(with: URL(string: m.backgroundImage), placeholderImage: nil, options: .lowPriority)
+		}
 		cell.img.cornerRadius = 10
         return cell
     }
@@ -269,8 +306,16 @@
 extension HomeVC: WaterFallLayoutDelegate{
     func waterFlowLayout(_ waterFlowLayout: WaterFallFlowLayout, itemHeight indexPath: IndexPath) -> CGFloat {
 		let item = items[indexPath.row]
-		print("===\(item.cellHeight)")
-		return  item.cellHeight
+
+		if let m = item as? HomeStoreConfigModel{
+			return  m.cellHeight
+		}
+
+		if let m = item as? HomeStoreTopBannerModel{
+			return  m.cellHeight
+		}
+
+		return 0
     }
 }
 

--
Gitblit v1.7.1