123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 |
- 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
- if windFrom != "" {
- tmpConfig, err = models.GetConfigDetailByCode(windFrom)
- if err != nil && err.Error() != utils.ErrNoRow() {
- err = errors.New("获取配置的wind地址失败,err:" + err.Error())
- return
- }
- if err == nil {
- windUrl = tmpConfig.ConfigValue
- }
- err = nil
- }
- return
- }
- return
- }
- // GetWindBridgeJYUrl 获取嘉悦桥接服务地址
- func GetWindBridgeJYUrl() (windUrl string, err error) {
- defer func() {
- if err == nil && windUrl == "" {
- err = errors.New("wind桥接服务器地址为空")
- }
- }()
- // 先配置中获取,如果有指定配置的话,那么取配置中的数据
- tmpConfig, err := models.GetConfigDetailByCode("wind_from_bridge_jy")
- if err != nil && err.Error() != utils.ErrNoRow() {
- err = errors.New("获取配置的wind地址失败,err:" + err.Error())
- return
- }
- err = nil
- if tmpConfig != nil {
- windUrl = tmpConfig.ConfigValue
- }
- return
- }
- // GetManualBridgeJYUrl 获取嘉悦桥接服务地址
- func GetManualBridgeJYUrl() (windUrl string, err error) {
- defer func() {
- if err == nil && windUrl == "" {
- err = errors.New("wind桥接服务器地址为空")
- }
- }()
- // 先配置中获取,如果有指定配置的话,那么取配置中的数据
- tmpConfig, err := models.GetConfigDetailByCode("manual_from_bridge_jy")
- if err != nil && err.Error() != utils.ErrNoRow() {
- err = errors.New("获取配置的wind地址失败,err:" + err.Error())
- return
- }
- err = nil
- if tmpConfig != nil {
- windUrl = tmpConfig.ConfigValue
- }
- 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
- }
|