瀏覽代碼

修改指标数据刷新

longyu 3 年之前
父節點
當前提交
e833a1f084
共有 8 個文件被更改,包括 815 次插入259 次删除
  1. 39 0
      models/base.go
  2. 148 0
      services/data/base_edb_lib.go
  3. 591 253
      services/data/edb_info.go
  4. 1 1
      services/data/edb_info_notice.go
  5. 18 2
      services/data/edb_info_sync.go
  6. 2 3
      services/task.go
  7. 10 0
      utils/config.go
  8. 6 0
      utils/constants.go

+ 39 - 0
models/base.go

@@ -0,0 +1,39 @@
+package models
+
+type BaseResponse struct {
+	Ret         int
+	Msg         string
+	ErrMsg      string
+	ErrCode     string
+	Data        interface{}
+	Success     bool `description:"true 执行成功,false 执行失败"`
+	IsSendEmail bool `json:"-" description:"true 发送邮件,false 不发送邮件"`
+	IsAddLog    bool `json:"-" description:"true 新增操作日志,false 不新增操作日志" `
+}
+
+type BaseResponseRef struct {
+	Ret     int
+	Msg     string
+	ErrMsg  string
+	ErrCode string
+	Data    string
+}
+
+type BaseResponseResult struct {
+	Ret     int    `description:"状态:200 成功,408 重新登录,403:为失败"`
+	Msg     string `description:"提示信息,对用户展示"`
+	ErrMsg  string `description:"错误信息,供开发定位问题"`
+	ErrCode string `description:"错误编码,预留"`
+	Data    string `description:"返回数据,json格式字符串"`
+}
+
+func (r *BaseResponse) Init() *BaseResponse {
+	return &BaseResponse{Ret: 403, IsSendEmail: true}
+}
+
+type BaseRequest struct {
+}
+
+func (br *BaseRequest) Init() *BaseRequest {
+	return &BaseRequest{}
+}

+ 148 - 0
services/data/base_edb_lib.go

@@ -0,0 +1,148 @@
+package data
+
+import (
+	"encoding/json"
+	"fmt"
+	"hongze/hongze_task/models"
+	"hongze/hongze_task/utils"
+	"io/ioutil"
+	"net/http"
+	"strings"
+)
+
+//新增指标数据
+func AddEdbData(source int, edbCode string) (resp *models.BaseResponse, err error) {
+	param := make(map[string]interface{})
+	param["EdbCode"] = edbCode
+	urlStr := ``
+	switch source {
+	case utils.DATA_SOURCE_THS:
+		urlStr = "/ths/add"
+	case utils.DATA_SOURCE_WIND:
+		urlStr = "/wind/add"
+	case utils.DATA_SOURCE_PB:
+		urlStr = "/pb/add"
+	case utils.DATA_SOURCE_MANUAL:
+		urlStr = "/manual/add"
+	case utils.DATA_SOURCE_LZ:
+		urlStr = "/lz/add"
+	case utils.DATA_SOURCE_YS:
+		urlStr = "/smm/add"
+	case utils.DATA_SOURCE_GL:
+		urlStr = "/mysteel/add"
+	case utils.DATA_SOURCE_ZZ:
+		urlStr = "/zz/add"
+	case utils.DATA_SOURCE_DL:
+		urlStr = "/dl/add"
+	case utils.DATA_SOURCE_SH:
+		urlStr = "/sh/add"
+	case utils.DATA_SOURCE_CFFEX:
+		urlStr = "/cffex/add"
+	case utils.DATA_SOURCE_SHFE:
+		urlStr = "/shfe/add"
+	case utils.DATA_SOURCE_GIE:
+		urlStr = "/gie/add"
+	case utils.DATA_SOURCE_LT:
+		urlStr = "/lt/add"
+	default:
+	}
+	if urlStr == "" {
+		err = fmt.Errorf("未实现该指标的刷新接口,请联系管理员")
+		return
+	}
+	resp, err = postRefreshEdbData(param, urlStr)
+	return
+}
+
+// RefreshEdbData 刷新指标数据
+func RefreshEdbData(edbInfoId, source int, edbCode, startDate string) (resp *models.BaseResponse, err error) {
+	param := make(map[string]interface{})
+	param["EdbCode"] = edbCode
+	param["EdbInfoId"] = edbInfoId
+	param["StartDate"] = startDate
+	urlStr := ``
+	switch source {
+	case utils.DATA_SOURCE_THS:
+		urlStr = "/ths/refresh"
+	case utils.DATA_SOURCE_WIND:
+		urlStr = "/wind/refresh"
+	case utils.DATA_SOURCE_PB:
+		urlStr = "/pb/refresh"
+	case utils.DATA_SOURCE_MANUAL:
+		urlStr = "/manual/refresh"
+	case utils.DATA_SOURCE_LZ:
+		urlStr = "/lz/refresh"
+	case utils.DATA_SOURCE_YS:
+		urlStr = "/smm/refresh"
+	case utils.DATA_SOURCE_GL:
+		urlStr = "/mysteel/refresh"
+	case utils.DATA_SOURCE_ZZ:
+		urlStr = "/zz/refresh"
+	case utils.DATA_SOURCE_DL:
+		urlStr = "/dl/refresh"
+	case utils.DATA_SOURCE_SH:
+		urlStr = "/sh/refresh"
+	case utils.DATA_SOURCE_CFFEX:
+		urlStr = "/cffex/refresh"
+	case utils.DATA_SOURCE_SHFE:
+		urlStr = "/shfe/refresh"
+	case utils.DATA_SOURCE_GIE:
+		urlStr = "/gie/refresh"
+	case utils.DATA_SOURCE_LT:
+		urlStr = "/lt/refresh"
+	}
+	if urlStr == "" {
+		err = fmt.Errorf(fmt.Sprint("source:", source, ";未实现该指标的刷新接口,请联系管理员"))
+		return
+	}
+	resp, err = postRefreshEdbData(param, urlStr)
+	return
+}
+
+// RefreshEdbCalculateData 刷新计算指标数据请求
+func RefreshEdbCalculateData(edbInfoId int, edbCode, startDate string) (resp *models.BaseResponse, err error) {
+	param := make(map[string]interface{})
+	param["EdbCode"] = edbCode
+	param["EdbInfoId"] = edbInfoId
+	param["StartDate"] = startDate
+	resp, err = postRefreshEdbData(param, "/calculate/refresh")
+	return
+}
+
+// postRefreshEdbData 刷新指标数据
+func postRefreshEdbData(param map[string]interface{}, urlStr string) (resp *models.BaseResponse, err error) {
+	postUrl := utils.EDB_LIB_URL + urlStr
+	postData, err := json.Marshal(param)
+	if err != nil {
+		return
+	}
+	result, err := HttpPost(postUrl, string(postData), "application/json")
+	if err != nil {
+		return
+	}
+	err = json.Unmarshal(result, &resp)
+	if err != nil {
+		return
+	}
+	return resp, nil
+}
+
+func HttpPost(url, postData string, params ...string) ([]byte, error) {
+	body := ioutil.NopCloser(strings.NewReader(postData))
+	client := &http.Client{}
+	req, err := http.NewRequest("POST", url, body)
+	if err != nil {
+		return nil, err
+	}
+	contentType := "application/x-www-form-urlencoded;charset=utf-8"
+	if len(params) > 0 && params[0] != "" {
+		contentType = params[0]
+	}
+	req.Header.Set("Content-Type", contentType)
+	req.Header.Set("authorization", utils.MD5(utils.APP_EDB_LIB_NAME_EN+utils.EDB_LIB_Md5_KEY))
+	resp, err := client.Do(req)
+	defer resp.Body.Close()
+	b, err := ioutil.ReadAll(resp.Body)
+	fmt.Println("HttpPost:" + string(b))
+	return b, err
+}

文件差異過大導致無法顯示
+ 591 - 253
services/data/edb_info.go


+ 1 - 1
services/data/edb_info_notice.go

@@ -125,7 +125,7 @@ func RefreshNotice() (err error) {
 	allTable += ` </tbody></table></div>`
 	noticeSendBody += allDiv + allTable
 
-	utils.SendEmailByHongze("指标更新情况通知", noticeSendBody, utils.RefreshEdbInfoEmailSendToUsers, "", "")
+	go utils.SendEmailByHongze("指标更新情况通知", noticeSendBody, utils.RefreshEdbInfoEmailSendToUsers, "", "")
 	//utils.SendEmailByHongze("指标更新情况通知", noticeSendBody, "317699326@qq.com", "", "")
 	return
 }

+ 18 - 2
services/data/edb_info_sync.go

@@ -3,10 +3,14 @@ package data
 import (
 	"hongze/hongze_task/models/data_manage"
 	"hongze/hongze_task/utils"
+	"sync"
 )
 
+var lock sync.Mutex
+
 //同步钢炼数据
 func SyncGlDataBase() {
+	lock.Lock()
 	var err error
 	defer func() {
 		if err != nil {
@@ -38,14 +42,18 @@ func SyncGlDataBase() {
 			}
 		}
 	}
+	lock.Unlock()
 }
 
+var lzLock sync.Mutex
 //同步隆重数据
 func SyncLzDataBase() {
+	lzLock.Lock()
 	var err error
 	defer func() {
 		if err != nil {
 			utils.FileLog.Info("SyncLzDataBase Err:" + err.Error())
+			go utils.SendEmailByHongze("同步隆众数据失败","同步隆众数据失败 Err:"+err.Error() , utils.RefreshEdbInfoEmailSendToUsers, "", "")
 		}
 	}()
 	var condition string
@@ -72,14 +80,18 @@ func SyncLzDataBase() {
 			}
 		}
 	}
+	lzLock.Unlock()
 }
 
+var smmLock sync.Mutex
 //同步有色数据
 func SyncSmmDataBase() {
+	smmLock.Lock()
 	var err error
 	defer func() {
 		if err != nil {
 			utils.FileLog.Info("SyncSmmDataBase Err:" + err.Error())
+			go utils.SendEmailByHongze("同步有色数据失败","同步隆众数据失败 Err:"+err.Error() , utils.RefreshEdbInfoEmailSendToUsers, "", "")
 		}
 	}()
 	var condition string
@@ -107,15 +119,18 @@ func SyncSmmDataBase() {
 			}
 		}
 	}
+	smmLock.Unlock()
 }
 
-
+var manualLock sync.Mutex
 //同步手工数据
 func SyncManualDataBase() {
 	var err error
+	manualLock.Lock()
 	defer func() {
 		if err != nil {
 			utils.FileLog.Info("SyncLzDataBase Err:" + err.Error())
+			go utils.SendEmailByHongze("同步手工数据失败","同步手工数据失败 Err:"+err.Error() , utils.RefreshEdbInfoEmailSendToUsers, "", "")
 		}
 	}()
 	var condition string
@@ -144,4 +159,5 @@ func SyncManualDataBase() {
 			}
 		}
 	}
-}
+	manualLock.Unlock()
+}

+ 2 - 3
services/task.go

@@ -179,7 +179,6 @@ func OneMinute(cont context.Context) (err error) {
 func RefreshData(cont context.Context) (err error) {
 	wg := sync.WaitGroup{}
 	wg.Add(8)
-	//wind
 	go data.RefreshDataFromWind(&wg)
 	//同花顺
 	go data.RefreshDataFromThs(&wg)
@@ -197,11 +196,11 @@ func RefreshData(cont context.Context) (err error) {
 	go data.RefreshDataFromLt(&wg)
 
 	wg.Wait()
-	//计算指标
+	////计算指标
 	data.RefreshDataFromCalculateAll()
-
 	time.Sleep(2 * time.Second)
 	data.RefreshNotice()
+	fmt.Println("Refresh End")
 	return
 }
 

+ 10 - 0
utils/config.go

@@ -50,6 +50,11 @@ var (
 	THS_PubKey         string //同花顺公钥
 )
 
+// 经济数据库
+var (
+	EDB_LIB_URL string
+)
+
 func init() {
 	tmpRunMode, err := web.AppConfig.String("run_mode")
 	if err != nil {
@@ -101,6 +106,9 @@ ZwIDAQAB
 		THS_SyncWxGroupUrl = `https://board.10jqka.com.cn/gateway/ps/syncWechatGroupInfo`
 		//同花顺,万得接口服务地址(阿里云windows服务器地址;内网地址)
 		Hz_Server_Data_Url = "http://172.19.173.231:7000/"
+
+		EDB_LIB_URL = "http://172.19.173.232:8300/edbapi/"
+		//EDB_LIB_URL = "http://47.102.213.75:8300/edbapi/"
 	} else {
 		CompanyId = 16
 		RealName = "超级管理员"
@@ -116,6 +124,8 @@ ZwIDAQAB
 		THS_SyncWxGroupUrl = `https://mtest.10jqka.com.cn/gateway/ps/syncWechatGroupInfo`
 		//同花顺,万得接口服务地址(阿里云windows服务器地址;外网地址)
 		Hz_Server_Data_Url = "http://139.196.136.213:7000/"
+
+		EDB_LIB_URL = "http://8.136.199.33:8300/edbapi/"
 	}
 }
 

+ 6 - 0
utils/constants.go

@@ -107,3 +107,9 @@ const (
 var (
 	Hz_Server_Data_Url string //同花顺,万得接口服务地址(阿里云windows服务器地址)
 )
+
+//EDB_LIB
+var (
+	APP_EDB_LIB_NAME_EN = "hongze_edb_lib"
+	EDB_LIB_Md5_KEY     = "GuRaB6dY1bXOJcwG"
+)

部分文件因文件數量過多而無法顯示