liuxiulin 6 jam lalu
induk
melakukan
76f4c53d1b

+ 2 - 4
services/scene-service/internal/service/manager/device_status.go

@@ -130,10 +130,8 @@ func (d *DeviceSceneService) monitorTask(config DeviceSceneConfig) {
 			if err = taskExecutor.Do(config.SceneId); err != nil {
 				server.Log.Errorf("device_status do taskid :%s error:%s", config.SceneId, err.Error())
 			}
-			err = taskExecutor.saveHis(config.SceneId, result.ConditionId)
-			if err != nil {
-				server.Log.Errorf("device_status save taskid :%s error:%s", config.SceneId, err.Error())
-			}
+			_ = taskExecutor.saveHis(config.SceneId, result.ConditionId)
+
 		case <-config.stopChan: // 收到停止信号
 			config.ticker.Stop()
 			return

+ 30 - 6
services/scene-service/internal/service/manager/executer.go

@@ -1,8 +1,9 @@
 package manager
 
 import (
+	"bytes"
+	"encoding/json"
 	"fmt"
-	"github.com/gogf/gf/v2/encoding/gjson"
 	"sparrow/pkg/rpcs"
 	"sparrow/pkg/server"
 	"sparrow/pkg/utils"
@@ -42,12 +43,18 @@ type PlcPubMessage struct {
 // TaskExecutor 任务执行器,用来执行具体的任务动作
 type TaskExecutor struct {
 	Actions []*Action
+	client  *utils.HttpClient
 }
 
 func NewTaskExecutor(actions []*Action) *TaskExecutor {
+	client := utils.NewHttpClient()
+	client.SetLogger(server.Log)
+
 	return &TaskExecutor{
 		Actions: actions,
+		client:  client,
 	}
+
 }
 
 func (a *TaskExecutor) Do(id string) error {
@@ -109,16 +116,33 @@ func getAccessRPCHost(deviceid string) (string, error) {
 
 func (a *TaskExecutor) saveHis(id string, conditionId []string) error {
 
-	client := utils.NewHttpClient()
 	url := "http://127.0.0.1:8199/iot/v1/scene_history"
 	body := make(map[string]interface{})
 	body["scene_id"] = id
-	body["condition_id"] = strings.Join(conditionId, ",")
-	fmt.Printf("sync his:%s", gjson.New(body).MustToJsonString())
-	_, err := client.Post(url, "application/json", gjson.New(body))
+	if len(conditionId) > 0 {
+		body["condition_id"] = strings.Join(conditionId, ",")
+	}
+	w := new(bytes.Buffer)
+	if err := json.NewEncoder(w).Encode(body); err != nil {
+		return err
+	}
+	req, err := utils.NewRequest("POST", url, w)
 	if err != nil {
-		server.Log.Errorf("sync his error:%s", err.Error())
+		server.Log.Error(err)
+		return err
 	}
+
+	req.Header.Add("Content-Type", "application/json")
+	_, err = a.client.Do(req)
+	if err != nil {
+		server.Log.Errorf("请求出错%s", err.Error())
+
+	}
+
+	//_, err := a.client.Post(url, "application/json", gjson.New(body))
+	//if err != nil {
+	//	server.Log.Errorf("sync his error:%s", err.Error())
+	//}
 	return err
 	//args := models.SceneHis{
 	//	RecordId:    guid.S(),