package strategy import ( "git.apinb.com/quant/gostock/internal/impl" "git.apinb.com/quant/gostock/internal/models" ) var Cache = make(map[string]*StockData) type StockData struct { Basic models.StockBasic Daily []models.StockDaily Indicator []models.StockIndicator FinaIndicator []models.StockFinaIndicator } func InitCacheByAll() { for _, code := range GetStocks() { Cache[code] = GetFullData(code) } } func InitCacheByCode(code string) { Cache[code] = GetFullData(code) } func GetFullData(code string) *StockData { var data StockData impl.DBService.Where("ts_code = ?", code).First(&data.Basic) impl.DBService.Where("ts_code = ?", code).Order("trade_date desc").Find(&data.Daily) impl.DBService.Where("ts_code = ?", code).Order("trade_date desc").Find(&data.Indicator) impl.DBService.Where("ts_code = ?", code).Order("period desc").Find(&data.FinaIndicator) return &data } func GetStocks() (stocks []string) { impl.DBService.Model(&models.StockBasic{}).Group("ts_code").Pluck("ts_code", &stocks) return } func GetIndustry() (industry []string) { impl.DBService.Model(&models.StockBasic{}).Group("industry").Pluck("industry", &industry) return } func GetArgs(code string) *models.StockArgs { var args models.StockArgs err := impl.DBService.Where("ts_code = ?", code).First(&args).Error if err != nil { return nil } return &args } func GetBasic(code string) *models.StockBasic { var data StockData impl.DBService.Where("ts_code = ?", code).First(&data.Basic) return &data.Basic }