d5c053e59d
2、更新项目结构;
60 lines
1.0 KiB
Go
60 lines
1.0 KiB
Go
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
|
|
}
|