Sfoglia il codice sorgente

更新规则链配置

liuxiulin 2 anni fa
parent
commit
30a0e004ed

+ 7 - 7
services/knowoapi/model/relation.go

@@ -21,9 +21,9 @@ func (a *Relation) Init(db *gorm.DB) *Relation {
 // Query query all roles
 func (a *Relation) Query(pi, ps int, chanId string) (datas []models.Relation, total int, err error) {
 	tx := a.db.Where("1=1")
-	if chanId != "" {
-		tx = tx.Where("rule_chain_id = ?", chanId)
-	}
+	//if chanId != "" {
+	//	tx = tx.Where("rule_chain_id = ?", chanId)
+	//}
 	err = tx.Limit(ps).Offset((pi - 1) * ps).Find(&datas).Error
 	err = tx.Model(&models.Relation{}).Count(&total).Error
 	return
@@ -56,10 +56,10 @@ func (a *Relation) Delete(relation *models.Relation) error {
 	return a.db.Delete(relation).Error
 }
 
-func (a *Relation) DeleteByChainId(relation *models.Relation) error {
-	a.db.Model(&models.Relation{}).Where("rule_chan_id = ?", relation.RuleChainId)
-	return a.db.Delete(relation).Error
-}
+//func (a *Relation) DeleteByChainId(relation *models.Relation) error {
+//	a.db.Model(&models.Relation{}).Where("rule_chan_id = ?", relation.RuleChainId)
+//	return a.db.Delete(relation).Error
+//}
 
 // Update update
 func (a *Relation) Update(relation *models.Relation) error {

+ 6 - 3
services/knowoapi/model/rule_chain.go

@@ -19,11 +19,14 @@ func (a *RuleChain) Init(db *gorm.DB) *RuleChain {
 }
 
 // Query query all roles
-func (a *RuleChain) Query(pi, ps int, name string) (datas []models.RuleChain, total int, err error) {
+func (a *RuleChain) Query(pi, ps int, name string, root bool) (datas []models.RuleChain, total int, err error) {
 	tx := a.db.Where("1=1")
 	if name != "" {
 		tx = tx.Where("name like ?", "%"+name+"%")
 	}
+	if root {
+		tx = tx.Where("root = 1")
+	}
 	err = tx.Limit(ps).Offset((pi - 1) * ps).Find(&datas).Error
 	err = tx.Model(&models.RuleChain{}).Count(&total).Error
 	return
@@ -67,8 +70,8 @@ func (a *RuleChain) Update(ruleChain *models.RuleChain) error {
 }
 
 // UpdateChainRoot 设置规则链
-func (a *RuleChain) UpdateChainRoot(vendorId, id string, isRoot bool) (data models.RuleChain, err error) {
-	err = a.db.Model(&data).Where("vendor_id = ? and record_id = ?", vendorId, id).
+func (a *RuleChain) UpdateChainRoot(id string, isRoot bool) (data models.RuleChain, err error) {
+	err = a.db.Model(&data).Where("record_id = ?", id).
 		Update("root", isRoot).Error
 	return
 }

+ 44 - 34
services/knowoapi/services/rule_chain.go

@@ -38,7 +38,7 @@ func NewRuleChainService(model *model.All) RuleChainService {
 }
 
 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) {
@@ -47,7 +47,18 @@ func (a ruleChainService) Get(vendorId, recordId string) (models.RuleChain, erro
 
 func (a ruleChainService) Create(ruleChain *models.RuleChain) error {
 	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)
 	if err != nil {
 		return err
@@ -142,18 +153,19 @@ func (a ruleChainService) create(params *models.RuleChainParams) (firstNodeId st
 			if err != nil {
 				return firstNodeId, err
 			}
-			if firstNodeId == "" {
-				firstNodeId = ruleNode.RecordId
-			}
 		}
 	}
 
 	for _, v := range params.Cell {
-		if v.GetString("shape") == "edge" && v.GetString("source.cell") != inputNodeId {
+		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,
+				RecordId: guid.S(),
+				//RuleChainId: params.RecordId,
+				FromID: nodeMap[v.GetString("source.cell")].RecordId,
 				//FromType:     nodeMap[v.Source.Cell].Type,
 				ToID:         nodeMap[v.GetString("target.cell")].RecordId,
 				ToType:       nodeMap[v.GetString("target.cell")].Type,
@@ -163,21 +175,6 @@ func (a ruleChainService) create(params *models.RuleChainParams) (firstNodeId st
 				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
@@ -215,15 +212,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
 }
 
@@ -269,9 +266,22 @@ func (a ruleChainService) UpdateChainRoot(params *models.ChangeRootParams) error
 	//if params.Root {
 	//	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 {
 		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
 }