Bläddra i källkod

同花顺记录刷新日志

xyxie 1 dag sedan
förälder
incheckning
dd52ff3ba3

+ 14 - 3
controllers/base_from_ths_ds.go

@@ -47,7 +47,7 @@ func (this *ThsDsController) Add() {
 	cacheKey = utils.CACHE_EDB_DATA_ADD + strconv.Itoa(source) + "_" + req.StockCode + req.EdbCode
 	if !utils.Rc.IsExist(cacheKey) {
 		utils.Rc.SetNX(cacheKey, 1, 1*time.Minute)
-		dataItem, err := services.GetEdbDataFromThsDs(req.StockCode, req.EdbCode, utils.BASE_START_DATE, endDate, "", req.ExtraPars)
+		dataItem, _, err := services.GetEdbDataFromThsDs(req.StockCode, req.EdbCode, utils.BASE_START_DATE, endDate, "", req.ExtraPars)
 		if err != nil {
 			br.Msg = "获取指标信息失败!"
 			br.ErrMsg = "获取指标信息失败 GetEdbDataFromThsDs,Err:" + err.Error()
@@ -116,8 +116,19 @@ func (this *ThsDsController) Refresh() {
 	}
 
 	utils.Rc.SetNX(cacheKey, 1, 1*time.Minute)
+	var hasUpdate bool
+	var updateResult bool
+	var realApiErrMsg string
+	var dataItem models.EdbDataFromThs
 	defer func() {
 		utils.Rc.Delete(cacheKey)
+		var updateFailedReason string
+		if err == nil {
+			updateResult = true
+		} else {
+			updateFailedReason = err.Error()
+		}
+		_ = services.EdbDataUpdateRecord(edbInfo.EdbInfoId, hasUpdate, updateResult, updateFailedReason, realApiErrMsg)
 	}()
 
 	var extra models.EdbInfoExtra
@@ -129,13 +140,13 @@ func (this *ThsDsController) Refresh() {
 		}
 	}
 
-	dataItem, err := services.GetEdbDataFromThsDs(edbInfo.StockCode, edbInfo.IndicatorCode, utils.GetEdbRefreshStartDate(req.StartDate), endDate, edbInfo.TerminalCode, extra.ApiExtraPars)
+	dataItem, realApiErrMsg, err = services.GetEdbDataFromThsDs(edbInfo.StockCode, edbInfo.IndicatorCode, utils.GetEdbRefreshStartDate(req.StartDate), endDate, edbInfo.TerminalCode, extra.ApiExtraPars)
 	if err != nil {
 		br.Msg = "获取指标信息失败!"
 		br.ErrMsg = "获取指标信息失败 GetEdbDataFromThsDs,Err:" + err.Error()
 		return
 	}
-	err = models.RefreshEdbDataFromThsDs(req.EdbInfoId, req.EdbCode, utils.GetEdbRefreshStartDate(req.StartDate), dataItem)
+	hasUpdate, err = models.RefreshEdbDataFromThsDs(req.EdbInfoId, req.EdbCode, utils.GetEdbRefreshStartDate(req.StartDate), dataItem)
 	if err != nil && err.Error() != utils.ErrNoRow() {
 		br.Msg = "刷新指标信息失败!"
 		br.ErrMsg = "刷新指标信息失败 RefreshEdbDataFromThsDs,Err:" + err.Error()

+ 7 - 5
models/base_from_ths_ds.go

@@ -73,7 +73,7 @@ func AddEdbDataFromThsDs(stockCode, edbCode string, item EdbDataFromThs) (err er
 }
 
 // 刷新同花顺指标数据
-func RefreshEdbDataFromThsDs(edbInfoId int, edbCode, startDate string, item EdbDataFromThs) (err error) {
+func RefreshEdbDataFromThsDs(edbInfoId int, edbCode, startDate string, item EdbDataFromThs) (hasUpdate bool, err error) {
 	//o := orm.NewOrm()
 	source := utils.DATA_SOURCE_THS
 	subSource := utils.DATA_SUB_SOURCE_DATE
@@ -105,7 +105,7 @@ func RefreshEdbDataFromThsDs(edbInfoId int, edbCode, startDate string, item EdbD
 
 		existList, err := GetEdbDataByCondition(source, subSource, condition, pars)
 		if err != nil {
-			return err
+			return false, err
 		}
 
 		existMap := make(map[string]*EdbInfoSearchData)
@@ -127,7 +127,7 @@ func RefreshEdbDataFromThsDs(edbInfoId int, edbCode, startDate string, item EdbD
 
 			dataTime, err := time.ParseInLocation(utils.FormatDate, eDate, time.Local)
 			if err != nil {
-				return err
+				return false, err
 			}
 			if findItem, ok := existMap[eDate]; !ok {
 				if _, addOk := addMap[eDate]; !addOk {
@@ -141,8 +141,9 @@ func RefreshEdbDataFromThsDs(edbInfoId int, edbCode, startDate string, item EdbD
 				if findItem != nil && utils.SubFloatToString(findItem.Value, 30) != utils.SubFloatToString(sValue, 30) {
 					err = ModifyEdbDataById(source, subSource, findItem.EdbDataId, sValueStr)
 					if err != nil {
-						return err
+						return false, err
 					}
+					hasUpdate = true
 				}
 			}
 
@@ -165,8 +166,9 @@ func RefreshEdbDataFromThsDs(edbInfoId int, edbCode, startDate string, item EdbD
 			//_, err = o.Raw(addSql).Exec()
 			err = global.DEFAULT_DB.Exec(addSql).Error
 			if err != nil {
-				return err
+				return false, err
 			}
+			hasUpdate = true
 		}
 	}
 	return

+ 5 - 3
services/base_from_ths_ds.go

@@ -10,7 +10,7 @@ import (
 	"strings"
 )
 
-func GetEdbDataFromThsDs(stockCode, edbCode, startDate, endDate, edbTerminalCode, extraPars string) (item models.EdbDataFromThs, err error) {
+func GetEdbDataFromThsDs(stockCode, edbCode, startDate, endDate, edbTerminalCode, extraPars string) (item models.EdbDataFromThs, apiErrMsg string, err error) {
 	terminal, err := GetTerminal(utils.DATA_SOURCE_THS, edbTerminalCode)
 	if err != nil {
 		err = fmt.Errorf("获取同花顺接口配置出错 Err: %s", err)
@@ -37,10 +37,12 @@ func GetEdbDataFromThsDs(stockCode, edbCode, startDate, endDate, edbTerminalCode
 
 		// TEST
 		//token = "23f339e97fac48d8b99024228fafb6f0128cfbb7.signs_NTc2NjQ4MTA5"
-		return getEdbDataFromThsDsHttp(stockCode, edbCode, startDate, endDate, terminal.Value, token, extraPars)
+		item, apiErrMsg, err = getEdbDataFromThsDsHttp(stockCode, edbCode, startDate, endDate, terminal.Value, token, extraPars)
+		return
 	}
 
-	return getEdbDataFromThsDsApp(stockCode, edbCode, startDate, endDate, 0, terminal.ServerUrl, extraPars)
+	item, err = getEdbDataFromThsDsApp(stockCode, edbCode, startDate, endDate, 0, terminal.ServerUrl, extraPars)
+	return
 }
 
 type EdbDataFromThsSdInterface struct {

+ 4 - 1
services/base_from_ths_ds_http.go

@@ -10,7 +10,7 @@ import (
 )
 
 // getEdbDataFromThsDsHttp 通过url获取同花顺的日期序列数据
-func getEdbDataFromThsDsHttp(stockCode, edbCode, startDate, endDate, thsRefreshToken, token, extraPars string) (item models.EdbDataFromThs, err error) {
+func getEdbDataFromThsDsHttp(stockCode, edbCode, startDate, endDate, thsRefreshToken, token, extraPars string) (item models.EdbDataFromThs, apiErrMsg string, err error) {
 	thsUrl := "https://quantapi.51ifind.com/api/v1/date_sequence"
 	//indicators 是 半角逗号分隔的所有指标,宏观指标过多,推荐使用Windows超级命令生成。 "indicators":"M001620326,M002822183"
 	//functionpara 否 key-value格式,省略时不进行更新时间筛选。两个时间控件更新起始时间(startrtime)和更新结束时间(endrtime),不勾选时省略见下方代码块
@@ -51,6 +51,8 @@ func getEdbDataFromThsDsHttp(stockCode, edbCode, startDate, endDate, thsRefreshT
 
 	body, err, _ := postCurl(thsUrl, dataMap, 0, thsRefreshToken, token)
 	if err != nil {
+		// 返回接口报错的实际原因
+		apiErrMsg = err.Error()
 		return
 	}
 
@@ -62,6 +64,7 @@ func getEdbDataFromThsDsHttp(stockCode, edbCode, startDate, endDate, thsRefreshT
 	}
 	if tmpItems.Errorcode != 0 {
 		err = errors.New(tmpItems.Errmsg)
+		apiErrMsg = fmt.Sprintf("%d:%s", tmpItems.Errorcode, tmpItems.Errmsg)
 		return
 	}
 

+ 15 - 15
services/edb_info_stat.go

@@ -57,7 +57,7 @@ func AddEdbInfoUpdateLog(edbInfoId int, updateResult int, updateFailedReason str
 	return
 }
 
-// SetMysteelChemicalEdbInfoUpdateStat 定时统计钢联化工的数据源明细表
+// SetMysteelChemicalEdbInfoUpdateStat 定时统计上海钢联的数据源明细表
 func SetMysteelChemicalEdbInfoUpdateStat(needStat bool) (err error) {
 	defer func() {
 		if err != nil {
@@ -72,7 +72,7 @@ func SetMysteelChemicalEdbInfoUpdateStat(needStat bool) (err error) {
 	pars = append(pars, utils.DATA_SOURCE_MYSTEEL_CHEMICAL)
 	edbList, err := models.GetEdbInfoByCondition(condition, pars, 0)
 	if err != nil {
-		err = fmt.Errorf("查询钢联化工指标信息出错,err: %s", err)
+		err = fmt.Errorf("查询上海钢联指标信息出错,err: %s", err)
 		return
 	}
 	nowTime := time.Now()
@@ -82,7 +82,7 @@ func SetMysteelChemicalEdbInfoUpdateStat(needStat bool) (err error) {
 	//查询当日所有钢联指标的终端更新记录
 	updateLogList, err := data_stat.GetEdbUpdateSourceLogByCreateDate(utils.DATA_SOURCE_MYSTEEL_CHEMICAL, today, nextDay, 1)
 	if err != nil {
-		err = fmt.Errorf("查询钢联化工指标终端更新日志报错,err: %s", err)
+		err = fmt.Errorf("查询上海钢联指标终端更新日志报错,err: %s", err)
 		return
 	}
 	fmt.Println(len(updateLogList))
@@ -103,7 +103,7 @@ func SetMysteelChemicalEdbInfoUpdateStat(needStat bool) (err error) {
 	//查询当日钢联所有的刷新记录
 	updateStatList, err := data_stat.GetEdbUpdateStatByCondition(statCond, statPars)
 	if err != nil {
-		err = fmt.Errorf("查询钢联化工数据源明细记录统计报错,err: %s", err)
+		err = fmt.Errorf("查询上海钢联数据源明细记录统计报错,err: %s", err)
 		return
 	}
 	updateStatMap := make(map[int]*data_stat.EdbInfoUpdateStat)
@@ -124,7 +124,7 @@ func SetMysteelChemicalEdbInfoUpdateStat(needStat bool) (err error) {
 		//查询所有需要当日刷新的周度指标
 		indexTotal, tErr := indexObj.GetIndexByCondition(cond, tmpPars)
 		if tErr != nil {
-			err = fmt.Errorf("查询钢联化工原始指标报错,err: %s", tErr)
+			err = fmt.Errorf("查询上海钢联原始指标报错,err: %s", tErr)
 			return
 		}
 		for _, v := range indexTotal {
@@ -137,7 +137,7 @@ func SetMysteelChemicalEdbInfoUpdateStat(needStat bool) (err error) {
 	//查询所有需要当日刷新的周度指标
 	indexStop, tErr := indexObj.GetIndexByCondition(tmpCond, []interface{}{})
 	if tErr != nil {
-		err = fmt.Errorf("查询钢联化工原始指标报错,err: %s", tErr)
+		err = fmt.Errorf("查询上海钢联原始指标报错,err: %s", tErr)
 		return
 	}
 	for _, v := range indexStop {
@@ -225,7 +225,7 @@ func SetMysteelChemicalEdbInfoUpdateStat(needStat bool) (err error) {
 			if len(addList) >= 500 {
 				err = logStat.Add(addList)
 				if err != nil {
-					err = fmt.Errorf("新增钢联化工明细记录报错,err: %s", err)
+					err = fmt.Errorf("新增上海钢联明细记录报错,err: %s", err)
 					return
 				}
 				addList = addList[:0]
@@ -234,7 +234,7 @@ func SetMysteelChemicalEdbInfoUpdateStat(needStat bool) (err error) {
 			if len(modifyList) >= 500 {
 				err = data_stat.UpdateEdbUpdateStatMulti(modifyList)
 				if err != nil {
-					err = fmt.Errorf("更新钢联化工明细记录报错,err: %s", err)
+					err = fmt.Errorf("更新上海钢联明细记录报错,err: %s", err)
 					return
 				}
 				modifyList = modifyList[:0]
@@ -290,9 +290,9 @@ func SetEdbSourceStat(needStat bool) (err error) {
 		}
 	}()
 	//查询钢联的所有指标信息
-	nowTime := time.Now()
-	today := time.Now().Format(utils.FormatDate)
-	nextDay := time.Now().AddDate(0, 0, 1).Format(utils.FormatDate)
+	nowTime := time.Now().AddDate(0, 0, -1)
+	today := time.Now().AddDate(0, 0, -1).Format(utils.FormatDate)
+	nextDay := time.Now().Format(utils.FormatDate)
 
 	statCond := "  and  create_time >= ? and create_time < ?"
 	var statPars []interface{}
@@ -300,7 +300,7 @@ func SetEdbSourceStat(needStat bool) (err error) {
 	//查询当日钢联所有的统计数据
 	updateStatList, err := data_stat.GetEdbUpdateStatByCondition(statCond, statPars)
 	if err != nil {
-		err = fmt.Errorf("查询钢联化工数据源明细记录统计报错,err: %s", err)
+		err = fmt.Errorf("查询上海钢联数据源明细记录统计报错,err: %s", err)
 		return
 	}
 	if !needStat && len(updateStatList) == 0 {
@@ -319,7 +319,7 @@ func SetEdbSourceStat(needStat bool) (err error) {
 	//查询当日钢联所有的统计数据
 	statList, err := data_stat.GetEdbSourceStatByCondition(cond, pars)
 	if err != nil {
-		err = fmt.Errorf("查询钢联化工数据源统计报错,err: %s", err)
+		err = fmt.Errorf("查询上海钢联数据源统计报错,err: %s", err)
 		return
 	}
 	statMap := make(map[string]*data_stat.EdbSourceStat)
@@ -396,7 +396,7 @@ func SetEdbSourceStat(needStat bool) (err error) {
 		if len(addList) >= 500 {
 			err = logStat.Add(addList)
 			if err != nil {
-				err = fmt.Errorf("新增钢联化工统计表报错,err: %s", err)
+				err = fmt.Errorf("新增上海钢联统计表报错,err: %s", err)
 				return
 			}
 			addList = addList[:0]
@@ -405,7 +405,7 @@ func SetEdbSourceStat(needStat bool) (err error) {
 		if len(modifyList) >= 500 {
 			err = data_stat.UpdateEdbSourceStatMulti(modifyList)
 			if err != nil {
-				err = fmt.Errorf("更新钢联化工统计表报错,err: %s", err)
+				err = fmt.Errorf("更新上海钢联统计表报错,err: %s", err)
 				return
 			}
 			modifyList = modifyList[:0]