Browse Source

更新规则链创建

liuxiulin 2 years ago
parent
commit
df9bd6835c
2 changed files with 65 additions and 31 deletions
  1. 3 3
      pkg/models/rulechain.go
  2. 62 28
      services/knowoapi/services/rule_chain.go

+ 3 - 3
pkg/models/rulechain.go

@@ -22,9 +22,9 @@ type RuleChain struct {
 
 
 // RuleChainParams 更新规则链参数
 // RuleChainParams 更新规则链参数
 type RuleChainParams struct {
 type RuleChainParams struct {
-	VendorId string      `json:"VendorID"` // 厂商id
-	RecordId string      `json:"RecordId"` // 记录id
-	Cell     *gjson.Json `json:"cell"`
+	VendorId string        `json:"VendorID"` // 厂商id
+	RecordId string        `json:"RecordId"` // 记录id
+	Cell     []*gjson.Json `json:"cell"`
 	Cells    []*Cell
 	Cells    []*Cell
 }
 }
 
 

+ 62 - 28
services/knowoapi/services/rule_chain.go

@@ -1,10 +1,9 @@
 package services
 package services
 
 
 import (
 import (
+	"encoding/json"
 	"fmt"
 	"fmt"
-	"github.com/gogf/gf/encoding/gjson"
 	"github.com/gogf/gf/util/guid"
 	"github.com/gogf/gf/util/guid"
-	"github.com/jinzhu/gorm"
 	"sparrow/pkg/models"
 	"sparrow/pkg/models"
 	"sparrow/pkg/rpcs"
 	"sparrow/pkg/rpcs"
 	"sparrow/pkg/server"
 	"sparrow/pkg/server"
@@ -67,25 +66,41 @@ func (a ruleChainService) Create(ruleChain *models.RuleChain) error {
 }
 }
 
 
 func (a ruleChainService) create(params *models.RuleChainParams) (firstNodeId string, err error) {
 func (a ruleChainService) create(params *models.RuleChainParams) (firstNodeId string, err error) {
-	fmt.Println(params.Cell.MustToJsonString())
+	fmt.Println("11111111111111111111111111111")
+	fmt.Println(params.Cell)
 	nodeMap := make(map[string]models.RuleNode)
 	nodeMap := make(map[string]models.RuleNode)
 	var inputNodeId string
 	var inputNodeId string
-	for _, v := range params.Cells {
-		if v.Shape != "edge" {
-			if v.Shape == "input-node" {
-				inputNodeId = v.Source.Cell
+
+	for _, v := range params.Cell {
+		if v.GetString("shape") != "edge" {
+			if v.GetString("shape") == "input_node" {
+				inputNodeId = v.GetString("source.cell")
 				continue
 				continue
 			}
 			}
 			ruleNode := models.RuleNode{
 			ruleNode := models.RuleNode{
-				Model:       gorm.Model{},
-				RecordId:    guid.S(),
-				RuleChainID: params.RecordId,
-				Type:        nodeType[v.Data.Type],
-				Name:        v.Data.Name,
-				DebugModel:  true,
-				Intro:       v.Data.Desc,
+				RecordId:      guid.S(),
+				RuleChainID:   params.RecordId,
+				Configuration: v.MustToJsonString(),
+				Type:          nodeType[v.GetString("data.type")],
+				Name:          v.GetString("data.name"),
+				DebugModel:    true,
+				Intro:         v.GetString("data.desc"),
 			}
 			}
 
 
+			//if v.Shape != "edge" {
+			//	if v.Shape == "input-node" {
+			//		inputNodeId = v.Source.Cell
+			//		continue
+			//	}
+			//	ruleNode := models.RuleNode{
+			//		RecordId:    guid.S(),
+			//		RuleChainID: params.RecordId,
+			//		Type:        nodeType[v.Data.Type],
+			//		Name:        v.Data.Name,
+			//		DebugModel:  true,
+			//		Intro:       v.Data.Desc,
+			//	}
+
 			//switch ruleNode.Type {
 			//switch ruleNode.Type {
 			//case "MsgTypeSwitchNode":
 			//case "MsgTypeSwitchNode":
 			//	ruleNode.Name = "消息类型路由器"
 			//	ruleNode.Name = "消息类型路由器"
@@ -118,13 +133,13 @@ func (a ruleChainService) create(params *models.RuleChainParams) (firstNodeId st
 			//	}
 			//	}
 			//}
 			//}
 
 
-			str, err := gjson.DecodeToJson(v.Data)
-			if err != nil {
-				return "", err
-			}
-			ruleNode.Configuration = fmt.Sprintf("%s", str.MustToJsonString())
+			//str, err := gjson.DecodeToJson(v)
+			//if err != nil {
+			//	return "", err
+			//}
+			ruleNode.Configuration = fmt.Sprintf("%s", v.MustToJsonString())
 
 
-			nodeMap[v.Id] = ruleNode
+			nodeMap[v.GetString("id")] = ruleNode
 
 
 			err = a.model.RuleNode.Create(&ruleNode)
 			err = a.model.RuleNode.Create(&ruleNode)
 			if err != nil {
 			if err != nil {
@@ -136,21 +151,36 @@ func (a ruleChainService) create(params *models.RuleChainParams) (firstNodeId st
 		}
 		}
 	}
 	}
 
 
-	for _, v := range params.Cells {
-		if v.Shape == "edge" && v.Source.Cell != inputNodeId {
-			err := a.model.Relation.Create(&models.Relation{
+	for _, v := range params.Cell {
+		if v.GetString("shape") == "edge" && v.GetString("source.cell") != inputNodeId {
+			err = a.model.Relation.Create(&models.Relation{
 				RecordId:    guid.S(),
 				RecordId:    guid.S(),
 				RuleChainId: params.RecordId,
 				RuleChainId: params.RecordId,
-				FromID:      nodeMap[v.Source.Cell].RecordId,
+				FromID:      nodeMap[v.GetString("source.cell")].RecordId,
 				//FromType:     nodeMap[v.Source.Cell].Type,
 				//FromType:     nodeMap[v.Source.Cell].Type,
-				ToID:         nodeMap[v.Target.Cell].RecordId,
-				ToType:       nodeMap[v.Target.Cell].Type,
-				RelationType: v.Data.Label,
+				ToID:         nodeMap[v.GetString("target.cell")].RecordId,
+				ToType:       nodeMap[v.GetString("target.cell")].Type,
+				RelationType: v.GetString("data.label"),
 			})
 			})
 			if err != nil {
 			if err != nil {
 				return firstNodeId, err
 				return firstNodeId, err
 			}
 			}
 		}
 		}
+
+		//if v.Shape == "edge" && v.Source.Cell != inputNodeId {
+		//	err := a.model.Relation.Create(&models.Relation{
+		//		RecordId:    guid.S(),
+		//		RuleChainId: params.RecordId,
+		//		FromID:      nodeMap[v.Source.Cell].RecordId,
+		//		//FromType:     nodeMap[v.Source.Cell].Type,
+		//		ToID:         nodeMap[v.Target.Cell].RecordId,
+		//		ToType:       nodeMap[v.Target.Cell].Type,
+		//		RelationType: v.Data.Label,
+		//	})
+		//	if err != nil {
+		//		return firstNodeId, err
+		//	}
+		//}
 	}
 	}
 
 
 	return firstNodeId, err
 	return firstNodeId, err
@@ -210,7 +240,11 @@ func (a ruleChainService) Update(params *models.RuleChainParams) error {
 		return err
 		return err
 	}
 	}
 	if params.Cell != nil {
 	if params.Cell != nil {
-		ruleChain.Configuration = params.Cell.MustToJsonString()
+		str, err := json.Marshal(params.Cell)
+		if err != nil {
+			return err
+		}
+		ruleChain.Configuration = string(str)
 		ruleChain.FirstRuleNodeID, err = a.create(params)
 		ruleChain.FirstRuleNodeID, err = a.create(params)
 		if err != nil {
 		if err != nil {
 			return err
 			return err