ソースを参照

修复实盘补的K线问题

zou.yingbin 3 年 前
コミット
426373f665
1 ファイル変更11 行追加8 行削除
  1. 11 8
      controllers/quote/history.go

+ 11 - 8
controllers/quote/history.go

@@ -207,17 +207,20 @@ func QueryHistoryDatas(c *gin.Context) {
 						}
 					} else {
 						// 判断最后周期是否已经存在盘面周期
-						hd := rst[len(rst)-1]
-
+						a, b := rst[0], rst[len(rst)-1]
 						logger.GetLogger().Debugf("[checkTiks] firstTik TimeStamp[%v] lastTik TimeStamp[%v] IsAsc[%v]",
-							rst[0].TimeStamp, hd.TimeStamp, req.IsAsc)
-
+							a.TimeStamp, b.TimeStamp, req.IsAsc)
+						hd := a
+						if a.TimeStamp.Before(b.TimeStamp) {
+							// 取最大日期 b在a之后,取b进行比较
+							hd = b
+						}
 						logger.GetLogger().Debugf("[checkTiks] compare hd.TimeStamp[%v] > firstDate[%v]? ",
 							hd.TimeStamp, fisrtDate)
 						if hd.TimeStamp.Before(fisrtDate) {
 							// #3424 当日未开市显示了K线
 							// 修改:这里增加判断盘面是否有开盘价
-							if v.Opened > 0 {
+							if v.Opened > 0 && v.Last > 0 {
 								historyData := HistoryData{
 									Opened:        utils.IntToFloat64(int(v.Opened), dcplace),
 									Highest:       utils.IntToFloat64(int(v.Highest), dcplace),
@@ -232,11 +235,11 @@ func QueryHistoryDatas(c *gin.Context) {
 								logger.GetLogger().Debugf("[checkTiks] 补K线:\n%v", historyData)
 
 								if req.IsAsc {
+									//升序 尾部插入
 									rst = append(rst, historyData)
 								} else {
-									// 插入第一条
-									rear := append([]HistoryData{}, rst[0:]...)
-									rst = append(append(rst[:0], historyData), rear...)
+									//降序 头部插入
+									rst = append([]HistoryData{historyData}, rst...)
 								}
 							}
 						}