|
@@ -22,9 +22,10 @@ var nodeType = map[string]string{
|
|
|
type RuleChainService interface {
|
|
|
Create(*models.RuleChain) error
|
|
|
Delete(*models.RuleChain) error
|
|
|
- Update(*models.RuleChain) error
|
|
|
+ Update(*models.RuleChainParams) error
|
|
|
Query(int, int, string) ([]models.RuleChain, int, error)
|
|
|
Get(vendorId, recordId string) (models.RuleChain, error)
|
|
|
+ UpdateChainRoot(*models.ChangeRootParams) error
|
|
|
}
|
|
|
type ruleChainService struct {
|
|
|
model *model.All
|
|
@@ -47,14 +48,7 @@ func (a ruleChainService) Get(vendorId, recordId string) (models.RuleChain, erro
|
|
|
|
|
|
func (a ruleChainService) Create(ruleChain *models.RuleChain) error {
|
|
|
ruleChain.RecordId = guid.S()
|
|
|
- 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
|
|
|
- }
|
|
|
- }
|
|
|
+
|
|
|
err := a.model.RuleChain.Create(ruleChain)
|
|
|
if err != nil {
|
|
|
return err
|
|
@@ -71,11 +65,11 @@ func (a ruleChainService) Create(ruleChain *models.RuleChain) error {
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
-func (a ruleChainService) create(ruleChain *models.RuleChain) error {
|
|
|
+func (a ruleChainService) create(params *models.RuleChainParams) error {
|
|
|
|
|
|
nodeMap := make(map[string]models.RuleNode)
|
|
|
var inputNodeId string
|
|
|
- for _, v := range ruleChain.Cell {
|
|
|
+ for _, v := range params.Cells {
|
|
|
if v.Shape != "edge" {
|
|
|
if v.Shape == "input-node" {
|
|
|
inputNodeId = v.Source.Cell
|
|
@@ -84,25 +78,30 @@ func (a ruleChainService) create(ruleChain *models.RuleChain) error {
|
|
|
ruleNode := models.RuleNode{
|
|
|
Model: gorm.Model{},
|
|
|
RecordId: guid.S(),
|
|
|
- RuleChainID: ruleChain.RecordId,
|
|
|
+ RuleChainID: params.RecordId,
|
|
|
Type: nodeType[v.Data.Type],
|
|
|
Name: v.Data.Name,
|
|
|
DebugModel: true,
|
|
|
Intro: v.Data.Desc,
|
|
|
}
|
|
|
- if ruleNode.Type == "MsgTypeSwitchNode" {
|
|
|
+
|
|
|
+ switch ruleNode.Type {
|
|
|
+ case "MsgTypeSwitchNode":
|
|
|
ruleNode.Name = "消息类型路由器"
|
|
|
- }
|
|
|
+ case "MsgTypeFilter":
|
|
|
+ conMap := map[string]interface{}{
|
|
|
+ "msg_type": v.Data.MesType,
|
|
|
+ }
|
|
|
+ marshal, _ := json.Marshal(conMap)
|
|
|
+ ruleNode.Configuration = fmt.Sprintf("%s", marshal)
|
|
|
|
|
|
- if ruleNode.Type == "FilterJavascriptNode" {
|
|
|
+ case "FilterJavascriptNode":
|
|
|
conMap := map[string]string{
|
|
|
"func_body": v.Data.FuncBody,
|
|
|
}
|
|
|
marshal, _ := json.Marshal(conMap)
|
|
|
ruleNode.Configuration = fmt.Sprintf("%s", marshal)
|
|
|
- }
|
|
|
-
|
|
|
- if ruleNode.Type == "RestApiRequestNode" {
|
|
|
+ case "RestApiRequestNode":
|
|
|
configuration := models.NodeConfiguration{
|
|
|
Url: v.Data.Url,
|
|
|
Method: v.Data.Method,
|
|
@@ -129,11 +128,11 @@ func (a ruleChainService) create(ruleChain *models.RuleChain) error {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- for _, v := range ruleChain.Cell {
|
|
|
+ for _, v := range params.Cells {
|
|
|
if v.Shape == "edge" && v.Source.Cell != inputNodeId {
|
|
|
err := a.model.Relation.Create(&models.Relation{
|
|
|
RecordId: guid.S(),
|
|
|
- RuleChainId: ruleChain.RecordId,
|
|
|
+ RuleChainId: params.RecordId,
|
|
|
FromID: nodeMap[v.Source.Cell].RecordId,
|
|
|
//FromType: nodeMap[v.Source.Cell].Type,
|
|
|
ToID: nodeMap[v.Target.Cell].RecordId,
|
|
@@ -193,28 +192,54 @@ func (a ruleChainService) delete(ruleChain *models.RuleChain) error {
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
-func (a ruleChainService) Update(ruleChain *models.RuleChain) error {
|
|
|
- err := a.delete(ruleChain)
|
|
|
+func (a ruleChainService) Update(params *models.RuleChainParams) error {
|
|
|
+ ruleChain, err := a.Get(params.VendorId, params.RecordId)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
- err = a.create(ruleChain)
|
|
|
+ err = a.delete(&ruleChain)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
+ if params.Cell != nil {
|
|
|
+
|
|
|
+ marshal, _ := json.Marshal(params.Cell)
|
|
|
+ ruleChain.Configuration = string(marshal)
|
|
|
|
|
|
- err = a.model.RuleChain.Update(ruleChain)
|
|
|
+ err = json.Unmarshal(marshal, ¶ms.Cells)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ err = a.create(params)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ err = a.model.RuleChain.Update(&ruleChain)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
- params := rpcs.ArgsRuleChainAct{
|
|
|
+ args := rpcs.ArgsRuleChainAct{
|
|
|
RuleChainId: ruleChain.RecordId,
|
|
|
VendorId: ruleChain.VendorID,
|
|
|
}
|
|
|
reply := new(rpcs.ReplyEmptyResult)
|
|
|
- err = server.RPCCallByName(nil, rpcs.ControllerName, "Controller.UpdateRuleChain", ¶ms, &reply)
|
|
|
+ err = server.RPCCallByName(nil, rpcs.ControllerName, "Controller.UpdateRuleChain", &args, &reply)
|
|
|
if err != nil {
|
|
|
server.Log.Errorf("update ruleChan error : %v", err)
|
|
|
}
|
|
|
return nil
|
|
|
}
|
|
|
+
|
|
|
+func (a ruleChainService) UpdateChainRoot(params *models.ChangeRootParams) error {
|
|
|
+ //var isRoot int = 0
|
|
|
+ //if params.Root {
|
|
|
+ // isRoot = 1
|
|
|
+ //}
|
|
|
+ _, err := a.model.RuleChain.UpdateChainRoot(params.VendorId, params.RecordId, params.Root)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ return nil
|
|
|
+}
|