Răsfoiți Sursa

test 嘉悦

hsun 1 an în urmă
părinte
comite
4e1d13da0d

+ 11 - 13
controllers/data_manage/edb_info.go

@@ -1554,17 +1554,9 @@ func (this *EdbInfoController) EdbInfoSearch() {
 			}
 		} else {
 			// 代码中没有的来源那么从edb_source中找是否有对应的
-			cond := ` AND edb_source_id = ?`
-			pars := make([]interface{}, 0)
-			pars = append(pars, source)
-			sourceItem, e := data_manage.GetEdbSourceItemByCondition(cond, pars)
-			if e != nil {
-				if e.Error() == utils.ErrNoRow() {
-					br.Msg = "无效指标来源"
-					return
-				}
-				br.Msg = "获取失败"
-				br.ErrMsg = "获取指标来源失败, Err: " + e.Error()
+			sourceItem := data_manage.EdbSourceIdMap[source]
+			if sourceItem == nil {
+				br.Msg = "无效指标来源"
 				return
 			}
 
@@ -1604,7 +1596,8 @@ func (this *EdbInfoController) EdbInfoSearch() {
 				}
 				if addRes.Ret != 200 {
 					br.Msg = "未搜索到该指标, " + addRes.Msg
-					br.ErrMsg = addRes.ErrMsg + ";EdbCode:" + edbCode
+					//br.ErrMsg = addRes.ErrMsg + ";EdbCode:" + edbCode
+					br.Success = true
 					return
 				}
 				isAdd = true
@@ -1614,7 +1607,12 @@ func (this *EdbInfoController) EdbInfoSearch() {
 			if sourceItem.BridgeFlag != "" {
 				bridgeOb := data.InitBridgeOB(sourceItem.BridgeFlag)
 				if bridgeOb != nil {
-					bridgeIndex, e := bridgeOb.GetIndex(data.GetIndexFromBridgeReq{IndexCode: edbCode, Source: sourceItem.EdbSourceId, SourceExtend: sourceItem.SourceExtend})
+					var r data.GetIndexFromBridgeReq
+					r.IndexCode = edbCode
+					r.Source = sourceItem.EdbSourceId
+					r.SourceExtend = sourceItem.SourceExtend
+					r.IndexCodeRequired = sourceItem.EdbCodeRequired
+					bridgeIndex, e := bridgeOb.GetIndex(r)
 					if e != nil {
 						br.Msg = "获取失败"
 						br.ErrMsg = "桥接服务获取指标信息失败, Err: " + e.Error()

+ 4 - 27
models/data_manage/edb_data_base.go

@@ -7,32 +7,6 @@ import (
 	"time"
 )
 
-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 {
@@ -183,7 +157,10 @@ func GetEdbDataTableName(source int) (tableName string) {
 	case utils.DATA_SOURCE_CALCULATE_RJZ: //日均值->75
 		tableName = "edb_data_calculate_rjz"
 	default:
-		tableName = EdbDataTableNameMap[source] // 没有对应的从edb_source中取
+		edbSource := EdbSourceIdMap[source]
+		if edbSource != nil {
+			tableName = edbSource.TableName
+		}
 	}
 	return
 }

+ 19 - 0
models/data_manage/edb_source.go

@@ -1,11 +1,16 @@
 package data_manage
 
 import (
+	"eta/eta_api/utils"
 	"fmt"
 	"github.com/beego/beego/v2/client/orm"
 	"strings"
 )
 
+var (
+	EdbSourceIdMap map[int]*EdbSource // 指标来源
+)
+
 // EdbSource 指标来源表
 type EdbSource struct {
 	EdbSourceId      int    `orm:"column(edb_source_id);pk"`
@@ -17,6 +22,7 @@ type EdbSource struct {
 	FromBridge       int    `description:"是否来源于桥接服务: 0-否; 1-是"`
 	BridgeFlag       string `description:"桥接服务对象标识"`
 	SourceExtend     string `description:"扩展字段做查询用"`
+	EdbCodeRequired  int    `description:"指标编码是否必填: 0-否; 1-是"`
 }
 
 // GetEdbSourceItemsByCondition 获取指标来源列表
@@ -51,3 +57,16 @@ func GetEdbSourceItemByCondition(condition string, pars []interface{}) (item *Ed
 	err = o.Raw(sql, pars).QueryRow(&item)
 	return
 }
+
+// InitEdbSourceVar 初始化时加载指标来源对应信息, 避免循环中查库, 注意edb_source表修改table_name的话需要重启服务
+func InitEdbSourceVar() {
+	EdbSourceIdMap = make(map[int]*EdbSource)
+	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 {
+		EdbSourceIdMap[v.EdbSourceId] = v
+	}
+}

+ 3 - 2
models/data_manage/jiayue_index.go

@@ -44,8 +44,9 @@ type DictIndex struct {
 
 // BridgeJiaYueIndexParams 桥接服务-获取嘉悦指标入参
 type BridgeJiaYueIndexParams struct {
-	IndexCode    string `json:"index_code" form:"index_code" description:"指标编码"`
-	SourceExtend string `json:"source_extend" form:"source_extend" description:"来源"`
+	IndexCode         string `json:"index_code" form:"index_code" description:"指标编码"`
+	SourceExtend      string `json:"source_extend" form:"source_extend" description:"来源"`
+	IndexCodeRequired int    `json:"index_code_required" form:"index_code_required" description:"指标编码是否必填: 0-否; 1-是"`
 }
 
 // BridgeJiaYueIndexDataParams 桥接服务-获取嘉悦指标数据入参

+ 6 - 5
services/data/base_bridge.go

@@ -2,17 +2,18 @@ package data
 
 import "time"
 
-// EdbBridge 桥接数据源接口
+// EdbBridge 桥接数据源接口(算了别用了难用的一批, 不如直接判断商户号来的方便快捷...)
 type EdbBridge interface {
 	GetIndex(GetIndexFromBridgeReq) (BridgeIndexItem, error)
-	GetIndexAndData(GetIndexAndDataFromBridgeReq) (BridgeIndexItem, error)
+	//GetIndexAndData(GetIndexAndDataFromBridgeReq) (BridgeIndexItem, error)
 }
 
 // GetIndexFromBridgeReq 获取指标信息请求体
 type GetIndexFromBridgeReq struct {
-	IndexCode    string `description:"指标编码"`
-	Source       int    `description:"指标来源ID"`
-	SourceExtend string `description:"指标来源(用作查询条件)"`
+	IndexCode         string `description:"指标编码"`
+	Source            int    `description:"指标来源ID"`
+	SourceExtend      string `description:"指标来源(用作查询条件)"`
+	IndexCodeRequired int    `description:"指标编码是否必填: 0-否; 1-是"`
 }
 
 // GetIndexAndDataFromBridgeReq 获取指标数据请求体

+ 8 - 2
services/data/base_edb_lib.go

@@ -67,7 +67,10 @@ func AddEdbData(source int, edbCode string) (resp *models.BaseResponse, err erro
 	case utils.DATA_SOURCE_FUBAO:
 		urlStr = "fubao/add"
 	default:
-		urlStr = data_manage.EdbDataAddMethodMap[source] // 没有对应的从edb_source中取
+		edbSource := data_manage.EdbSourceIdMap[source]
+		if edbSource != nil {
+			urlStr = edbSource.EdbAddMethod
+		}
 	}
 	if urlStr == "" {
 		err = fmt.Errorf("未实现该指标的刷新接口,请联系管理员")
@@ -183,7 +186,10 @@ func RefreshEdbData(edbInfoId, source int, edbCode, startDate string) (resp *mod
 	case utils.DATA_SOURCE_FUBAO:
 		urlStr = "fubao/refresh"
 	default:
-		urlStr = data_manage.EdbDataRefreshMethodMap[source] // 没有对应的从edb_source中取
+		edbSource := data_manage.EdbSourceIdMap[source]
+		if edbSource != nil {
+			urlStr = edbSource.EdbRefreshMethod
+		}
 	}
 	if urlStr == "" {
 		err = fmt.Errorf(fmt.Sprint("source:", source, ";未实现该指标的刷新接口,请联系管理员"))

+ 5 - 3
services/data/edb_info.go

@@ -2572,13 +2572,15 @@ func EdbInfoAdd(source, classifyId int, edbCode, edbName, frequency, unit, start
 
 	sourceName, ok := sourceNameMap[source]
 	if !ok {
-		name := data_manage.EdbSourceNameMap[source]
-		if name == "" {
+		edbSource := data_manage.EdbSourceIdMap[source]
+		if edbSource != nil {
+			sourceName = edbSource.SourceName
+		}
+		if sourceName == "" {
 			errMsg = "指标来源异常"
 			err = errors.New(errMsg)
 			return
 		}
-		sourceName = name
 	}
 	edbInfo.SourceName = sourceName
 

+ 94 - 93
services/data/jiayue_index.go

@@ -26,6 +26,7 @@ func (brg *EdbBridgeJiaYue) GetIndex(req GetIndexFromBridgeReq) (item BridgeInde
 	var params data_manage.BridgeJiaYueIndexParams
 	params.IndexCode = req.IndexCode
 	params.SourceExtend = req.SourceExtend
+	params.IndexCodeRequired = req.IndexCodeRequired
 	indexData, e := GetJiaYueIndexFromBridge(params)
 	if e != nil {
 		err = fmt.Errorf("GetJiaYueIndexDataFromBridge err: %s", e.Error())
@@ -43,36 +44,36 @@ func (brg *EdbBridgeJiaYue) GetIndex(req GetIndexFromBridgeReq) (item BridgeInde
 }
 
 // GetIndexAndData 获取指标和数据
-func (brg *EdbBridgeJiaYue) GetIndexAndData(req GetIndexAndDataFromBridgeReq) (item BridgeIndexItem, err error) {
-	var params data_manage.BridgeJiaYueIndexDataParams
-	params.IndexCode = req.IndexCode
-	params.SourceExtend = req.SourceExtend
-	params.StartDate = req.StartDate
-	params.EndDate = req.EndDate
-	indexData, e := GetJiaYueIndexDataFromBridge(params)
-	if e != nil {
-		err = fmt.Errorf("GetJiaYueIndexDataFromBridge err: %s", e.Error())
-		return
-	}
-	if indexData.Id <= 0 {
-		return
-	}
-	item.Id = indexData.Id
-	item.IndexCode = indexData.IndexCode
-	item.IndexName = indexData.IndexName
-	item.Unit = indexData.Unit
-	item.Frequency = brg.TransFrequency(indexData.Frequency)
-	var dataList []BridgeIndexDataItem
-	for _, v := range indexData.IndexData {
-		dataList = append(dataList, BridgeIndexDataItem{
-			Val:        v.Val,
-			DataTime:   v.DataTime,
-			UpdateTime: v.UpdateTime,
-		})
-	}
-	item.Data = dataList
-	return
-}
+//func (brg *EdbBridgeJiaYue) GetIndexAndData(req GetIndexAndDataFromBridgeReq) (item BridgeIndexItem, err error) {
+//	var params data_manage.BridgeJiaYueIndexDataParams
+//	params.IndexCode = req.IndexCode
+//	params.SourceExtend = req.SourceExtend
+//	params.StartDate = req.StartDate
+//	params.EndDate = req.EndDate
+//	indexData, e := GetJiaYueIndexDataFromBridge(params)
+//	if e != nil {
+//		err = fmt.Errorf("GetJiaYueIndexDataFromBridge err: %s", e.Error())
+//		return
+//	}
+//	if indexData.Id <= 0 {
+//		return
+//	}
+//	item.Id = indexData.Id
+//	item.IndexCode = indexData.IndexCode
+//	item.IndexName = indexData.IndexName
+//	item.Unit = indexData.Unit
+//	item.Frequency = brg.TransFrequency(indexData.Frequency)
+//	var dataList []BridgeIndexDataItem
+//	for _, v := range indexData.IndexData {
+//		dataList = append(dataList, BridgeIndexDataItem{
+//			Val:        v.Val,
+//			DataTime:   v.DataTime,
+//			UpdateTime: v.UpdateTime,
+//		})
+//	}
+//	item.Data = dataList
+//	return
+//}
 
 // TransFrequency 嘉悦指标频度转换
 func (brg *EdbBridgeJiaYue) TransFrequency(origin string) string {
@@ -155,69 +156,69 @@ func GetJiaYueIndexFromBridge(param data_manage.BridgeJiaYueIndexParams) (indexD
 }
 
 // GetJiaYueIndexDataFromBridge 从桥接服务获取指标数据
-func GetJiaYueIndexDataFromBridge(param data_manage.BridgeJiaYueIndexDataParams) (indexData data_manage.BridgeJiaYueIndexAndData, err error) {
-	defer func() {
-		if err != nil {
-			b, _ := json.Marshal(param)
-			tips := fmt.Sprintf("桥接服务-获取嘉悦指标数据, err: %s, params: %s", err.Error(), string(b))
-			go alarm_msg.SendAlarmMsg(tips, 3)
-		}
-	}()
-
-	url := fmt.Sprint(utils.EtaBridgeUrl, BridgeApiJiaYueIndexDataUrl)
-	data, e := json.Marshal(param)
-	if e != nil {
-		err = fmt.Errorf("data json marshal err: %s", e.Error())
-		return
-	}
-	body := ioutil.NopCloser(strings.NewReader(string(data)))
-	client := &http.Client{}
-	req, e := http.NewRequest("POST", url, body)
-	if e != nil {
-		err = fmt.Errorf("http create request err: %s", e.Error())
-		return
-	}
-
-	checkToken := utils.MD5(utils.EtaBridgeAppNameEn + utils.EtaBridgeMd5Key)
-	contentType := "application/json;charset=utf-8"
-	req.Header.Set("Content-Type", contentType)
-	req.Header.Set("Authorization", checkToken)
-	resp, e := client.Do(req)
-	if e != nil {
-		err = fmt.Errorf("http client do err: %s", e.Error())
-		return
-	}
-	defer func() {
-		_ = resp.Body.Close()
-	}()
-	b, e := ioutil.ReadAll(resp.Body)
-	if e != nil {
-		err = fmt.Errorf("resp body read err: %s", e.Error())
-		return
-	}
-	if len(b) == 0 {
-		err = fmt.Errorf("resp body is empty")
-		return
-	}
-	// 生产环境解密
-	if utils.RunMode == "release" {
-		str := string(b)
-		str = strings.Trim(str, `"`)
-		b = utils.DesBase64Decrypt([]byte(str), utils.EtaBridgeDesKey)
-	}
-
-	result := new(data_manage.BridgeJiaYueResultIndexData)
-	if e = json.Unmarshal(b, &result); e != nil {
-		err = fmt.Errorf("result unmarshal err: %s\nresult: %s", e.Error(), string(b))
-		return
-	}
-	if result.Code != 200 {
-		err = fmt.Errorf("result: %s", string(b))
-		return
-	}
-	indexData = result.Data
-	return
-}
+//func GetJiaYueIndexDataFromBridge(param data_manage.BridgeJiaYueIndexDataParams) (indexData data_manage.BridgeJiaYueIndexAndData, err error) {
+//	defer func() {
+//		if err != nil {
+//			b, _ := json.Marshal(param)
+//			tips := fmt.Sprintf("桥接服务-获取嘉悦指标数据, err: %s, params: %s", err.Error(), string(b))
+//			go alarm_msg.SendAlarmMsg(tips, 3)
+//		}
+//	}()
+//
+//	url := fmt.Sprint(utils.EtaBridgeUrl, BridgeApiJiaYueIndexDataUrl)
+//	data, e := json.Marshal(param)
+//	if e != nil {
+//		err = fmt.Errorf("data json marshal err: %s", e.Error())
+//		return
+//	}
+//	body := ioutil.NopCloser(strings.NewReader(string(data)))
+//	client := &http.Client{}
+//	req, e := http.NewRequest("POST", url, body)
+//	if e != nil {
+//		err = fmt.Errorf("http create request err: %s", e.Error())
+//		return
+//	}
+//
+//	checkToken := utils.MD5(utils.EtaBridgeAppNameEn + utils.EtaBridgeMd5Key)
+//	contentType := "application/json;charset=utf-8"
+//	req.Header.Set("Content-Type", contentType)
+//	req.Header.Set("Authorization", checkToken)
+//	resp, e := client.Do(req)
+//	if e != nil {
+//		err = fmt.Errorf("http client do err: %s", e.Error())
+//		return
+//	}
+//	defer func() {
+//		_ = resp.Body.Close()
+//	}()
+//	b, e := ioutil.ReadAll(resp.Body)
+//	if e != nil {
+//		err = fmt.Errorf("resp body read err: %s", e.Error())
+//		return
+//	}
+//	if len(b) == 0 {
+//		err = fmt.Errorf("resp body is empty")
+//		return
+//	}
+//	// 生产环境解密
+//	if utils.RunMode == "release" {
+//		str := string(b)
+//		str = strings.Trim(str, `"`)
+//		b = utils.DesBase64Decrypt([]byte(str), utils.EtaBridgeDesKey)
+//	}
+//
+//	result := new(data_manage.BridgeJiaYueResultIndexData)
+//	if e = json.Unmarshal(b, &result); e != nil {
+//		err = fmt.Errorf("result unmarshal err: %s\nresult: %s", e.Error(), string(b))
+//		return
+//	}
+//	if result.Code != 200 {
+//		err = fmt.Errorf("result: %s", string(b))
+//		return
+//	}
+//	indexData = result.Data
+//	return
+//}
 
 // GetJiaYueFrequencyListFromBridge 获取指标频度列表
 func GetJiaYueFrequencyListFromBridge() (frequencies []string, err error) {