Files
go/internal/service/common_service.go
2026-05-09 17:50:40 +08:00

36 lines
911 B
Go

package service
import (
"gorm.io/gorm"
"level_go/internal/model"
)
// CommonService 提供通用基础数据查询能力。
type CommonService struct {
DB *gorm.DB // 数据库连接。
}
// GetTradeCalendar 查询上交所全部开市日期,并返回最新开市日期。
func (s *CommonService) GetTradeCalendar() (model.CalendarResponse, error) {
var results []struct {
DateStr string `gorm:"column:ds"`
}
var resp model.CalendarResponse
err := s.DB.Model(&model.TradeCalendar{}).
Select("DATE_FORMAT(cal_date, '%Y-%m-%d') as ds").
Where("is_open = ? AND exchange = ?", 1, "SSE").
Order("cal_date ASC").Scan(&results).Error
if err != nil {
return resp, err
}
// 按日期升序扫描,因此循环中最后一次赋值即为最大开市日期。
for _, r := range results {
resp.OpenDates = append(resp.OpenDates, r.DateStr)
resp.MaxDate = r.DateStr
}
return resp, nil
}