deving
This commit is contained in:
@@ -4,6 +4,7 @@ import (
|
||||
"errors"
|
||||
"log"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"git.apinb.com/bsm-sdk/core/utils"
|
||||
"git.apinb.com/dataset/stock/internal/impl"
|
||||
@@ -21,7 +22,7 @@ func NewApiClient() {
|
||||
TushareClient = tushare.New(TushareToken)
|
||||
}
|
||||
|
||||
func CheckStockBasic() {
|
||||
func GetStockBasic() {
|
||||
// 参数
|
||||
params := map[string]string{
|
||||
"list_status": "L", // 上市状态 L上市 D退市 P暂停上市,默认是L
|
||||
@@ -33,7 +34,7 @@ func CheckStockBasic() {
|
||||
// 根据api 请求对应的接口
|
||||
reply, _ := TushareClient.StockBasic(params, fields)
|
||||
if reply.Code != 0 {
|
||||
log.Println("ERROR", "CheckStockBasic", reply.Code, reply.Msg)
|
||||
log.Println("ERROR", "GetStockBasic", reply.Code, reply.Msg)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -64,9 +65,6 @@ func CheckStockBasic() {
|
||||
} else if err == nil {
|
||||
// check updated.
|
||||
upd := make(map[string]any)
|
||||
if record.Symbol != data[1] {
|
||||
upd["symbol"] = data[1]
|
||||
}
|
||||
if record.Name != data[2] {
|
||||
upd["name"] = data[2]
|
||||
}
|
||||
@@ -107,10 +105,98 @@ func CheckStockBasic() {
|
||||
impl.DBService.Model(record).Updates(upd)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
func GetLastDaily() {
|
||||
s, e := ReturnLastDay()
|
||||
params := map[string]string{
|
||||
"start_date": s,
|
||||
"end_date": e,
|
||||
}
|
||||
|
||||
reply, _ := TushareClient.Daily(params, []string{})
|
||||
if reply.Code != 0 {
|
||||
log.Println("ERROR", "GetLastDaily", reply.Code, reply.Msg)
|
||||
return
|
||||
}
|
||||
|
||||
for _, item := range reply.Data.Items {
|
||||
var cnt int64
|
||||
impl.DBService.Model(&models.LastDaily{}).Where("ts_code=? and trade_date=?", item[0].(string), item[1].(string)).Count(&cnt)
|
||||
if cnt == 0 {
|
||||
impl.DBService.Create(&models.LastDaily{
|
||||
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),
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func GetLastIndicator() {
|
||||
var stocks []models.StockBasic
|
||||
impl.DBService.Find(&stocks)
|
||||
|
||||
s, e := ReturnLastDay()
|
||||
for _, row := range stocks {
|
||||
params := map[string]string{
|
||||
"ts_code": row.TsCode,
|
||||
"start_date": s,
|
||||
"end_date": e,
|
||||
}
|
||||
|
||||
reply, _ := TushareClient.Daily(params, []string{})
|
||||
if reply.Code != 0 {
|
||||
log.Println("ERROR", "GetLastIndicator", reply.Code, reply.Msg)
|
||||
return
|
||||
}
|
||||
|
||||
for _, item := range reply.Data.Items {
|
||||
var cnt int64
|
||||
impl.DBService.Model(&models.LastIndicator{}).Where("ts_code=? and trade_date=?", item[0].(string), item[1].(string)).Count(&cnt)
|
||||
if cnt == 0 {
|
||||
impl.DBService.Create(&models.LastIndicator{
|
||||
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),
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func ReturnLastDay() (string, string) {
|
||||
now := time.Now()
|
||||
start := now.Format("20060102")
|
||||
end := now.AddDate(0, -1, 0).Format("20060102")
|
||||
return start, end
|
||||
}
|
||||
|
||||
func Anys2Strings(any []any) []string {
|
||||
var ret []string
|
||||
for _, item := range any {
|
||||
|
||||
Reference in New Issue
Block a user