新增注释

This commit is contained in:
2026-05-09 17:50:40 +08:00
parent d5c053e59d
commit 8504838ccb
19 changed files with 404 additions and 217 deletions
@@ -9,6 +9,9 @@ import (
"level_go/internal/model"
)
// GetLimitOpenCompareGroups 返回昨日涨停且今日继续涨停股票的开盘对比分组。
//
// 重点识别两类股票:今日开盘低于前收的股票,以及首板进二板且 11 点前首次涨停的股票。
func (s *LimitBoardService) GetLimitOpenCompareGroups(tradeDate string) (model.LimitOpenCompareResponse, error) {
resp := model.LimitOpenCompareResponse{TradeDate: tradeDate}
@@ -43,12 +46,14 @@ func (s *LimitBoardService) GetLimitOpenCompareGroups(tradeDate string) (model.L
firstToSecondBoardCount := 0
firstSecondBeforeElevenCount := 0
for _, stock := range stocks {
// previousTwoTradeDate 未涨停、previousTradeDate 涨停、tradeDate 涨停时,认为是首板进二板。
if stock.IsFirstToSecondBoard {
stock.HighlightLabel = "首板进二板"
firstToSecondBoardCount++
}
isOpenLower := previousTradeDate != "" && stock.HasOpen && stock.HasPreviousClose && stock.Open < stock.PreviousClose
if isOpenLower && stock.IsFirstToSecondBoard && isBeforeEleven(stock.AkFirstLimitTime) {
// 首板进二板且 11 点前封板的低开股,前端会用更强提示标签展示。
stock.IsFirstSecondBeforeEleven = true
stock.HighlightLabel = "首二一一"
firstSecondBeforeElevenCount++
@@ -72,6 +77,9 @@ func (s *LimitBoardService) GetLimitOpenCompareGroups(tradeDate string) (model.L
return resp, nil
}
// isBeforeEleven 判断涨停时间是否早于 11:00。
//
// 兼容 HH:MM:SS、930、0930、93000、093000 等时间格式。
func isBeforeEleven(limitTime *string) bool {
if limitTime == nil || *limitTime == "" {
return false
@@ -119,6 +127,7 @@ func isBeforeEleven(limitTime *string) bool {
return hour < 11
}
// loadLimitOpenCompareStocks 查询昨日涨停且今日继续涨停的股票,并带出今日开盘和昨日收盘。
func (s *LimitBoardService) loadLimitOpenCompareStocks(tradeDate, previousTradeDate, previousTwoTradeDate string) ([]model.LimitOpenCompareStock, error) {
var stocks []model.LimitOpenCompareStock
query := `SELECT
@@ -171,6 +180,7 @@ func (s *LimitBoardService) loadLimitOpenCompareStocks(tradeDate, previousTradeD
return stocks, err
}
// buildLimitOpenCompareGroups 构造“开盘低于前收”和“其他涨停股”两个固定分组。
func buildLimitOpenCompareGroups(openLowerStocks, otherStocks []model.LimitOpenCompareStock) []model.LimitOpenCompareGroup {
if openLowerStocks == nil {
openLowerStocks = []model.LimitOpenCompareStock{}
@@ -198,6 +208,7 @@ func buildLimitOpenCompareGroups(openLowerStocks, otherStocks []model.LimitOpenC
}
}
// sortLimitOpenCompareStocks 按涨跌幅降序、股票代码升序稳定展示分组内股票。
func sortLimitOpenCompareStocks(stocks []model.LimitOpenCompareStock) {
sort.Slice(stocks, func(i, j int) bool {
if stocks[i].PctChg == stocks[j].PctChg {