diff --git a/backend/data/fund_data_api.go b/backend/data/fund_data_api.go index d11f817..db1f1d5 100644 --- a/backend/data/fund_data_api.go +++ b/backend/data/fund_data_api.go @@ -83,6 +83,12 @@ func (FundBasic) TableName() string { // CrawlFundBasic 爬取基金基本信息 func (f *FundApi) CrawlFundBasic(fundCode string) (*FundBasic, error) { + defer func() { + if r := recover(); r != nil { + logger.SugaredLogger.Errorf("CrawlFundBasic panic: %v", r) + } + }() + crawler := CrawlerApi{ crawlerBaseInfo: CrawlerBaseInfo{ Name: "天天基金", @@ -254,6 +260,12 @@ func (f *FundApi) UnFollowFund(fundCode string) string { } func (f *FundApi) AllFund() { + defer func() { + if r := recover(); r != nil { + logger.SugaredLogger.Errorf("AllFund panic: %v", r) + } + }() + response, err := f.client.SetTimeout(time.Duration(f.config.CrawlTimeOut)*time.Second).R(). SetHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"). Get("https://fund.eastmoney.com/allfund.html") @@ -272,8 +284,7 @@ func (f *FundApi) AllFund() { name := text[0] str := strutil.SplitAndTrim(name, ")", "(", ")") logger.SugaredLogger.Infof("%d,基金信息 code:%s,name:%s", cnt, str[0], str[1]) - //f.CrawlFundBasic(str[0]) - + //go f.CrawlFundBasic(str[0]) fund := &FundBasic{ Code: str[0], Name: str[1], @@ -282,8 +293,6 @@ func (f *FundApi) AllFund() { db.Dao.Model(fund).Where("code=?", fund.Code).Count(&count) if count == 0 { db.Dao.Create(fund) - } else { - db.Dao.Model(fund).Where("code=?", fund.Code).Updates(fund) } } diff --git a/frontend/src/components/fund.vue b/frontend/src/components/fund.vue index 8faffc0..bb372ad 100644 --- a/frontend/src/components/fund.vue +++ b/frontend/src/components/fund.vue @@ -124,7 +124,7 @@ function getFundList(value){ options.value=[] result.forEach(item=>{ options.value.push({ - label: item.name, + label: item.name+" ["+item.code+"]", value: item.code, }) }) diff --git a/main.go b/main.go index 962f715..a2c7d8a 100644 --- a/main.go +++ b/main.go @@ -75,7 +75,6 @@ func main() { if stocksBinUS != nil && len(stocksBinUS) > 0 { go initStockDataUS() } - updateBasicInfo() // Create an instance of the app structure @@ -191,34 +190,34 @@ func main() { } func initStockDataUS() { - var count int64 - db.Dao.Model(&models.StockInfoUS{}).Count(&count) - if count > 0 { - return - } var v []models.StockInfoUS + log.Printf("init stock data us %d", len(v)) err := json.Unmarshal(stocksBinUS, &v) if err != nil { return } for _, item := range v { + var count int64 + db.Dao.Model(&models.StockInfoUS{}).Count(&count) + if count > 0 { + return + } db.Dao.Model(&models.StockInfoUS{}).Create(&item) } - log.Printf("init stock data us %d", len(v)) } func initStockDataHK() { - var count int64 - db.Dao.Model(&models.StockInfoHK{}).Count(&count) - if count > 0 { - return - } var v []models.StockInfoHK err := json.Unmarshal(stocksBinHK, &v) if err != nil { return } for _, item := range v { + var count int64 + db.Dao.Model(&models.StockInfoHK{}).Count(&count) + if count > 0 { + continue + } db.Dao.Model(&models.StockInfoHK{}).Create(&item) } log.Printf("init stock data hk %d", len(v)) @@ -234,11 +233,6 @@ func updateBasicInfo() { } func initStockData() { - var count int64 - db.Dao.Model(&data.StockBasic{}).Count(&count) - if count > 0 { - return - } logger.NewDefaultLogger().Info("init stock data") res := &data.TushareStockBasicResponse{} err := json.Unmarshal(stocksBin, res) @@ -265,7 +259,14 @@ func initStockData() { stock.Cnspell = convertor.ToString(item[14]) stock.Fullname = convertor.ToString(item[20]) stock.Ename = convertor.ToString(item[21]) - db.Dao.Model(&data.StockBasic{}).FirstOrCreate(stock, &data.StockBasic{TsCode: stock.TsCode}).Updates(stock) + + var count int64 + db.Dao.Model(&data.StockBasic{}).Where("ts_code = ?", stock.TsCode).Count(&count) + if count > 0 { + continue + } else { + db.Dao.Create(stock) + } } }