Răsfoiți Sursa

test 嘉悦来源

hsun 1 an în urmă
părinte
comite
1b05d37f53

+ 2 - 1
.gitignore

@@ -7,4 +7,5 @@
 /lastupdate.tmp
 /eta_chart_lib.exe~
 .Ds_Store
-eta_chart_lib
+eta_chart_lib
+*.gz

+ 27 - 1
models/data_manage/edb_data_base.go

@@ -4,6 +4,32 @@ import (
 	"eta/eta_chart_lib/utils"
 )
 
+var (
+	EdbDataTableNameMap     map[int]string // 指标来源对应数据表名
+	EdbDataAddMethodMap     map[int]string // 指标来源对应的新增指标方法
+	EdbDataRefreshMethodMap map[int]string // 指标来源对应的刷新指标方法
+	EdbSourceNameMap        map[int]string // 指标来源名称
+)
+
+// InitEdbSourceVar 初始化时加载指标来源对应信息, 避免循环中查库, 注意edb_source表修改table_name的话需要重启服务
+func InitEdbSourceVar() {
+	EdbDataTableNameMap = make(map[int]string)
+	EdbDataAddMethodMap = make(map[int]string)
+	EdbDataRefreshMethodMap = make(map[int]string)
+	EdbSourceNameMap = make(map[int]string)
+	sources, e := GetEdbSourceItemsByCondition(``, make([]interface{}, 0), []string{}, "")
+	if e != nil {
+		utils.FileLog.Info("init source table err: %s", e.Error())
+		return
+	}
+	for _, v := range sources {
+		EdbDataTableNameMap[v.EdbSourceId] = v.TableName
+		EdbDataAddMethodMap[v.EdbSourceId] = v.EdbAddMethod
+		EdbDataRefreshMethodMap[v.EdbSourceId] = v.EdbRefreshMethod
+		EdbSourceNameMap[v.EdbSourceId] = v.SourceName
+	}
+}
+
 // GetEdbDataTableName 指标数据->存储表
 func GetEdbDataTableName(source int) (tableName string) {
 	switch source {
@@ -154,7 +180,7 @@ func GetEdbDataTableName(source int) (tableName string) {
 	case utils.DATA_SOURCE_CALCULATE_RJZ: //日均值->75
 		tableName = "edb_data_calculate_rjz"
 	default:
-		tableName = ""
+		tableName = EdbDataTableNameMap[source] // 没有对应的从edb_source中取
 	}
 	return
 }

+ 53 - 0
models/data_manage/edb_source.go

@@ -0,0 +1,53 @@
+package data_manage
+
+import (
+	"fmt"
+	"github.com/beego/beego/v2/client/orm"
+	"strings"
+)
+
+// EdbSource 指标来源表
+type EdbSource struct {
+	EdbSourceId      int    `orm:"column(edb_source_id);pk"`
+	SourceName       string `description:"指标来源名称"`
+	TableName        string `description:"数据表名"`
+	EdbAddMethod     string `description:"指标新增接口"`
+	EdbRefreshMethod string `description:"指标刷新接口"`
+	IsBase           int    `description:"是否为基础指标: 0-否; 1-是"`
+	FromBridge       int    `description:"是否来源于桥接服务: 0-否; 1-是"`
+	BridgeFlag       string `description:"桥接服务对象标识"`
+	SourceExtend     string `description:"扩展字段做查询用"`
+}
+
+// GetEdbSourceItemsByCondition 获取指标来源列表
+func GetEdbSourceItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*EdbSource, err error) {
+	o := orm.NewOrmUsingDB("data")
+	fields := strings.Join(fieldArr, ",")
+	if len(fieldArr) == 0 {
+		fields = `*`
+	}
+	order := `ORDER BY edb_source_id ASC`
+	if orderRule != "" {
+		order = ` ORDER BY ` + orderRule
+	}
+	sql := fmt.Sprintf(`SELECT %s FROM edb_source WHERE 1=1 %s %s`, fields, condition, order)
+	_, err = o.Raw(sql, pars).QueryRows(&items)
+	return
+}
+
+// EdbSourceChild 指标来源表
+type EdbSourceChild struct {
+	EdbSourceId int    `orm:"column(edb_source_id);pk"`
+	SourceName  string `description:"指标来源名称"`
+	TableName   string `description:"数据表名"`
+	IsBase      int    `description:"是否为基础指标: 2-否; 1-是"`
+	Child       []EdbSourceChild
+}
+
+// GetEdbSourceItemByCondition 获取指标来源
+func GetEdbSourceItemByCondition(condition string, pars []interface{}) (item *EdbSource, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := fmt.Sprintf(`SELECT * FROM edb_source WHERE 1=1 %s`, condition)
+	err = o.Raw(sql, pars).QueryRow(&item)
+	return
+}

+ 3 - 0
models/db.go

@@ -41,6 +41,9 @@ func init() {
 	)
 	// 期货数据库
 	initFutureGood()
+
+	// 初始化部分数据表变量(直接init会有顺序问题=_=!)
+	data_manage.InitEdbSourceVar()
 }
 
 // initFutureGood 注册期货数据 数据表

+ 2 - 1
models/edb_data_base.go

@@ -1,6 +1,7 @@
 package models
 
 import (
+	"eta/eta_chart_lib/models/data_manage"
 	"eta/eta_chart_lib/utils"
 )
 
@@ -153,7 +154,7 @@ func GetEdbDataTableName(source int) (tableName string) {
 	case utils.DATA_SOURCE_CALCULATE_RJZ: //日均值->75
 		tableName = "edb_data_calculate_rjz"
 	default:
-		tableName = ""
+		tableName = data_manage.EdbDataTableNameMap[source] // 没有对应的从edb_source中取
 	}
 	return
 }

+ 4 - 0
services/data/base_edb_lib.go

@@ -3,6 +3,7 @@ package data
 import (
 	"encoding/json"
 	"eta/eta_chart_lib/models"
+	"eta/eta_chart_lib/models/data_manage"
 	"eta/eta_chart_lib/utils"
 	"fmt"
 	"io/ioutil"
@@ -68,6 +69,7 @@ func AddEdbData(source int, edbCode string) (resp *models.BaseResponse, err erro
 func RefreshEdbData(edbInfoId, source int, edbCode, startDate string) (resp *models.BaseResponse, err error) {
 	param := make(map[string]interface{})
 	param["EdbCode"] = edbCode
+	param["Source"] = source
 	param["EdbInfoId"] = edbInfoId
 	param["StartDate"] = startDate
 	urlStr := ``
@@ -122,6 +124,8 @@ func RefreshEdbData(edbInfoId, source int, edbCode, startDate string) (resp *mod
 		urlStr = "/national_statistics/refresh"
 	case utils.DATA_SOURCE_FUBAO:
 		urlStr = "fubao/refresh"
+	default:
+		urlStr = data_manage.EdbDataRefreshMethodMap[source] // 没有对应的从edb_source中取
 	}
 	if urlStr == "" {
 		err = fmt.Errorf(fmt.Sprint("source:", source, ";未实现该指标的刷新接口,请联系管理员"))