Browse Source

接入wind数据

xyxie 1 year ago
parent
commit
f0b5aa2ec4

+ 3 - 2
controllers/base_from_manual.go

@@ -4,6 +4,7 @@ import (
 	"encoding/json"
 	"eta/eta_index_lib/logic"
 	"eta/eta_index_lib/models"
+	"eta/eta_index_lib/services"
 	"eta/eta_index_lib/utils"
 	"strconv"
 	"time"
@@ -42,7 +43,7 @@ func (this *ManualController) Add() {
 	cacheKey = utils.CACHE_EDB_DATA_ADD + strconv.Itoa(source) + "_" + req.EdbCode
 	if !utils.Rc.IsExist(cacheKey) {
 		utils.Rc.SetNX(cacheKey, 1, 1*time.Minute)
-		err = models.AddEdbDataFromManual(req.EdbCode)
+		err = services.AddEdbDataFromManual(req.EdbCode)
 		if err != nil {
 			br.Msg = "获取指标信息失败!"
 			br.ErrMsg = "获取指标信息失败 AddEdbDataFromManual,Err:" + err.Error()
@@ -109,7 +110,7 @@ func (this *ManualController) Refresh() {
 	}
 
 	req.StartDate = `` // 开始日期也给过滤吧,万一研究员补充了之前的数据呢,还是过滤掉吧
-	err = models.RefreshEdbDataFromManual(req.EdbInfoId, req.EdbCode, req.StartDate)
+	err = services.RefreshEdbDataFromManual(req, edbInfo)
 	if err != nil && err.Error() != utils.ErrNoRow() {
 		br.Msg = "刷新指标信息失败!"
 		br.ErrMsg = "刷新指标信息失败 RefreshEdbDataFromManual,Err:" + err.Error()

+ 73 - 42
controllers/base_from_wind.go

@@ -83,30 +83,48 @@ func (this *WindController) Add() {
 			return
 		}
 
+		// 判断是否调用桥接服务
+		windBridgeUrl, _ := services.GetWindBridgeUrl()
+		if windBridgeUrl != "" {
+			windUrl = windBridgeUrl
+		}
+
 		// 设置指标与终端关系的缓存
 		windUrlCacheKey := utils.CACHE_WIND_URL + ":" + req.EdbCode
 		_ = utils.Rc.SetNX(windUrlCacheKey, windUrl, utils.GetTodayLastSecond())
 
-		//windUrl = utils.Hz_Wind_Data_Url_LIST[1].Url
-		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
-			br.Msg = "指标超限!"
-			return
-		}
-		// 指标下架
-		if errCode == services.WindNoAuthCode {
-			br.Ret = 4052
-			br.Msg = "指标已下架"
-			return
-		}
-		if err != nil {
-			br.Msg = "获取指标信息失败!"
-			br.ErrMsg = "获取指标信息失败 GetEdbDataFromWind,Err:" + err.Error()
-			return
+		var dataList []*models.EdbDataFromWindSimple
+
+		if windBridgeUrl != "" {
+			var errMsg string
+			dataList, err, errMsg = services.GetEdbDataFromBridge(windUrl, req, endDate)
+			if err != nil {
+				br.Msg = "获取指标信息失败!"
+				br.ErrMsg = "获取桥接服务指标信息失败,Err:" + errMsg + err.Error()
+				return
+			}
+		} else {
+			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
+				br.Msg = "指标超限!"
+				return
+			}
+			// 指标下架
+			if errCode == services.WindNoAuthCode {
+				br.Ret = 4052
+				br.Msg = "指标已下架"
+				return
+			}
+			if err != nil {
+				br.Msg = "获取指标信息失败!"
+				br.ErrMsg = "获取指标信息失败 GetEdbDataFromWind,Err:" + err.Error()
+				return
+			}
+			dataList = models.DealWindData(dataItem)
 		}
-		err = models.AddEdbDataFromWind(req.EdbCode, dataItem)
+		err = models.AddEdbDataFromWind(req.EdbCode, dataList)
 		if err != nil {
 			br.Msg = "获取指标信息失败!"
 			br.ErrMsg = "获取指标信息失败 AddEdbDataFromWind,Err:" + err.Error()
@@ -178,32 +196,45 @@ func (this *WindController) Refresh() {
 	if strings.Contains(req.EdbCode, ".") {
 		endDate = time.Now().Format(utils.FormatDate)
 	}
-
-	dataItem, errCode, err := services.GetEdbDataFromWindUrl(edbInfo.ServerUrl, req.EdbCode, req.StartDate, endDate)
-	if errCode == 421 { //指标超限
-		br.Ret = 421
-		br.Msg = "指标超限!"
-		return
-	}
-	// 忽略掉指标下架的错误, 并更新指标为停止更新
-	if errCode == services.WindNoAuthCode {
-		edbInfo.NoUpdate = 1
-		edbInfo.ModifyTime = time.Now().Local()
-		if e := edbInfo.Update([]string{"NoUpdate", "ModifyTime"}); e != nil {
-			br.Msg = "刷新失败"
-			br.ErrMsg = "更新wind指标停更失败, Err: " + e.Error()
+	// 判断是否调用桥接服务
+	windUrl, _ := services.GetWindBridgeUrl()
+	var dataList []*models.EdbDataFromWindSimple
+	if windUrl != "" && windUrl == edbInfo.ServerUrl {
+		var errMsg string
+		dataList, err, errMsg = services.RefreshEdbDataFromWindBridge(edbInfo.ServerUrl, req, edbInfo, endDate)
+		if err != nil {
+			br.Msg = "获取指标信息失败!"
+			br.ErrMsg = "获取桥接服务指标信息失败,Err:" + errMsg + err.Error()
 			return
 		}
-		br.Ret = 200
-		br.Msg = "操作成功"
-		return
-	}
-	if err != nil {
-		br.Msg = "获取指标信息失败!"
-		br.ErrMsg = "获取指标信息失败 GetEdbDataFromWind,Err:" + err.Error()
-		return
+	} else {
+		dataItem, errCode, err := services.GetEdbDataFromWindUrl(edbInfo.ServerUrl, req.EdbCode, req.StartDate, endDate)
+		if errCode == 421 { //指标超限
+			br.Ret = 421
+			br.Msg = "指标超限!"
+			return
+		}
+		// 忽略掉指标下架的错误, 并更新指标为停止更新
+		if errCode == services.WindNoAuthCode {
+			edbInfo.NoUpdate = 1
+			edbInfo.ModifyTime = time.Now().Local()
+			if e := edbInfo.Update([]string{"NoUpdate", "ModifyTime"}); e != nil {
+				br.Msg = "刷新失败"
+				br.ErrMsg = "更新wind指标停更失败, Err: " + e.Error()
+				return
+			}
+			br.Ret = 200
+			br.Msg = "操作成功"
+			return
+		}
+		if err != nil {
+			br.Msg = "获取指标信息失败!"
+			br.ErrMsg = "获取指标信息失败 GetEdbDataFromWind,Err:" + err.Error()
+			return
+		}
+		dataList = models.DealWindData(dataItem)
 	}
-	err = models.RefreshEdbDataFromWind(req.EdbInfoId, req.EdbCode, req.StartDate, dataItem)
+	err = models.RefreshEdbDataFromWind(req.EdbInfoId, req.EdbCode, req.StartDate, dataList)
 	if err != nil && err.Error() != utils.ErrNoRow() {
 		br.Msg = "刷新指标信息失败!"
 		br.ErrMsg = "刷新指标信息失败 RefreshEdbDataFromWind,Err:" + err.Error()

+ 21 - 0
models/base_from_bridge.go

@@ -0,0 +1,21 @@
+package models
+
+type EdbDataFromWindBridge struct {
+	Code int                        `json:"code"`
+	Msg  string                     `json:"msg"`
+	Data EdbDataFromWindBridgeIndex `json:"data"`
+}
+
+type EdbDataFromWindBridgeIndex struct {
+	IndexCode      string                      `json:"index_code"`
+	LastDate       string                      `description:"指标最新时间" json:"last_date"`
+	LastUpdateTime string                      `description:"最新更新时间" json:"last_update_time"`
+	Status         int                         `description:"指标状态" json:"status"`
+	IndexData      []EdbDataFromWindBridgeData `json:"index_data"`
+}
+
+type EdbDataFromWindBridgeData struct {
+	Val        float64 `json:"val"`
+	DataTime   string  `json:"data_time"`
+	UpdateTime string  `json:"update_time"`
+}

+ 6 - 6
models/base_from_manual.go

@@ -31,10 +31,10 @@ func GetEdbdataManualByCondition(condition string, pars []interface{}) (item []*
 }
 
 // AddEdbDataFromManual 新增弘则手工指标数据
-func AddEdbDataFromManual(edbCode string) (err error) {
+func AddEdbDataFromManual(edbCode string, manualDataList []*ManualEdbdata) (err error) {
 	o := orm.NewOrm()
 
-	var condition string
+	/*var condition string
 	var pars []interface{}
 
 	if edbCode != "" {
@@ -45,7 +45,7 @@ func AddEdbDataFromManual(edbCode string) (err error) {
 	manualDataList, err := GetEdbdataManualByCondition(condition, pars)
 	if err != nil {
 		return
-	}
+	}*/
 	dataLen := len(manualDataList)
 
 	if dataLen > 0 {
@@ -82,7 +82,7 @@ func AddEdbDataFromManual(edbCode string) (err error) {
 }
 
 // RefreshEdbDataFromManual 刷新手工指标数据
-func RefreshEdbDataFromManual(edbInfoId int, edbCode, startDate string) (err error) {
+func RefreshEdbDataFromManual(edbInfoId int, edbCode, startDate string, manualDataList []*ManualEdbdata) (err error) {
 	source := utils.DATA_SOURCE_MANUAL
 	o := orm.NewOrm()
 	if err != nil {
@@ -90,7 +90,7 @@ func RefreshEdbDataFromManual(edbInfoId int, edbCode, startDate string) (err err
 	}
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
 	//计算数据
-	var condition string
+	/*var condition string
 	var pars []interface{}
 
 	if edbCode != "" {
@@ -109,7 +109,7 @@ func RefreshEdbDataFromManual(edbInfoId int, edbCode, startDate string) (err err
 	manualDataList, err := GetEdbdataManualByCondition(condition, pars)
 	if err != nil {
 		return
-	}
+	}*/
 
 	// 真实数据的最大日期  , 插入规则配置的日期
 	var realDataMaxDate, edbDataInsertConfigDate time.Time

+ 29 - 10
models/base_from_wind.go

@@ -16,11 +16,13 @@ type EdbDataFromWind struct {
 	ErrMsg    string
 }
 
-func AddEdbDataFromWind(edbCode string, item *EdbDataFromWind) (err error) {
-	o := orm.NewOrm()
+type EdbDataFromWindSimple struct {
+	Val          string
+	DateTime     string
+	TimestampStr string
+}
 
-	var isAdd bool
-	addSql := ` INSERT INTO edb_data_wind(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+func DealWindData(item *EdbDataFromWind) (list []*EdbDataFromWindSimple) {
 	for k, v := range item.Dt {
 		timeStr := fmt.Sprintf("%d", v)
 		v = v / 1000
@@ -28,8 +30,22 @@ func AddEdbDataFromWind(edbCode string, item *EdbDataFromWind) (err error) {
 		dateTime := t.Format(utils.FormatDate)
 		val := item.Close[k]
 		saveVal := utils.SubFloatToString(val, 20)
-		addSql += GetAddSql("0", edbCode, dateTime, timeStr, saveVal)
+		tmp := &EdbDataFromWindSimple{
+			Val:          saveVal,
+			DateTime:     dateTime,
+			TimestampStr: timeStr,
+		}
+		list = append(list, tmp)
+	}
+	return
+}
 
+func AddEdbDataFromWind(edbCode string, dataList []*EdbDataFromWindSimple) (err error) {
+	o := orm.NewOrm()
+	var isAdd bool
+	addSql := ` INSERT INTO edb_data_wind(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	for _, v := range dataList {
+		addSql += GetAddSql("0", edbCode, v.DateTime, v.TimestampStr, v.Val)
 		isAdd = true
 	}
 
@@ -44,7 +60,7 @@ func AddEdbDataFromWind(edbCode string, item *EdbDataFromWind) (err error) {
 }
 
 // RefreshEdbDataFromWind 刷新wind指标数据
-func RefreshEdbDataFromWind(edbInfoId int, edbCode, startDate string, item *EdbDataFromWind) (err error) {
+func RefreshEdbDataFromWind(edbInfoId int, edbCode, startDate string, dataList []*EdbDataFromWindSimple) (err error) {
 	o := orm.NewOrm()
 	source := utils.DATA_SOURCE_WIND
 
@@ -84,16 +100,19 @@ func RefreshEdbDataFromWind(edbInfoId int, edbCode, startDate string, item *EdbD
 	var isAdd bool
 	addMap := make(map[string]string)
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
-	for k, v := range item.Dt {
-		timeStr := fmt.Sprintf("%d", v)
+	for _, v := range dataList {
+		/*timeStr := fmt.Sprintf("%d", v)
 		v = v / 1000
 		t := time.Unix(v, 0)
 		dateTime := t.Format(utils.FormatDate)
 		t, _ = time.ParseInLocation(utils.FormatDate, dateTime, time.Local) // 这里的目的是为了处理成北京时间,所以多转一遍
 
 		val := item.Close[k]
-		saveVal := utils.SubFloatToString(val, 30)
-
+		saveVal := utils.SubFloatToString(val, 30)*/
+		timeStr := v.TimestampStr
+		saveVal := v.Val
+		dateTime := v.DateTime
+		t, _ := time.ParseInLocation(utils.FormatDate, v.DateTime, time.Local)
 		//如果传入的开始时间是空的,且当前数据日期早于传入的开始日期,那么需要判断下当前日期的数据是否存在
 		if !startDateTime.IsZero() && t.Before(startDateTime) {
 			tmpItem, tmpErr := GetEdbDataByDate(source, edbCode, dateTime)

+ 74 - 0
services/base_from_manual.go

@@ -0,0 +1,74 @@
+package services
+
+import (
+	"errors"
+	"eta/eta_index_lib/models"
+	"eta/eta_index_lib/utils"
+)
+
+func AddEdbDataFromManual(edbCode string) (err error) {
+	// 判断是否调用桥接服务
+	var manualDataList []*models.ManualEdbdata
+	url, _ := GetWindBridgeUrl()
+	if url != "" {
+		manualDataList, err = GetManualEdbDataFromBridgeJy(url, edbCode, "", "")
+		if err != nil {
+			return
+		}
+	} else {
+		var condition string
+		var pars []interface{}
+
+		if edbCode != "" {
+			condition += " AND TRADE_CODE=? "
+			pars = append(pars, edbCode)
+		}
+		manualDataList, err = models.GetEdbdataManualByCondition(condition, pars)
+		if err != nil {
+			return
+		}
+	}
+
+	err = models.AddEdbDataFromManual(edbCode, manualDataList)
+	return
+}
+
+func RefreshEdbDataFromManual(req models.RefreshEdbInfoReq, edbinfo *models.EdbInfo) (err error) {
+	var manualDataList []*models.ManualEdbdata
+	url, _ := GetWindBridgeUrl()
+	if url != "" && edbinfo.ServerUrl == url {
+		manualDataList, err = GetManualEdbDataFromBridgeJy(url, req.EdbCode, "", "")
+		if err != nil {
+			err = errors.New("查询桥接服务手工数据失败,Err:" + err.Error())
+			return
+		}
+	} else {
+		var condition string
+		var pars []interface{}
+
+		if req.EdbCode != "" {
+			condition += " AND TRADE_CODE=? "
+			pars = append(pars, req.EdbCode)
+		}
+
+		if req.StartDate != "" {
+			condition += " AND DT>=? "
+			pars = append(pars, req.StartDate)
+		} else {
+			condition += " AND DT != ? "
+			pars = append(pars, `0000-00-00`)
+		}
+
+		manualDataList, err = models.GetEdbdataManualByCondition(condition, pars)
+		if err != nil {
+			err = errors.New("查询手工数据失败,Err:" + err.Error())
+			return
+		}
+	}
+	err = models.RefreshEdbDataFromManual(req.EdbInfoId, req.EdbCode, req.StartDate, manualDataList)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		err = errors.New("刷新指标信息失败 service RefreshEdbDataFromManual,Err:" + err.Error())
+		return
+	}
+	return
+}

+ 63 - 0
services/base_from_wind.go

@@ -225,3 +225,66 @@ func DeleteEdbCodeInWindUrl(edbCode string) (err error) {
 	err = utils.Rc.Delete(cacheKey)
 	return
 }
+
+func GetEdbDataFromBridge(windUrl string, req models.AddEdbInfoReq, endDate string) (list []*models.EdbDataFromWindSimple, err error, errMsg string) {
+	dataItem, err := GetEdbDataFromBridgeJy(windUrl, req.EdbCode, utils.BASE_START_DATE, endDate)
+	if err != nil {
+		errMsg = "桥接服务里获取指标信息失败 GetEdbDataFromBridgeJy,Err:" + err.Error()
+		err = errors.New("获取指标信息失败!")
+		return
+	}
+	for _, v := range dataItem.IndexData {
+		tmp := new(models.EdbDataFromWindSimple)
+		dataTime, tErr := time.Parse(utils.FormatDate, v.DataTime)
+		if tErr != nil {
+			err = tErr
+		}
+		timestamp := dataTime.UnixNano() / 1e6
+		timeStr := fmt.Sprintf("%d", timestamp)
+		saveVal := utils.SubFloatToString(v.Val, 20)
+
+		tmp.TimestampStr = timeStr
+		tmp.DateTime = v.DataTime
+		tmp.Val = saveVal
+		list = append(list, tmp)
+	}
+	return
+}
+
+// RefreshEdbDataFromWindBridge 桥接服务刷新wind指标数据
+func RefreshEdbDataFromWindBridge(windUrl string, req models.RefreshEdbInfoReq, edbInfo *models.EdbInfo, endDate string) (list []*models.EdbDataFromWindSimple, err error, errMsg string) {
+	dataItem, err := GetEdbDataFromBridgeJy(windUrl, edbInfo.EdbCode, req.StartDate, endDate)
+	if err != nil {
+		errMsg = "获取指标信息失败 GetEdbDataFromWind,Err:" + err.Error()
+		err = errors.New("获取指标信息失败!")
+		return
+	}
+
+	// 忽略掉指标下架的错误, 并更新指标为停止更新
+	if dataItem.Status == -1 {
+		edbInfo.NoUpdate = 1
+		edbInfo.ModifyTime = time.Now().Local()
+		if e := edbInfo.Update([]string{"NoUpdate", "ModifyTime"}); e != nil {
+			errMsg = "更新wind指标停更失败, Err: " + e.Error()
+			err = errors.New("刷新失败")
+			return
+		}
+		return
+	}
+	for _, v := range dataItem.IndexData {
+		tmp := new(models.EdbDataFromWindSimple)
+		dataTime, tErr := time.Parse(utils.FormatDate, v.DataTime)
+		if tErr != nil {
+			err = tErr
+		}
+		timestamp := dataTime.UnixNano() / 1e6
+		timeStr := fmt.Sprintf("%d", timestamp)
+		saveVal := utils.SubFloatToString(v.Val, 20)
+
+		tmp.TimestampStr = timeStr
+		tmp.DateTime = v.DataTime
+		tmp.Val = saveVal
+		list = append(list, tmp)
+	}
+	return
+}

+ 136 - 0
services/base_from_wind_bridge.go

@@ -0,0 +1,136 @@
+package services
+
+import (
+	"encoding/json"
+	"errors"
+	"eta/eta_index_lib/models"
+	"eta/eta_index_lib/services/alarm_msg"
+	"eta/eta_index_lib/utils"
+	"fmt"
+	"github.com/rdlucklib/rdluck_tools/http"
+	"time"
+)
+
+// GetEdbDataFromBridgeJy 从桥接服务里的嘉悦物产数据中心获取数据
+func GetEdbDataFromBridgeJy(windUrl, edbCode, startDate, endDate string) (index *models.EdbDataFromWindBridgeIndex, err error) {
+	if windUrl == `` {
+		windUrl, err = GetWindBridgeUrl()
+		if err != nil {
+			return
+		}
+	}
+	source := "wind"
+	index, err = getEdbDataFromBridgeJy(windUrl, source, edbCode, startDate, endDate)
+	return
+}
+
+// GetWindBridgeUrl 获取桥接服务地址
+func GetWindBridgeUrl() (windUrl string, err error) {
+	defer func() {
+		if err == nil && windUrl == "" {
+			err = errors.New("wind桥接服务器地址为空")
+		}
+	}()
+	// 先配置中获取,如果有指定配置的话,那么取配置中的数据
+	tmpConfig, err := models.GetConfigDetailByCode("wind_from_bridge")
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		err = errors.New("获取配置的wind地址失败,err:" + err.Error())
+		return
+	}
+	err = nil
+	if tmpConfig != nil {
+		windFrom := tmpConfig.ConfigValue
+		tmpConfig, err = models.GetConfigDetailByCode(windFrom)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			err = errors.New("获取配置的wind地址失败,err:" + err.Error())
+			return
+		}
+		windUrl = tmpConfig.ConfigValue
+		return
+	}
+	return
+}
+
+// GetManualBridgeUrl 获取桥接服务地址
+func GetManualBridgeUrl() (manualUrl string, err error) {
+	defer func() {
+		if err == nil && manualUrl == "" {
+			err = errors.New("wind桥接服务器地址为空")
+		}
+	}()
+	// 先配置中获取,如果有指定配置的话,那么取配置中的数据
+	tmpConfig, err := models.GetConfigDetailByCode("manual_from_bridge")
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		err = errors.New("获取配置的wind地址失败,err:" + err.Error())
+		return
+	}
+	err = nil
+	if tmpConfig != nil {
+		windFrom := tmpConfig.ConfigValue
+		tmpConfig, err = models.GetConfigDetailByCode(windFrom)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			err = errors.New("获取配置的wind地址失败,err:" + err.Error())
+			return
+		}
+		manualUrl = tmpConfig.ConfigValue
+		return
+	}
+	return
+}
+
+// GetManualEdbDataFromBridgeJy 从桥接服务里的嘉悦物产数据中心获取数据
+func GetManualEdbDataFromBridgeJy(windUrl, edbCode, startDate, endDate string) (list []*models.ManualEdbdata, err error) {
+	if windUrl == `` {
+		windUrl, err = GetManualBridgeUrl()
+		if err != nil {
+			return
+		}
+	}
+	source := "manual"
+	index, err := getEdbDataFromBridgeJy(windUrl, source, edbCode, startDate, endDate)
+	if err != nil {
+		return
+	}
+	for _, v := range index.IndexData {
+		tmp := new(models.ManualEdbdata)
+		t, _ := time.ParseInLocation(utils.FormatDateTime, v.UpdateTime, time.Local)
+		tmp = &models.ManualEdbdata{
+			TradeCode:  index.IndexCode,
+			Dt:         v.DataTime,
+			Close:      fmt.Sprintf("%f", v.Val),
+			ModifyTime: t,
+		}
+		list = append(list, tmp)
+	}
+	return
+}
+
+// getEdbDataFromBridgeJy 从桥接服务里的嘉悦物产数据中心获取数据
+func getEdbDataFromBridgeJy(url, source, edbCode, startDate, endDate string) (index *models.EdbDataFromWindBridgeIndex, err error) {
+	requestWindUrl := url + `?index_code=%s&start_date=%s&end_date=%s&source=%s`
+	requestWindUrl = fmt.Sprintf(requestWindUrl, edbCode, startDate, endDate, source)
+	utils.FileLog.Info(fmt.Sprintf("windUrl:%s", requestWindUrl))
+	body, err := http.Get(requestWindUrl)
+	fmt.Println("GetEdbDataFromBridgeJy body:")
+	fmt.Println(string(body))
+	utils.FileLog.Info(fmt.Sprint("GetEdbDataFromBridgeJy result:", string(body)))
+
+	if err != nil {
+		return
+	}
+	ret := new(models.EdbDataFromWindBridge)
+	err = json.Unmarshal(body, &ret)
+	if err != nil {
+		err = errors.New("返回值格式错误,json解析失败,Err: " + err.Error())
+		return
+	}
+	//异常的话,需要邮件通知
+	if ret.Code != 200 {
+		errMsg := fmt.Sprintf("	桥接服务 指标数据接口报错,地址:%s, Code: %d, Err: %s", requestWindUrl, ret.Code, ret.Msg)
+		err = errors.New(errMsg)
+		go alarm_msg.SendAlarmMsg(errMsg, 3)
+		return
+	}
+	index = &ret.Data
+	return
+}