|
@@ -1,10 +1,8 @@
|
|
package services
|
|
package services
|
|
|
|
|
|
import (
|
|
import (
|
|
- "fmt"
|
|
|
|
- "github.com/gogf/gf/encoding/gjson"
|
|
|
|
|
|
+ "encoding/json"
|
|
"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"
|
|
@@ -40,7 +38,7 @@ func NewRuleChainService(model *model.All) RuleChainService {
|
|
}
|
|
}
|
|
|
|
|
|
func (a ruleChainService) Query(pi, ps int, name string) ([]models.RuleChain, int, error) {
|
|
func (a ruleChainService) Query(pi, ps int, name string) ([]models.RuleChain, int, error) {
|
|
- return a.model.RuleChain.Query(pi, ps, name)
|
|
|
|
|
|
+ return a.model.RuleChain.Query(pi, ps, name, false)
|
|
}
|
|
}
|
|
|
|
|
|
func (a ruleChainService) Get(vendorId, recordId string) (models.RuleChain, error) {
|
|
func (a ruleChainService) Get(vendorId, recordId string) (models.RuleChain, error) {
|
|
@@ -49,7 +47,18 @@ func (a ruleChainService) Get(vendorId, recordId string) (models.RuleChain, erro
|
|
|
|
|
|
func (a ruleChainService) Create(ruleChain *models.RuleChain) error {
|
|
func (a ruleChainService) Create(ruleChain *models.RuleChain) error {
|
|
ruleChain.RecordId = guid.S()
|
|
ruleChain.RecordId = guid.S()
|
|
-
|
|
|
|
|
|
+ if ruleChain.Root {
|
|
|
|
+ result, total, err := a.model.RuleChain.Query(1, 1, "", true)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return err
|
|
|
|
+ }
|
|
|
|
+ if total > 0 {
|
|
|
|
+ _, err = a.model.RuleChain.UpdateChainRoot(result[0].RecordId, false)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return err
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
err := a.model.RuleChain.Create(ruleChain)
|
|
err := a.model.RuleChain.Create(ruleChain)
|
|
if err != nil {
|
|
if err != nil {
|
|
return err
|
|
return err
|
|
@@ -67,23 +76,42 @@ 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) {
|
|
|
|
+<<<<<<< HEAD
|
|
|
|
+=======
|
|
|
|
+
|
|
|
|
+>>>>>>> 30a0e004edad0622e971d2f781dc46f5bf3f398c
|
|
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.GetString("data"),
|
|
|
|
+ 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":
|
|
@@ -117,34 +145,34 @@ 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
|
|
|
|
+ //}
|
|
|
|
|
|
- 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 {
|
|
return firstNodeId, err
|
|
return firstNodeId, err
|
|
}
|
|
}
|
|
- if firstNodeId == "" {
|
|
|
|
- firstNodeId = ruleNode.RecordId
|
|
|
|
- }
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- for _, v := range params.Cells {
|
|
|
|
- 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,
|
|
|
|
|
|
+ for _, v := range params.Cell {
|
|
|
|
+ if v.GetString("shape") == "edge" {
|
|
|
|
+ if v.GetString("source.cell") == inputNodeId {
|
|
|
|
+ firstNodeId = nodeMap[v.GetString("target.cell")].RecordId
|
|
|
|
+ continue
|
|
|
|
+ }
|
|
|
|
+ err = a.model.Relation.Create(&models.Relation{
|
|
|
|
+ RecordId: guid.S(),
|
|
|
|
+ //RuleChainId: params.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
|
|
@@ -187,15 +215,15 @@ func (a ruleChainService) delete(ruleChain *models.RuleChain) error {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- relation, _, err := a.model.Relation.Query(1, 100, ruleChain.RecordId)
|
|
|
|
- if err != nil {
|
|
|
|
- return err
|
|
|
|
- }
|
|
|
|
- if len(relation) > 0 {
|
|
|
|
- for _, v := range relation {
|
|
|
|
- _ = a.model.Relation.DeleteByChainId(&v)
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
|
|
+ //relation, _, err := a.model.Relation.Query(1, 100, ruleChain.RecordId)
|
|
|
|
+ //if err != nil {
|
|
|
|
+ // return err
|
|
|
|
+ //}
|
|
|
|
+ //if len(relation) > 0 {
|
|
|
|
+ // for _, v := range relation {
|
|
|
|
+ // _ = a.model.Relation.DeleteByChainId(&v)
|
|
|
|
+ // }
|
|
|
|
+ //}
|
|
return nil
|
|
return nil
|
|
}
|
|
}
|
|
|
|
|
|
@@ -209,7 +237,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
|
|
@@ -237,9 +269,22 @@ func (a ruleChainService) UpdateChainRoot(params *models.ChangeRootParams) error
|
|
//if params.Root {
|
|
//if params.Root {
|
|
// isRoot = 1
|
|
// isRoot = 1
|
|
//}
|
|
//}
|
|
- _, err := a.model.RuleChain.UpdateChainRoot(params.VendorId, params.RecordId, params.Root)
|
|
|
|
|
|
+ _, err := a.model.RuleChain.UpdateChainRoot(params.RecordId, params.Root)
|
|
if err != nil {
|
|
if err != nil {
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
|
|
+ if params.Root {
|
|
|
|
+ data, total, err := a.model.RuleChain.Query(1, 1, "", true)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return err
|
|
|
|
+ }
|
|
|
|
+ if total > 0 {
|
|
|
|
+ data[0].Root = false
|
|
|
|
+ _, err := a.model.RuleChain.UpdateChainRoot(data[0].RecordId, data[0].Root)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return err
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
return nil
|
|
return nil
|
|
}
|
|
}
|