59 lines
1.3 KiB
Go
59 lines
1.3 KiB
Go
package a
|
|
|
|
import (
|
|
"log"
|
|
"time"
|
|
|
|
"git.apinb.com/dataset/stock/internal/impl"
|
|
"git.apinb.com/dataset/stock/internal/models"
|
|
)
|
|
|
|
func GetStockDaily() {
|
|
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 := []string{}
|
|
reply, err := TushareClient.Daily(params, fields)
|
|
if err != nil {
|
|
log.Println("ERROR", "GetStockDaily", err)
|
|
return
|
|
}
|
|
|
|
for _, item := range reply.Data.Items {
|
|
var cnt int64
|
|
impl.DBService.Model(&models.StockDaily{}).Where("ts_code=? and trade_date=?", item[0].(string), item[1].(string)).Count(&cnt)
|
|
log.Println("++ items")
|
|
if cnt == 0 {
|
|
impl.DBService.Create(&models.StockDaily{
|
|
TsCode: item[0].(string),
|
|
TradeDate: item[1].(string),
|
|
Open: item[2].(float64),
|
|
High: item[3].(float64),
|
|
Low: item[4].(float64),
|
|
Close: item[5].(float64),
|
|
PreClose: item[6].(float64),
|
|
Change: item[7].(float64),
|
|
PctChg: item[8].(float64),
|
|
Vol: item[9].(float64),
|
|
Amount: item[10].(float64),
|
|
})
|
|
}
|
|
}
|
|
|
|
time.Sleep(200 * time.Microsecond)
|
|
|
|
}
|
|
|
|
}
|