|
@@ -1,10 +1,9 @@
|
|
|
package services
|
|
|
|
|
|
import (
|
|
|
+ "encoding/json"
|
|
|
"fmt"
|
|
|
- "github.com/gogf/gf/encoding/gjson"
|
|
|
"github.com/gogf/gf/util/guid"
|
|
|
- "github.com/jinzhu/gorm"
|
|
|
"sparrow/pkg/models"
|
|
|
"sparrow/pkg/rpcs"
|
|
|
"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) {
|
|
|
- fmt.Println(params.Cell.MustToJsonString())
|
|
|
+ fmt.Println("11111111111111111111111111111")
|
|
|
+ fmt.Println(params.Cell)
|
|
|
nodeMap := make(map[string]models.RuleNode)
|
|
|
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
|
|
|
}
|
|
|
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 {
|
|
|
//case "MsgTypeSwitchNode":
|
|
|
// 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)
|
|
|
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(),
|
|
|
RuleChainId: params.RecordId,
|
|
|
- FromID: nodeMap[v.Source.Cell].RecordId,
|
|
|
+ FromID: nodeMap[v.GetString("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,
|
|
|
+ ToID: nodeMap[v.GetString("target.cell")].RecordId,
|
|
|
+ ToType: nodeMap[v.GetString("target.cell")].Type,
|
|
|
+ RelationType: v.GetString("data.label"),
|
|
|
})
|
|
|
if err != nil {
|
|
|
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
|
|
@@ -210,7 +240,11 @@ func (a ruleChainService) Update(params *models.RuleChainParams) error {
|
|
|
return err
|
|
|
}
|
|
|
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)
|
|
|
if err != nil {
|
|
|
return err
|