package a import ( "log" "strings" "git.apinb.com/dataset/stock/internal/impl" "git.apinb.com/dataset/stock/internal/models" ) func GetStockIndicator() { s, e := ReturnLastDay() for _, code := range GetStockCodes() { params := map[string]string{ "ts_code": code, "start_date": s, "end_date": e, } var cnt int64 impl.DBService.Model(&models.StockDaily{}).Where("ts_code=? and trade_date in (?,?)", code, s, e).Count(&cnt) if cnt == 2 { continue } fields := strings.Split("ts_code,trade_date,close,turnover_rate,turnover_rate_f,volume_ratio,pe,pe_ttm,pb,ps,ps_ttm,dv_ratio,dv_ttm,total_share,float_share,free_share,total_mv,circ_mv", ",") reply, err := TushareClient.Daily(params, fields) if err != nil { log.Println("ERROR", "GetStockIndicator", err) return } for _, item := range reply.Data.Items { var cnt int64 impl.DBService.Model(&models.StockIndicator{}).Where("ts_code=? and trade_date=?", item[0].(string), item[1].(string)).Count(&cnt) if cnt == 0 { impl.DBService.Create(&models.StockIndicator{ TsCode: item[0].(string), TradeDate: item[1].(string), Close: item[2].(float64), TurnoverRate: item[3].(float64), TurnoverRateF: item[4].(float64), VolumeRatio: item[5].(float64), Pe: item[6].(float64), PeTtm: item[7].(float64), Pb: item[8].(float64), Ps: item[9].(float64), PsTtm: item[10].(float64), DvRatio: item[11].(float64), DvTtm: item[12].(float64), TotalShare: item[13].(float64), FloatShare: item[14].(float64), FreeShare: item[15].(float64), TotalMv: item[16].(float64), CircMv: item[17].(float64), }) } } } }