|
@@ -3,42 +3,52 @@ package config
|
|
import (
|
|
import (
|
|
"cicv-data-closedloop/common/config/c_log"
|
|
"cicv-data-closedloop/common/config/c_log"
|
|
"cicv-data-closedloop/common/util"
|
|
"cicv-data-closedloop/common/util"
|
|
|
|
+ "crypto/md5"
|
|
|
|
+ "encoding/hex"
|
|
"encoding/json"
|
|
"encoding/json"
|
|
|
|
+ "fmt"
|
|
|
|
+ "sort"
|
|
"strings"
|
|
"strings"
|
|
"time"
|
|
"time"
|
|
)
|
|
)
|
|
|
|
|
|
type taskTrigger struct {
|
|
type taskTrigger struct {
|
|
- TriggerId int `json:"triggerId"`
|
|
+ TriggerId int `json:"triggerId"`
|
|
- TriggerName string `json:"triggerName"`
|
|
+ TriggerName string `json:"triggerName"`
|
|
- TriggerScriptPath string `json:"triggerScriptPath"`
|
|
+ TriggerScriptPath string `json:"triggerScriptPath"`
|
|
- TriggerType string `json:"triggerType"`
|
|
+ ListenTopic string `json:"listenTopic"`
|
|
|
|
+ CollectionTopic string `json:"collectionTopic"`
|
|
|
|
+ CollectionPreSeconds string `json:"collectionPreSeconds"`
|
|
|
|
+ CollectionAfterSeconds string `json:"collectionAfterSeconds"`
|
|
|
|
+ Priority string `json:"priority"`
|
|
}
|
|
}
|
|
|
|
|
|
type PlatformConfigStruct struct {
|
|
type PlatformConfigStruct struct {
|
|
- TaskConfigId string `json:"taskConfigId"`
|
|
+ TaskConfigId string `json:"taskConfigId"`
|
|
- TaskConfigName string `json:"taskConfigName"`
|
|
+ TaskConfigName string `json:"taskConfigName"`
|
|
- DropUploadData bool `json:"dropUploadData"`
|
|
+ TaskType string `json:"taskType"`
|
|
- TaskMaxTime int `json:"taskMaxTime"`
|
|
+ StartTime string `json:"startTime"`
|
|
- TaskBeforeTime int `json:"taskBeforeTime"`
|
|
+ EndTime string `json:"endTime"`
|
|
- TaskAfterTime int `json:"taskAfterTime"`
|
|
+ DailyStartTime string `json:"dailyStartTime"`
|
|
- TaskCachePolicy string `json:"taskCachePolicy"`
|
|
+ DailyEndTime string `json:"dailyEndTime"`
|
|
- EquipmentTopic string `json:"equipmentTopic"`
|
|
+ CollectionStrategy int `json:"collectionStrategy"`
|
|
- Lru []string `json:"LRU"`
|
|
+ UploadStrategy int `json:"uploadStrategy"`
|
|
- TaskTriggers []taskTrigger `json:"taskTriggers"`
|
|
+ CompressionType int `json:"compressionType"`
|
|
|
|
+ TaskTriggers []taskTrigger `json:"taskTriggers"`
|
|
}
|
|
}
|
|
|
|
|
|
type response struct {
|
|
type response struct {
|
|
- Data PlatformConfigStruct `json:"data"`
|
|
+ Data []PlatformConfigStruct `json:"data"`
|
|
- Success bool `json:"success"`
|
|
+ Success bool `json:"success"`
|
|
- Message string `json:"message"`
|
|
+ Message string `json:"message"`
|
|
- Code int `json:"code"`
|
|
+ Code int `json:"code"`
|
|
- NowTime string `json:"nowTime"`
|
|
+ NowTime string `json:"nowTime"`
|
|
}
|
|
}
|
|
|
|
|
|
var (
|
|
var (
|
|
- PlatformConfig PlatformConfigStruct
|
|
+ PlatformConfig PlatformConfigStruct
|
|
- RecordTopics []string
|
|
+ PlatformConfig1 []PlatformConfigStruct
|
|
|
|
+ RecordTopics []string
|
|
)
|
|
)
|
|
|
|
|
|
|
|
|
|
@@ -51,21 +61,21 @@ func InitPlatformConfig() {
|
|
|
|
|
|
for {
|
|
for {
|
|
time.Sleep(time.Duration(2) * time.Second)
|
|
time.Sleep(time.Duration(2) * time.Second)
|
|
- PlatformConfig, err = getConfig()
|
|
+ PlatformConfig1, err = GetConfig()
|
|
if err != nil {
|
|
if err != nil {
|
|
c_log.GlobalLogger.Error("获取配置status失败:", err)
|
|
c_log.GlobalLogger.Error("获取配置status失败:", err)
|
|
continue
|
|
continue
|
|
}
|
|
}
|
|
- if checkPlatformConfig() {
|
|
+
|
|
- RecordTopics = strings.Split(PlatformConfig.EquipmentTopic, ",")
|
|
+
|
|
-
|
|
+
|
|
- for i, topic := range RecordTopics {
|
|
+
|
|
- RecordTopics[i] = strings.TrimSpace(topic)
|
|
+
|
|
- }
|
|
+
|
|
- break
|
|
+
|
|
- }
|
|
+
|
|
- }
|
|
+ }
|
|
- c_log.GlobalLogger.Infof("获取数据闭环平台配置 - 成功。【触发前】=【%v 秒】,触发后=【%v 秒】,【最大窗口】=【%v 秒】。", PlatformConfig.TaskBeforeTime, PlatformConfig.TaskAfterTime, PlatformConfig.TaskMaxTime)
|
|
+
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -155,32 +165,39 @@ func GetStatus(taskConfigId string) (string, error) {
|
|
return dataMap["status"].(string), nil
|
|
return dataMap["status"].(string), nil
|
|
}
|
|
}
|
|
|
|
|
|
-func getConfig() (PlatformConfigStruct, error) {
|
|
+func GetConfig() ([]PlatformConfigStruct, error) {
|
|
- token, err := GetAccessToken()
|
|
+ queryParams := map[string]string{
|
|
- if err != nil {
|
|
+ "equipmentNo": LocalConfig.SecretKey,
|
|
- return PlatformConfigStruct{}, err
|
|
+ }
|
|
- }
|
|
+
|
|
-
|
|
+ sign := GenerateSign(CloudConfig.Platform.Ak, CloudConfig.Platform.Sk, queryParams)
|
|
-
|
|
+ fmt.Println("sign:", sign)
|
|
|
|
+ if sign == "" {
|
|
|
|
+ return []PlatformConfigStruct{}, fmt.Errorf("生成签名失败。")
|
|
|
|
+ }
|
|
|
|
+ headers := map[string]string{
|
|
|
|
+ "ak": CloudConfig.Platform.Ak,
|
|
|
|
+ "timestamp": fmt.Sprintf("%d", time.Now().Unix()),
|
|
|
|
+ "sign": sign,
|
|
|
|
+ }
|
|
|
|
+
|
|
resp, err := util.HttpGetStringAddHeadersResponseString(
|
|
resp, err := util.HttpGetStringAddHeadersResponseString(
|
|
CloudConfig.Platform.UrlTask,
|
|
CloudConfig.Platform.UrlTask,
|
|
- map[string]string{
|
|
+ headers,
|
|
- "authorization": token,
|
|
+ queryParams,
|
|
- },
|
|
|
|
- map[string]string{
|
|
|
|
- "equipmentNo": LocalConfig.EquipmentNo,
|
|
|
|
- },
|
|
|
|
)
|
|
)
|
|
if err != nil {
|
|
if err != nil {
|
|
c_log.GlobalLogger.Error("访问接口", CloudConfig.Platform.UrlTask, "失败:", err)
|
|
c_log.GlobalLogger.Error("访问接口", CloudConfig.Platform.UrlTask, "失败:", err)
|
|
- return PlatformConfigStruct{}, err
|
|
+ return []PlatformConfigStruct{}, err
|
|
}
|
|
}
|
|
var result response
|
|
var result response
|
|
err = json.Unmarshal([]byte(resp), &result)
|
|
err = json.Unmarshal([]byte(resp), &result)
|
|
|
|
+ fmt.Println("result", result)
|
|
if err != nil {
|
|
if err != nil {
|
|
c_log.GlobalLogger.Error("解析【返回结果】", resp, "失败:", err)
|
|
c_log.GlobalLogger.Error("解析【返回结果】", resp, "失败:", err)
|
|
- return PlatformConfigStruct{}, err
|
|
+ return []PlatformConfigStruct{}, err
|
|
}
|
|
}
|
|
|
|
+
|
|
return result.Data, nil
|
|
return result.Data, nil
|
|
}
|
|
}
|
|
|
|
|
|
@@ -189,9 +206,37 @@ func checkPlatformConfig() bool {
|
|
c_log.GlobalLogger.Error("数据闭环平台没有配置任务。")
|
|
c_log.GlobalLogger.Error("数据闭环平台没有配置任务。")
|
|
return false
|
|
return false
|
|
}
|
|
}
|
|
- if PlatformConfig.EquipmentTopic == "" {
|
|
+
|
|
- c_log.GlobalLogger.Error("数据闭环平台没有配置topic序列。")
|
|
+
|
|
- return false
|
|
+
|
|
- }
|
|
+
|
|
return true
|
|
return true
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+func GenerateSign(ak, sk string, params map[string]string) string {
|
|
|
|
+
|
|
|
|
+ params["timestamp"] = fmt.Sprintf("%d", time.Now().Unix())
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ keys := make([]string, 0, len(params))
|
|
|
|
+ for k := range params {
|
|
|
|
+ keys = append(keys, k)
|
|
|
|
+ }
|
|
|
|
+ sort.Strings(keys)
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ var buffer strings.Builder
|
|
|
|
+ for _, k := range keys {
|
|
|
|
+ buffer.WriteString(k)
|
|
|
|
+ buffer.WriteByte('=')
|
|
|
|
+ buffer.WriteString(params[k])
|
|
|
|
+ buffer.WriteByte('&')
|
|
|
|
+ }
|
|
|
|
+ paramStr := buffer.String()[:len(buffer.String())-1]
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ signStr := paramStr + sk
|
|
|
|
+ hash := md5.Sum([]byte(signStr))
|
|
|
|
+ return hex.EncodeToString(hash[:])
|
|
|
|
+}
|