Browse Source

Merge branch 'chart/12.4' into debug

Roc 2 years ago
parent
commit
1866e3bbbb

+ 129 - 0
models/data_manage/future_good/future_good_edb_info.go

@@ -0,0 +1,129 @@
+package future_good
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
+
+// FutureGoodEdbInfo 期货指标表
+type FutureGoodEdbInfo struct {
+	FutureGoodEdbInfoId int       `orm:"column(future_good_edb_info_id);pk"`
+	FutureGoodEdbCode   string    `description:"期货指标code"`
+	FutureGoodEdbName   string    `description:"期货指标名称"`
+	FutureGoodEdbNameEn string    `description:"期货指标英文名称"`
+	ParentId            int       `description:"上级期货id"`
+	Exchange            string    `description:"所属交易所"`
+	Month               int       `description:"所属月份"`
+	StartDate           string    `description:"起始日期"`
+	EndDate             time.Time    `description:"终止日期"`
+	MinValue            float64   `description:"最小值"`
+	MaxValue            float64   `description:"最大值"`
+	LatestValue         float64   `description:"数据最新的值"`
+	LatestDate          time.Time `description:"数据最新的日期"`
+	ServerUrl           string    `description:"服务器地址"`
+	CreateTime          time.Time
+	ModifyTime          time.Time
+}
+
+// GetFutureGoodEdbInfo 期货指标
+func GetFutureGoodEdbInfo(edbInfoId int) (item *FutureGoodEdbInfo, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT * FROM future_good_edb_info WHERE future_good_edb_info_id = ? `
+	sql += ` ORDER BY future_good_edb_info_id DESC `
+	err = o.Raw(sql, edbInfoId).QueryRow(&item)
+	return
+}
+
+// GetFutureGoodEdbInfoList 获取指标数据列表
+func GetFutureGoodEdbInfoList(condition string, pars []interface{}) (list []*FutureGoodEdbInfo, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT * FROM future_good_edb_info WHERE 1=1 `
+	if condition != "" {
+		sql += condition
+	}
+	sql += ` ORDER BY future_good_edb_info_id DESC `
+	_, err = o.Raw(sql, pars).QueryRows(&list)
+	return
+}
+
+// GetAllFutureGoodEdbInfoList 获取指标数据列表
+func GetAllFutureGoodEdbInfoList() (list []*FutureGoodEdbInfo, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT * FROM future_good_edb_info  ORDER BY future_good_edb_info_id DESC `
+	_, err = o.Raw(sql).QueryRows(&list)
+	return
+}
+
+// GetFutureGoodEdbInfoListByParentId 根据父级ID获取指标数据列表
+func GetFutureGoodEdbInfoListByParentId(parentId int) (list []*FutureGoodEdbInfo, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT * FROM future_good_edb_info WHERE parent_id = ?  ORDER BY future_good_edb_info_id ASC `
+	_, err = o.Raw(sql, parentId).QueryRows(&list)
+	return
+}
+
+// AddFutureGoodEdbInfo 添加期货数据库指标
+func AddFutureGoodEdbInfo(item *FutureGoodEdbInfo) (err error) {
+	o := orm.NewOrmUsingDB("data")
+	lastId, err := o.Insert(item)
+	if err != nil {
+		return
+	}
+	item.FutureGoodEdbInfoId = int(lastId)
+	return
+}
+
+// Update 更新指标基础信息
+func (FutureGoodEdbInfo *FutureGoodEdbInfo) Update(cols []string) (err error) {
+	o := orm.NewOrmUsingDB("data")
+	_, err = o.Update(FutureGoodEdbInfo, cols...)
+	return
+}
+
+// FutureGoodEdbInfoGroupListResp 期货指标数据列表数据返回
+type FutureGoodEdbInfoGroupListResp struct {
+	FutureGoodEdbInfoId   int
+	FutureGoodEdbInfoName string
+	Child                 []FutureGoodEdbInfoGroupListResp
+}
+
+// GetFutureGoodEdbInfoGroupList 获取分組指标数据列表
+func GetFutureGoodEdbInfoGroupList(condition string, pars []interface{}) (list []*FutureGoodEdbInfo, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT * FROM future_good_edb_info WHERE 1=1 `
+	if condition != "" {
+		sql += condition
+	}
+	sql += ` ORDER BY future_good_edb_info_id DESC `
+	_, err = o.Raw(sql, pars).QueryRows(&list)
+	return
+}
+
+// BarChartInfoReq 柱方图预览请求数据
+type BarChartInfoReq struct {
+	EdbInfoIdList []BarChartInfoEdbItemReq `description:"指标信息"`
+	DateList      []BarChartInfoDateReq    `description:"日期配置"`
+	Sort          BarChartInfoSortReq      `description:"排序"`
+}
+
+// BarChartInfoEdbItemReq 柱方图预览请求数据(指标相关)
+type BarChartInfoEdbItemReq struct {
+	EdbInfoId int    `description:"指标ID"`
+	Name      string `description:"别名"`
+	Source    int    `description:"1:ETA图库;2:商品价格"`
+}
+
+// BarChartInfoDateReq 柱方图预览请求数据(日期相关)
+type BarChartInfoDateReq struct {
+	Type  int    `description:"配置类型"`
+	Date  string `description:"固定日期"`
+	Value int    `description:"N天的值"`
+	Color string `description:"颜色"`
+	Name  string `description:"别名"`
+}
+
+// BarChartInfoSortReq 柱方图预览请求数据(排序相关)
+type BarChartInfoSortReq struct {
+	Sort      int `description:"排序类型,0:默认,1:升序,2:降序"`
+	DateIndex int `description:"日期数据的下标,从0开始"`
+}

+ 12 - 0
models/db.go

@@ -5,6 +5,7 @@ import (
 	"hongze/hongze_task/models/company_approval"
 	"hongze/hongze_task/models/company_contract"
 	"hongze/hongze_task/models/data_manage"
+	"hongze/hongze_task/models/data_manage/future_good"
 	"hongze/hongze_task/models/roadshow"
 	"hongze/hongze_task/models/yb"
 	"hongze/hongze_task/utils"
@@ -80,6 +81,9 @@ func init() {
 
 	// 注册查研观向 数据表
 	initCygx()
+
+	// 注册商品期货 相关数据表
+	initFutureGoodEdbDataTable()
 }
 
 // initCompany 注册客户信息 数据表
@@ -169,3 +173,11 @@ func initCygx() {
 		new(data_manage.CygxArticleType),
 	)
 }
+
+// initFutureGoodEdbDataTable 注册商品期货Edb指标 数据表
+func initFutureGoodEdbDataTable() {
+	//注册对象
+	orm.RegisterModel(
+		new(future_good.FutureGoodEdbInfo),
+	)
+}

+ 71 - 0
services/data/future_good/base_future_good_lib.go

@@ -0,0 +1,71 @@
+package future_good
+
+import (
+	"encoding/json"
+	"fmt"
+	"hongze/hongze_task/models"
+	"hongze/hongze_task/utils"
+	"io/ioutil"
+	"net/http"
+	"strings"
+)
+
+
+// AddEdbData 添加指标数据
+func AddEdbData(futureGoodEdbCode string) (resp *models.BaseResponse, err error) {
+	param := make(map[string]interface{})
+	param["EdbCode"] = futureGoodEdbCode
+	urlStr := `future_good/add`
+	resp, err = postRefreshEdbData(param, urlStr)
+	return
+}
+
+// RefreshEdbData 刷新指标数据
+func RefreshEdbData(futureGoodEdbInfoId int, futureGoodEdbCode, startDate string) (resp *models.BaseResponse, err error) {
+	param := make(map[string]interface{})
+	param["FutureGoodEdbCode"] = futureGoodEdbCode
+	param["FutureGoodEdbInfoId"] = futureGoodEdbInfoId
+	param["StartDate"] = startDate
+	urlStr := `future_good/refresh`
+	resp, err = postRefreshEdbData(param, urlStr)
+	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
+	}
+	utils.FileLog.Info("postRefreshEdbData:" + postUrl + ";" + string(postData) + ";result:" + string(result))
+	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
+}

+ 49 - 0
services/data/future_good/future_good_edb_info.go

@@ -0,0 +1,49 @@
+package future_good
+
+import (
+	"errors"
+	"fmt"
+	"hongze/hongze_task/models/data_manage/future_good"
+	"hongze/hongze_task/services/alarm_msg"
+	"hongze/hongze_task/utils"
+)
+
+// RefreshFutureGoodDataFromThs 刷新同花顺的商品期货数据
+func RefreshFutureGoodDataFromThs() (err error) {
+	defer func() {
+		if err != nil {
+			fmt.Println("RefreshDataFromThs Err:" + err.Error())
+			//go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "RefreshDataFromThs ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+			go alarm_msg.SendAlarmMsg("RefreshDataFromThs ErrMsg:"+err.Error(), 3)
+		}
+	}()
+	var condition string
+	var pars []interface{}
+	condition += " AND parent_id=? "
+	pars = append(pars, utils.DATA_SOURCE_THS)
+
+	list, err := future_good.GetFutureGoodEdbInfoList(condition, pars)
+	if err != nil {
+		err = errors.New("GetEdbInfoByCondition:" + err.Error())
+		return
+	}
+
+	for _, v := range list {
+		startDate := ""
+
+		// 如果指标结束日期不是空的话,那么就按照刷配置的刷新周期进行兼容性的刷新吧
+		if !v.EndDate.IsZero(){
+			startDate = v.EndDate.AddDate(0, 0, -utils.DATA_REFRESH).Format(utils.FormatDate)
+		}
+
+		resp, err := RefreshEdbData(v.FutureGoodEdbInfoId, v.FutureGoodEdbCode, startDate)
+		if err != nil {
+			return errors.New("RefreshEdbData Err:" + err.Error())
+		}
+		if resp.Ret != 200 {
+			return errors.New("RefreshEdbData Err:" + resp.Msg + ";ErrMsg:" + resp.ErrMsg)
+		}
+
+	}
+	return err
+}

+ 7 - 0
services/task.go

@@ -9,6 +9,7 @@ import (
 	"hongze/hongze_task/services/company"
 	"hongze/hongze_task/services/company_contract"
 	"hongze/hongze_task/services/data"
+	"hongze/hongze_task/services/data/future_good"
 	"hongze/hongze_task/services/roadshow"
 	"hongze/hongze_task/utils"
 	"strconv"
@@ -278,6 +279,12 @@ func RefreshData(cont context.Context) (err error) {
 	data.RefreshPredictDataFromCalculateAll()
 	time.Sleep(5 * time.Second)
 	data.RefreshNotice()
+
+	// 刷新商品期货数据
+	{
+		future_good.RefreshFutureGoodDataFromThs()
+	}
+
 	fmt.Println("Refresh End")
 	return
 }