Selaa lähdekoodia

fix:新增wind指标时,获取服务器地址从数据库获取,取数量少的

Roc 2 vuotta sitten
vanhempi
commit
139e5b786c
4 muutettua tiedostoa jossa 73 lisäystä ja 16 poistoa
  1. 34 13
      controllers/base_from_wind.go
  2. 13 0
      models/base_from_wind.go
  3. 24 1
      services/base_from_wind.go
  4. 2 2
      utils/constants.go

+ 34 - 13
controllers/base_from_wind.go

@@ -50,7 +50,15 @@ func (this *WindController) Add() {
 			endDate = time.Now().Format(utils.FormatDate)
 		}
 
-		dataItem, errCode, err := services.GetEdbDataFromWind(req.EdbCode, utils.BASE_START_DATE, endDate)
+		windUrl, err := GetServerUrl()
+		if err != nil {
+			br.Msg = "获取使用的wind地址失败!"
+			br.ErrMsg = "获取使用的wind地址失败,err:" + err.Error()
+			return
+		}
+
+		dataItem, errCode, err := services.GetEdbDataFromWindUrl(windUrl, req.EdbCode, utils.BASE_START_DATE, endDate)
+		//dataItem, errCode, err := services.GetEdbDataFromWind(req.EdbCode, utils.BASE_START_DATE, endDate)
 		if errCode == 421 { //指标超限
 			br.Ret = 421
 		}
@@ -117,18 +125,6 @@ func (this *WindController) Refresh() {
 			return
 		}
 
-		//特定的指标过滤(wind不对该指标进行更新了)
-		{
-			edbCodeArr := []string{"S6451662", "S6451679", "S6451670", "S6451671", "s6451669", "S6451693", "S6451694"}
-			has := utils.InArrayByStr(edbCodeArr, req.EdbCode)
-			if has {
-				br.Ret = 200
-				br.Success = true
-				br.Msg = "该指标不再更新,系统自动过滤了"
-				return
-			}
-		}
-
 		//期货数据,就默认到今天,特殊处理下
 		endDate := utils.BASE_END_DATE
 		if strings.Contains(req.EdbCode, ".") {
@@ -159,3 +155,28 @@ func (this *WindController) Refresh() {
 		br.Msg = "系统处理中,请稍后重试"
 	}
 }
+
+// GetServerUrl 获取服务器地址
+func GetServerUrl() (windUrl string, err error) {
+	list, err := models.GetServerUrlCountGroupByServerUrl()
+	if err != nil {
+		return
+	}
+	windUrlNum := 0
+
+	//现有系统的wind数据服务地址分配
+	windUrlMap := make(map[string]int)
+	for _, v := range list {
+		windUrlMap[v.ServerUrl] = v.Total
+	}
+
+	for _, tmpWind := range utils.Hz_Wind_Data_Url_LIST {
+		tmpWindUrl := tmpWind.Url
+		tmpNum := windUrlMap[tmpWindUrl]
+		if windUrl == `` || (windUrl != `` && tmpNum < windUrlNum) {
+			windUrl = tmpWindUrl
+			windUrlNum = tmpNum
+		}
+	}
+	return
+}

+ 13 - 0
models/base_from_wind.go

@@ -115,3 +115,16 @@ func RefreshEdbDataFromWind(edbInfoId int, edbCode, startDate string, item *serv
 
 	return
 }
+
+type ServerUrlCountGroup struct {
+	ServerUrl string
+	Total     int
+}
+
+// GetServerUrlCountGroupByServerUrl 获取服务器地址分组总数
+func GetServerUrlCountGroupByServerUrl() (list []ServerUrlCountGroup, err error) {
+	o := orm.NewOrm()
+	sql := `select server_url,count(1) total from edb_info where source = 2 and server_url != "" group by server_url; `
+	_, err = o.Raw(sql).QueryRows(&list)
+	return
+}

+ 24 - 1
services/base_from_wind.go

@@ -102,7 +102,30 @@ func GetEdbDataFromWindUrl(windUrl, edbCode, startDate, endDate string) (item *E
 	//异常的话,需要邮件通知
 	if len(item.ErrorCode) > 0 {
 		if item.ErrorCode["0"] != 0 {
-			go alarm_msg.SendAlarmMsg(fmt.Sprintf("wind数据服务异常,url:%s;edbCode:%s,ErrorCode:%d,result:%s", windUrl, edbCode, item.ErrorCode["0"], string(body)), 3)
+			if item.ErrorCode["0"] == -40522017 {
+				//{
+				//DT: {
+				//0: 1654646400000
+				//},
+				//CLOSE: {
+				//0: "CEDBService:: quota exceeded."
+				//},
+				//ErrorCode: {
+				//0: -40522017
+				//}
+				//}
+				// 设置服务器已超限
+				errorCode = 421
+				return
+			} else if item.ErrorCode["0"] == -40520005 {
+				//.ErrorCode=-40520005
+				//.Data=[No Python API Authority
+				err = errors.New("No Python API Authority")
+				go alarm_msg.SendAlarmMsg(fmt.Sprintf("wind数据服务异常,edbCode:%s,ErrorCode:%d,result:%s", edbCode, item.ErrorCode["0"], string(body)), 3)
+				return
+			} else {
+				go alarm_msg.SendAlarmMsg(fmt.Sprintf("wind数据服务异常,edbCode:%s,ErrorCode:%d,result:%s", edbCode, item.ErrorCode["0"], string(body)), 3)
+			}
 		}
 	}
 	return

+ 2 - 2
utils/constants.go

@@ -79,8 +79,8 @@ var (
 	EDB_DATA_LIMIT        = 10
 	Hz_Wind_Data_Url_LIST = []WindUrlMap{
 		{Url: "http://datawind.hzinsights.com:8040/", Num: 2000},
-		{Url: "http://datawind2.hzinsights.com:8040/", Num: 100},
-		{Url: "http://datawind3.hzinsights.com:8040/", Num: 100},
+		{Url: "http://datawind2.hzinsights.com:8040/", Num: 2000},
+		//{Url: "http://datawind3.hzinsights.com:8040/", Num: 100},
 	}
 )