From 01da4eb3706646767f434216b40a724aa59cd5da Mon Sep 17 00:00:00 2001 From: fish Date: Sat, 4 Jul 2026 11:35:49 +0800 Subject: [PATCH] =?UTF-8?q?fix(stock):=20=E5=90=8C=E6=AD=A5=E6=97=B6?= =?UTF-8?q?=E4=BB=B7=E6=A0=BC=E5=9B=9B=E8=88=8D=E4=BA=94=E5=85=A5=E5=88=B0?= =?UTF-8?q?2=E4=BD=8D=E5=B9=B6=E8=87=AA=E5=B7=B1=E8=AE=A1=E7=AE=97=20chang?= =?UTF-8?q?e=5Fpct?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/internal/services/stock_sync.go | 26 +++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/backend/internal/services/stock_sync.go b/backend/internal/services/stock_sync.go index 6e9809f..c67e788 100644 --- a/backend/internal/services/stock_sync.go +++ b/backend/internal/services/stock_sync.go @@ -4,6 +4,7 @@ import ( "context" "fmt" "log" + "math" "sync" "time" @@ -95,18 +96,27 @@ func (s *StockSyncService) doSync(ctx context.Context) (int, error) { records := make([]models.StockDailyQuote, 0, len(quotes)) for _, q := range quotes { tradeDate := msToDate(q.Timestamp) + open := round2(q.Open) + high := round2(q.High) + low := round2(q.Low) + close := round2(q.Close) + prevClose := round2(q.PrevClose) + var changePct float64 + if prevClose != 0 { + changePct = (close - prevClose) / prevClose + } records = append(records, models.StockDailyQuote{ Symbol: q.Symbol, Name: q.DisplayName(), TradeDate: tradeDate, - Open: q.Open, - High: q.High, - Low: q.Low, - Close: q.Close, - PrevClose: q.PrevClose, + Open: open, + High: high, + Low: low, + Close: close, + PrevClose: prevClose, Volume: q.Volume, Amount: q.Amount, - ChangePct: q.ChangePct(), + ChangePct: changePct, TurnoverRate: q.TurnoverRate(), Region: q.Region, }) @@ -140,3 +150,7 @@ func today() time.Time { func msToDate(ms int64) time.Time { return time.UnixMilli(ms).In(chinaLoc).Truncate(24 * time.Hour) } + +func round2(v float64) float64 { + return math.Round(v*100) / 100 +}