Files
stock/internal/logic/a/basic.go
2026-01-17 01:14:19 +08:00

104 lines
2.4 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package a
import (
"errors"
"log"
"strings"
"git.apinb.com/dataset/stock/internal/impl"
"git.apinb.com/dataset/stock/internal/models"
"gorm.io/gorm"
)
func GetStockBasic() {
// 参数
params := map[string]string{
"list_status": "L", // 上市状态 L上市 D退市 P暂停上市默认是L
}
// 字段
fields := strings.Split("ts_code,symbol,name,area,industry,fullname,enname,cnspell,market,exchange,list_date,is_hs,act_name,act_ent_type", ",")
// 根据api 请求对应的接口
reply, _ := TushareClient.StockBasic(params, fields)
if reply.Code != 0 {
log.Println("ERROR", "GetStockBasic", reply.Code, reply.Msg)
return
}
for _, item := range reply.Data.Items {
var record models.StockBasic
data := Anys2Strings(item)
err := impl.DBService.Where("ts_code=?", data[0]).First(&record).Error
if errors.Is(err, gorm.ErrRecordNotFound) {
// create
record = models.StockBasic{
TsCode: data[0],
Symbol: data[1],
Name: data[2],
Area: data[3],
Industry: data[4],
FullName: data[5],
EnName: data[6],
CnSpell: data[7],
Market: data[8],
Exchange: data[9],
ListDate: data[10],
IsHS: data[11],
ActName: data[12],
ActEntType: data[13],
}
impl.DBService.Create(&record)
} else if err == nil {
// check updated.
upd := make(map[string]any)
if record.Name != data[2] {
upd["name"] = data[2]
}
if record.Area != data[3] {
upd["area"] = data[3]
}
if record.Industry != data[4] {
upd["industry"] = data[4]
}
if record.FullName != data[5] {
upd["full_name"] = data[5]
}
if record.EnName != data[6] {
upd["en_name"] = data[6]
}
if record.CnSpell != data[7] {
upd["cn_spell"] = data[7]
}
if record.Market != data[8] {
upd["market"] = data[8]
}
if record.Exchange != data[9] {
upd["exchange"] = data[9]
}
if record.ListDate != data[10] {
upd["list_date"] = data[10]
}
if record.IsHS != data[11] {
upd["is_hs"] = data[11]
}
if record.ActName != data[12] {
upd["act_name"] = data[12]
}
if record.ActEntType != data[13] {
upd["act_ent_type"] = data[13]
}
if len(upd) > 0 {
impl.DBService.Model(record).Updates(upd)
}
}
}
}
func GetStockCodes() []string {
var col []string
impl.DBService.Model(&models.StockBasic{}).Pluck("ts_code", &col)
return col
}