Просмотр исходного кода

K线涨跌幅数据同步
修改交易页Bug

Vincent Hu 6 дней назад
Родитель
Сommit
87cd76f811

+ 34 - 2
Koala/Koala/Modular/Deal/V/Deal/DealProDataCell.swift

@@ -147,8 +147,16 @@ extension DealProDataCell {
     @objc func clickChartsAction() {
         if self.VM?.isShowKline == true {
             self.VM?.isShowKline = false
+            
+            UIView.animate(withDuration: 0.15) {
+                self.img2View.transform = CGAffineTransformIdentity
+            }
         } else {
             self.VM?.isShowKline = true
+            
+            UIView.animate(withDuration: 0.15) {
+                self.img2View.transform = CGAffineTransform(rotationAngle: CGFloat.pi / 2)
+            }
         }
         
         self.refreshBlock?()
@@ -252,10 +260,30 @@ extension DealProDataCell {
         
         if isSocket {
             guard let cModel = list.last else { return }
-            
+
             let currentModel = KMyLineModel(cModel: cModel)
-            let newDatas = DataUtil.updateLastData(dataList: VM.kLineStateManger.datas, data: currentModel)
+
+            if let newPrice = Double(VM.selectSymbolModel.newPrice), newPrice > 0 {
+                currentModel.close = newPrice
+            }
+
+            var newDatas = VM.kLineStateManger.datas
+
+            // 检查第一条和第二条数据的 datetime 是否相同
+            if newDatas.count >= 2 {
+                let firstModel = newDatas[0]
+                let secondModel = newDatas[1]
+                
+                if firstModel.datetime == secondModel.datetime {
+                    // 用第一条数据替换第二条数据
+                    newDatas[1] = firstModel
+                    // 删除第二条数据
+                    newDatas.remove(at: 1)
+                }
+            }
             
+            newDatas = DataUtil.updateLastData(dataList: newDatas, data: currentModel)
+
             VM.kLineStateManger.datas = newDatas
         } else {
             var kModels: [KMyLineModel] = []
@@ -266,6 +294,10 @@ extension DealProDataCell {
                 kModels.append(KMyLineModel(cModel: kSymbolKlineData))
             }
             
+            if let newPrice = Double(VM.selectSymbolModel.newPrice), newPrice > 0, kModels.count > 0 {
+                kModels[kModels.count - 1].close = newPrice
+            }
+            
             DataUtil.calculate(dataList: kModels)
             VM.kLineStateManger.datas = kModels
         }

+ 2 - 2
Koala/Koala/Modular/Deal/V/Deal/DealTableSectionView.swift

@@ -288,7 +288,7 @@ class DealTableSectionView: UIView {
             make.height.equalTo(10)
         }
     }
-    func updateView() {
+    func updateView(isSocket: Bool = false) {
         print("更新updateView")
         hidexAnimat()
         guard let VM = self.VM else { return }
@@ -349,7 +349,7 @@ class DealTableSectionView: UIView {
             }
             
             if let vm = self.VM {
-                self.dealProDataCell.updateCellDataWith(vm: vm)
+                self.dealProDataCell.updateCellDataWith(vm: vm, isSocket: isSocket)
                 self.dealProDataCell.updatePrice(vm: vm)
                 if self.VM?.selectSymbolModel.market == "CFD" {
                     self.dealProCell.updateCellWith(vm: vm)

+ 2 - 3
Koala/Koala/Modular/Deal/V/Deal/DealView.swift

@@ -1032,18 +1032,17 @@ class DealView: BaseView {
             }
         }
         var isgetPriceDepthActionBlock = true
-        self.VM?.getPriceDepthActionBlock = { [weak self] in
+        self.VM?.getPriceDepthActionBlock = { [weak self] isSocket in
             guard let self = self else { return }
             if !self.isScrolling {
                 if isgetPriceDepthActionBlock {
 //                    isgetPriceDepthActionBlock = false
                     self.reloadTable()
-                    self.tabHeaderView.updateView()
+                    self.tabHeaderView.updateView(isSocket: isSocket)
                 }
             }
         }
         
-        
         self.VM?.isSell.producer
             .skipRepeats()
             .delay(1.0, on: QueueScheduler.main)

+ 3 - 3
Koala/Koala/Modular/Deal/VM/DealViewModel.swift

@@ -206,7 +206,7 @@ class DealViewModel: BaseViewModel {
     var getProductListActionBlock: (() -> Void)? = nil
     
     var getPriceDepthAction: Action<Void, Bool, Never>!
-    var getPriceDepthActionBlock: (() -> Void)? = nil
+    var getPriceDepthActionBlock: ((Bool) -> Void)? = nil
     
     var getSimPriceListAction: Action<Void, Bool, Never>!
     var getSimPriceListActionBlock: (() -> Void)? = nil
@@ -464,7 +464,7 @@ extension DealViewModel {
             
             if let dic: NSDictionary = result as? NSDictionary {
                 self.depthModel = MarketDepthModel.deserialize(from: dic)!
-                self.getPriceDepthActionBlock?()
+                self.getPriceDepthActionBlock?(false)
                 observer.send(value: true)
             } else {
                 observer.send(value: false)
@@ -1509,7 +1509,7 @@ extension DealViewModel {
                             print("模型转换=>bids = > \(marketDepthModel.bids)")
                             self.depthModel.asks = marketDepthModel.asks
                             self.depthModel.bids = marketDepthModel.bids
-                            self.getPriceDepthActionBlock?()
+                            self.getPriceDepthActionBlock?(true)//isSocket
                         }
                     }
                     

+ 9 - 0
Koala/Koala/Modular/Market/V/MarketDetailView/MDAuoteView/MDAuoteKLinewCell.swift

@@ -131,6 +131,11 @@ extension MDAuoteKLinewCell {
             guard let cModel = list.last else { return }
             
             let currentModel = KMyLineModel(cModel: cModel)
+            
+            if let newPrice = Double(currentVM.symbolModel.newPrice), newPrice > 0 {
+                currentModel.close = newPrice
+            }
+            
             let newDatas = DataUtil.updateLastData(dataList: currentVM.kLineStateManger.datas, data: currentModel)
             
             currentVM.kLineStateManger.datas = newDatas
@@ -143,6 +148,10 @@ extension MDAuoteKLinewCell {
                 kModels.append(KMyLineModel(cModel: kSymbolKlineData))
             }
             
+            if let newPrice = Double(currentVM.symbolModel.newPrice), newPrice > 0, kModels.count > 0 {
+                kModels[kModels.count - 1].close = newPrice
+            }
+            
             DataUtil.calculate(dataList: kModels)
             currentVM.kLineStateManger.datas = kModels
         }