From 4462a5978ef276a57198174813161f1c69940c51 Mon Sep 17 00:00:00 2001 From: yangfan <784310601@qq.com> Date: Thu, 30 Apr 2026 17:14:10 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/limit-board-overview.md | 24 +++++++++++++++++ docs/stock-kline.md | 4 ++- internal/model/limit_board.go | 34 +++++++++++++++++-------- internal/model/stock.go | 1 + internal/service/limit_board_service.go | 14 +++++++++- 5 files changed, 64 insertions(+), 13 deletions(-) diff --git a/docs/limit-board-overview.md b/docs/limit-board-overview.md index f5f9154..8584bcd 100644 --- a/docs/limit-board-overview.md +++ b/docs/limit-board-overview.md @@ -66,6 +66,18 @@ GET /api/v1/limit-board/overview?trade_date=2026-04-24 | `close` | `number` | 收盘价 | | `limit_price` | `number` | 理论涨停价 | | `pct_chg` | `number` | 当日涨跌幅 | +| `ak_amount` | `number \| null` | AKShare 成交额 | +| `ak_float_market_value` | `number \| null` | AKShare 流通市值 | +| `ak_total_market_value` | `number \| null` | AKShare 总市值 | +| `ak_turnover_rate` | `number \| null` | AKShare 换手率 | +| `ak_seal_amount` | `number \| null` | AKShare 封板资金 | +| `ak_first_limit_time` | `string \| null` | AKShare 首次封板时间 | +| `ak_last_limit_time` | `string \| null` | AKShare 最后封板时间 | +| `ak_break_limit_count` | `int \| null` | AKShare 炸板次数 | +| `ak_limit_up_stat` | `string \| null` | AKShare 涨停统计 | +| `ak_limit_up_days` | `int \| null` | AKShare 连板数 | +| `ak_industry` | `string \| null` | AKShare 所属行业 | +| `vol` | `int \| null` | 成交量 | | `board_count` | `int` | 该股票对应的连续涨停板数 | | `board_label` | `string` | 连板展示文案,如 `首板`、`二板` | | `display_status` | `string` | 页面可直接使用的状态文案,当前与 `board_label` 一致 | @@ -109,6 +121,18 @@ GET /api/v1/limit-board/overview?trade_date=2026-04-24 "close": 12.35, "limit_price": 12.35, "pct_chg": 10.01, + "ak_amount": 1523000000, + "ak_float_market_value": 8245000000, + "ak_total_market_value": 12678000000, + "ak_turnover_rate": 18.64, + "ak_seal_amount": 286000000, + "ak_first_limit_time": "09:35:12", + "ak_last_limit_time": "14:42:08", + "ak_break_limit_count": 2, + "ak_limit_up_stat": "4天4板", + "ak_limit_up_days": 4, + "ak_industry": "软件开发", + "vol": 123456789, "board_count": 4, "board_label": "四板", "display_status": "四板" diff --git a/docs/stock-kline.md b/docs/stock-kline.md index 968200e..d191d88 100644 --- a/docs/stock-kline.md +++ b/docs/stock-kline.md @@ -34,6 +34,7 @@ GET /api/v1/stock/kline/000001.SZ | `low` | `number` | 最低价 | | `close` | `number` | 收盘价 | | `pct_chg` | `number` | 涨跌幅 | +| `vol` | `number` | 成交量 | ## 4. 响应示例 @@ -46,7 +47,8 @@ GET /api/v1/stock/kline/000001.SZ "high": 10.55, "low": 9.98, "close": 10.43, - "pct_chg": 3.24 + "pct_chg": 3.24, + "vol": 1234567 } ] ``` diff --git a/internal/model/limit_board.go b/internal/model/limit_board.go index 14b8d94..fe1f87c 100644 --- a/internal/model/limit_board.go +++ b/internal/model/limit_board.go @@ -5,17 +5,29 @@ type LimitBoardRequest struct { } type LimitBoardStock struct { - Symbol string `json:"symbol"` - TsCode string `json:"ts_code"` - Name string `json:"name"` - Market string `json:"market"` - TradeDate string `json:"trade_date"` - Close float64 `json:"close"` - LimitPrice float64 `json:"limit_price"` - PctChg float64 `json:"pct_chg"` - BoardCount int `json:"board_count"` - BoardLabel string `json:"board_label"` - DisplayStatus string `json:"display_status"` + Symbol string `json:"symbol"` + TsCode string `json:"ts_code"` + Name string `json:"name"` + Market string `json:"market"` + TradeDate string `json:"trade_date"` + Close float64 `json:"close"` + LimitPrice float64 `json:"limit_price"` + PctChg float64 `json:"pct_chg"` + AkAmount *float64 `json:"ak_amount"` + AkFloatMarketValue *float64 `json:"ak_float_market_value"` + AkTotalMarketValue *float64 `json:"ak_total_market_value"` + AkTurnoverRate *float64 `json:"ak_turnover_rate"` + AkSealAmount *float64 `json:"ak_seal_amount"` + AkFirstLimitTime *string `json:"ak_first_limit_time"` + AkLastLimitTime *string `json:"ak_last_limit_time"` + AkBreakLimitCount *int `json:"ak_break_limit_count"` + AkLimitUpStat *string `json:"ak_limit_up_stat"` + AkLimitUpDays *int `json:"ak_limit_up_days"` + AkIndustry *string `json:"ak_industry"` + Vol *int64 `json:"vol"` + BoardCount int `json:"board_count"` + BoardLabel string `json:"board_label"` + DisplayStatus string `json:"display_status"` } type LimitBoardGroup struct { diff --git a/internal/model/stock.go b/internal/model/stock.go index 7c2f217..309ff89 100644 --- a/internal/model/stock.go +++ b/internal/model/stock.go @@ -11,6 +11,7 @@ type StockDaily struct { Low float64 `gorm:"column:low" json:"low"` Close float64 `gorm:"column:close" json:"close"` PctChg float64 `gorm:"column:pct_chg" json:"pct_chg"` + Vol float64 `gorm:"column:vol" json:"vol"` } // AnalyzeRequest 用于接收前端 POST 请求的参数 diff --git a/internal/service/limit_board_service.go b/internal/service/limit_board_service.go index e576071..a295039 100644 --- a/internal/service/limit_board_service.go +++ b/internal/service/limit_board_service.go @@ -176,7 +176,19 @@ func (s *LimitBoardService) loadCurrentLimitStocks(tradeDate string) ([]model.Li DATE_FORMAT(l.trade_date, '%Y-%m-%d') AS trade_date, COALESCE(d.close, l.close, 0) AS close, COALESCE(l.limit_price, 0) AS limit_price, - COALESCE(d.pct_chg, 0) AS pct_chg + COALESCE(d.pct_chg, 0) AS pct_chg, + l.ak_amount, + l.ak_float_market_value, + l.ak_total_market_value, + l.ak_turnover_rate, + l.ak_seal_amount, + l.ak_first_limit_time, + l.ak_last_limit_time, + l.ak_break_limit_count, + l.ak_limit_up_stat, + l.ak_limit_up_days, + l.ak_industry, + l.vol FROM stock_limit_data l LEFT JOIN stock_daily d ON d.ts_code = l.ts_code AND d.trade_date = l.trade_date