|
@@ -39,68 +39,74 @@ func (a ruleChainService) Get(vendorId, recordId string) (models.RuleChain, erro
|
|
|
|
|
|
func (a ruleChainService) Create(ruleChain *models.RuleChain) error {
|
|
|
ruleChain.RecordId = guid.S()
|
|
|
- err := a.create(ruleChain)
|
|
|
- if err != nil {
|
|
|
- return err
|
|
|
+ if len(ruleChain.Cell) > 0 {
|
|
|
+ marshal, _ := json.Marshal(ruleChain.Cell)
|
|
|
+ ruleChain.Configuration = fmt.Sprintf("%s", marshal)
|
|
|
+ err := a.create(ruleChain)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
}
|
|
|
return a.model.RuleChain.Create(ruleChain)
|
|
|
}
|
|
|
|
|
|
func (a ruleChainService) create(ruleChain *models.RuleChain) error {
|
|
|
- fmt.Printf("++++++++++++++++%d+++++++++++++++", len(ruleChain.Cell))
|
|
|
- if len(ruleChain.Cell) > 0 {
|
|
|
- nodeMap := make(map[string]models.RuleNode)
|
|
|
- for _, v := range ruleChain.Cell {
|
|
|
- if v.Data.Shape != "edge" {
|
|
|
- ruleNode := models.RuleNode{
|
|
|
- Model: gorm.Model{},
|
|
|
- RecordId: guid.S(),
|
|
|
- RuleChainID: ruleChain.RecordId,
|
|
|
- Type: v.Data.Type,
|
|
|
- Name: v.Data.Name,
|
|
|
- DebugModel: true,
|
|
|
- Intro: v.Data.Desc,
|
|
|
- }
|
|
|
- if v.Data.Shape == "input-node" {
|
|
|
- ruleChain.FirstRuleNodeID = ruleNode.RecordId
|
|
|
- ruleNode.Name = "数据输入"
|
|
|
- }
|
|
|
-
|
|
|
- var configuration models.NodeConfiguration
|
|
|
- if v.Data.Shape == "action_node" {
|
|
|
- for _, header := range v.Data.Headers {
|
|
|
- configuration.Headers[header.Key] = header.Value
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- marshal, _ := json.Marshal(configuration)
|
|
|
- ruleNode.Configuration = fmt.Sprintf("%s", marshal)
|
|
|
-
|
|
|
- nodeMap[v.Id] = ruleNode
|
|
|
-
|
|
|
- err := a.model.RuleNode.Create(&ruleNode)
|
|
|
- if err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
+
|
|
|
+ nodeMap := make(map[string]models.RuleNode)
|
|
|
+ for _, v := range ruleChain.Cell {
|
|
|
+ if v.Shape != "edge" {
|
|
|
+ ruleNode := models.RuleNode{
|
|
|
+ Model: gorm.Model{},
|
|
|
+ RecordId: guid.S(),
|
|
|
+ RuleChainID: ruleChain.RecordId,
|
|
|
+ Type: v.Data.Type,
|
|
|
+ Name: v.Data.Name,
|
|
|
+ DebugModel: true,
|
|
|
+ Intro: v.Data.Desc,
|
|
|
+ }
|
|
|
+ if v.Shape == "input-node" {
|
|
|
+ ruleChain.FirstRuleNodeID = ruleNode.RecordId
|
|
|
+ ruleNode.Name = "数据输入"
|
|
|
+ }
|
|
|
+
|
|
|
+ configuration := models.NodeConfiguration{
|
|
|
+ Url: v.Data.Url,
|
|
|
+ Method: v.Data.Method,
|
|
|
+ Headers: v.Data.Headers,
|
|
|
+ Retry: v.Data.Retry,
|
|
|
+ TimeOut: v.Data.TimeOut,
|
|
|
+ RetryWait: v.Data.RetryWait,
|
|
|
+ }
|
|
|
+
|
|
|
+ marshal, _ := json.Marshal(configuration)
|
|
|
+ ruleNode.Configuration = fmt.Sprintf("%s", marshal)
|
|
|
+
|
|
|
+ nodeMap[v.Id] = ruleNode
|
|
|
+
|
|
|
+ err := a.model.RuleNode.Create(&ruleNode)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
}
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
- for _, v := range ruleChain.Cell {
|
|
|
- if v.Data.Shape == "edge" {
|
|
|
- err := a.model.Relation.Create(&models.Relation{
|
|
|
- RecordId: guid.S(),
|
|
|
- RuleChainId: ruleChain.RecordId,
|
|
|
- FromID: nodeMap[v.Data.Source].RecordId,
|
|
|
- FromType: nodeMap[v.Data.Source].Type,
|
|
|
- ToID: nodeMap[v.Data.Target].RecordId,
|
|
|
- ToType: nodeMap[v.Data.Target].Type,
|
|
|
- })
|
|
|
- if err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
+ for _, v := range ruleChain.Cell {
|
|
|
+ if v.Shape == "edge" {
|
|
|
+ err := a.model.Relation.Create(&models.Relation{
|
|
|
+ RecordId: guid.S(),
|
|
|
+ RuleChainId: ruleChain.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 err
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
return nil
|
|
|
}
|
|
|
|