package service import ( "fmt" "gorm.io/gorm" ) type LimitBoardService struct { DB *gorm.DB } const stockLimitCombinedTable = "stock_limit_combined_data" func boardLabel(boardCount int) string { switch boardCount { case 1: return "首板" case 2: return "二板" case 3: return "三板" case 4: return "四板" case 5: return "五板" case 6: return "六板" case 7: return "七板" case 8: return "八板" case 9: return "九板" default: return fmt.Sprintf("%d板", boardCount) } } func (s *LimitBoardService) loadTradeCalendar(tradeDate string) ([]string, int, error) { var tradeDates []string if err := s.DB.Table("trade_calendar"). Select("DATE_FORMAT(cal_date, '%Y-%m-%d') AS trade_date"). Where("exchange = ? AND is_open = ? AND cal_date <= ?", "SSE", 1, tradeDate). Order("cal_date ASC"). Scan(&tradeDates).Error; err != nil { return nil, -1, err } dateIndex := -1 for i, d := range tradeDates { if d == tradeDate { dateIndex = i break } } return tradeDates, dateIndex, nil }