Browse Source

修复bug

boweniac 10 months ago
parent
commit
2fcefec23f

+ 25 - 30
internal/logic/label_relationship/update_label_relationships_logic.go

@@ -31,17 +31,17 @@ func NewUpdateLabelRelationshipsLogic(ctx context.Context, svcCtx *svc.ServiceCo
 
 func (l *UpdateLabelRelationshipsLogic) UpdateLabelRelationships(req *types.LabelRelationshipsInfo) (resp *types.BaseMsgResp, err error) {
 	// 开始事务
-	//tx, err := l.svcCtx.DB.Tx(context.Background())
-	//if err != nil {
-	//	return nil, dberrorhandler.DefaultEntError(l.Logger, err, req)
-	//}
+	tx, err := l.svcCtx.DB.Tx(context.Background())
+	if err != nil {
+		return nil, dberrorhandler.DefaultEntError(l.Logger, err, req)
+	}
 
 	// 获取联系人信息
-	c, err := l.svcCtx.DB.Contact.Query().Where(contact.ID(*req.ContactId)).Only(l.ctx)
+	c, err := tx.Contact.Query().Where(contact.ID(*req.ContactId)).Only(l.ctx)
 	// 获取联系人当前已关联的标签
-	currentLabelRelationships, err := l.svcCtx.DB.LabelRelationship.Query().Where(labelrelationship.ContactID(*req.ContactId)).All(l.ctx)
+	currentLabelRelationships, err := tx.LabelRelationship.Query().Where(labelrelationship.ContactID(*req.ContactId)).All(l.ctx)
 	if err != nil {
-		//_ = tx.Rollback()
+		_ = tx.Rollback()
 		return nil, dberrorhandler.DefaultEntError(l.Logger, err, req)
 	}
 
@@ -58,7 +58,7 @@ func (l *UpdateLabelRelationshipsLogic) UpdateLabelRelationships(req *types.Labe
 	if req.UpdateType == nil || *req.UpdateType == "all" {
 		// 删除需要移除的标签关系
 		for _, id := range removeLabelIds {
-			_, err := l.svcCtx.DB.LabelRelationship.
+			_, err := tx.LabelRelationship.
 				Delete().
 				Where(
 					labelrelationship.ContactID(*req.ContactId),
@@ -66,7 +66,7 @@ func (l *UpdateLabelRelationshipsLogic) UpdateLabelRelationships(req *types.Labe
 				).
 				Exec(l.ctx)
 			if err != nil {
-				//_ = tx.Rollback()
+				_ = tx.Rollback()
 				return nil, dberrorhandler.DefaultEntError(l.Logger, err, req)
 			}
 		}
@@ -74,7 +74,7 @@ func (l *UpdateLabelRelationshipsLogic) UpdateLabelRelationships(req *types.Labe
 
 	// 创建需要新增的标签关系
 	for _, id := range addLabelIds {
-		_, _ = l.svcCtx.DB.LabelRelationship.Create().
+		_, _ = tx.LabelRelationship.Create().
 			SetLabelID(id).
 			SetContactID(*req.ContactId).
 			Save(l.ctx)
@@ -83,13 +83,10 @@ func (l *UpdateLabelRelationshipsLogic) UpdateLabelRelationships(req *types.Labe
 		//}
 	}
 
-	currentLabelIds = req.LabelIds
-
 	// 获取所有 status 为 3 且 bot_wxid_list 包含 c.wx_wxid 的 sop_task
-	sopTasks, err := l.svcCtx.DB.SopTask.Query().Where(soptask.Status(3)).All(l.ctx)
-	l.Logger.Info("UpdateLabelRelationships sopTasks:", sopTasks)
+	sopTasks, err := tx.SopTask.Query().Where(soptask.Status(3)).All(l.ctx)
 	if err != nil {
-		//_ = tx.Rollback()
+		_ = tx.Rollback()
 		return nil, dberrorhandler.DefaultEntError(l.Logger, err, req)
 	}
 
@@ -108,28 +105,28 @@ func (l *UpdateLabelRelationshipsLogic) UpdateLabelRelationships(req *types.Labe
 	for _, task := range filteredSopTasks {
 		stages, err := task.QueryTaskStages().All(l.ctx)
 		if err != nil {
-			//_ = tx.Rollback()
+			_ = tx.Rollback()
 			return nil, dberrorhandler.DefaultEntError(l.Logger, err, req)
 		}
 		sopStages = append(sopStages, stages...)
 	}
-	err = l.AddLabelRelationships(sopStages, *c, currentLabelIds)
+	err = l.AddLabelRelationships(sopStages, *c, req.LabelIds)
 
 	if err != nil {
-		//_ = tx.Rollback()
+		_ = tx.Rollback()
 		return nil, err
 	}
-	//// 所有操作成功,提交事务
-	//err = tx.Commit()
-	//if err != nil {
-	//	return nil, dberrorhandler.DefaultEntError(l.Logger, err, req)
-	//}
+	// 所有操作成功,提交事务
+	err = tx.Commit()
+	if err != nil {
+		return nil, dberrorhandler.DefaultEntError(l.Logger, err, req)
+	}
 
 	return &types.BaseMsgResp{Msg: errormsg.UpdateSuccess}, nil
 }
 
 func (l *UpdateLabelRelationshipsLogic) AddLabelRelationships(sopStages []*ent.SopStage, contact ent.Contact, currentLabelIds []uint64) (err error) {
-	// 开始事务
+	//// 开始事务
 	//tx, err := l.svcCtx.DB.Tx(context.Background())
 	//if err != nil {
 	//	return dberrorhandler.DefaultEntError(l.Logger, err, nil)
@@ -152,7 +149,7 @@ func (l *UpdateLabelRelationshipsLogic) AddLabelRelationships(sopStages []*ent.S
 			// 判断ActionMessage是否为空
 			sourceType := 3
 			if stage.ActionMessage != nil {
-				for _, message := range stage.ActionMessage {
+				for i, message := range stage.ActionMessage {
 					_, _ = l.svcCtx.DB.MessageRecords.Create().
 						SetNotNilBotWxid(&contact.WxWxid).
 						SetNotNilContactID(&contact.ID).
@@ -162,6 +159,7 @@ func (l *UpdateLabelRelationshipsLogic) AddLabelRelationships(sopStages []*ent.S
 						SetNotNilContent(&message.Content).
 						SetNotNilSourceType(&sourceType).
 						SetNotNilSourceID(&stage.ID).
+						SetSubSourceID(uint64(i)).
 						Save(l.ctx)
 
 					//if err != nil {
@@ -201,11 +199,8 @@ func (l *UpdateLabelRelationshipsLogic) AddLabelRelationships(sopStages []*ent.S
 				// 合并 currentLabelIds 和 newLabelIds
 				currentLabelIds = append(currentLabelIds, newLabelIds...)
 				// 递归调用 AddLabelRelationships
-				//err = l.AddLabelRelationships(sopStages, contact, currentLabelIds)
-				//if err != nil {
-				//	//_ = tx.Rollback()
-				//	return err
-				//}
+				_ = l.AddLabelRelationships(sopStages, contact, currentLabelIds)
+				return
 			}
 		}
 	}

+ 18 - 16
internal/logic/sop_task/publish_sop_task_logic.go

@@ -107,7 +107,7 @@ func (l *PublishSopTaskLogic) PublishSopTask(req *types.IDReq) (resp *types.Base
 				for _, c := range contacts {
 					// 判断联系人所属微信是否包含在任务当中
 					if sopTask.BotWxidList == nil || (sopTask.BotWxidList != nil && valueInArray(c.WxWxid, sopTask.BotWxidList)) {
-						for _, message := range stage.ActionMessage {
+						for i, message := range stage.ActionMessage {
 							_, _ = l.svcCtx.DB.MessageRecords.Create().
 								SetNotNilBotWxid(&c.WxWxid).
 								SetNotNilContactID(&c.ID).
@@ -117,6 +117,7 @@ func (l *PublishSopTaskLogic) PublishSopTask(req *types.IDReq) (resp *types.Base
 								SetNotNilContent(&message.Content).
 								SetNotNilSourceType(&sourceType).
 								SetNotNilSourceID(&stage.ID).
+								SetSubSourceID(uint64(i)).
 								Save(l.ctx)
 
 							//if err != nil {
@@ -167,11 +168,11 @@ func (l *PublishSopTaskLogic) PublishSopTask(req *types.IDReq) (resp *types.Base
 }
 
 func (l *PublishSopTaskLogic) AddLabelRelationships(sopStages []*ent.SopStage, contact ent.Contact, currentLabelIds []uint64, addLabelIds []uint64) (err error) {
-	// 开始事务
-	tx, err := l.svcCtx.DB.Tx(context.Background())
-	if err != nil {
-		return dberrorhandler.DefaultEntError(l.Logger, err, nil)
-	}
+	//// 开始事务
+	//tx, err := l.svcCtx.DB.Tx(context.Background())
+	//if err != nil {
+	//	return dberrorhandler.DefaultEntError(l.Logger, err, nil)
+	//}
 
 	// 获取 addLabelIds 中不在 currentLabelIds 中的标签ID
 	var newLabelIds []uint64
@@ -194,12 +195,12 @@ func (l *PublishSopTaskLogic) AddLabelRelationships(sopStages []*ent.SopStage, c
 
 	// 创建需要新增的标签关系
 	for _, id := range newLabelIds {
-		_, err = tx.LabelRelationship.Create().
+		_, err = l.svcCtx.DB.LabelRelationship.Create().
 			SetLabelID(id).
 			SetContactID(contact.ID).
 			Save(l.ctx)
 		if err != nil {
-			_ = tx.Rollback()
+			//_ = tx.Rollback()
 			return dberrorhandler.DefaultEntError(l.Logger, err, nil)
 		}
 	}
@@ -211,7 +212,7 @@ func (l *PublishSopTaskLogic) AddLabelRelationships(sopStages []*ent.SopStage, c
 	for _, stage := range sopStages {
 		if stage.ConditionType == 1 && isLabelIdListMatchFilter(currentLabelIds, stage.ConditionOperator, stage.ConditionList) {
 			// 判断是否有 contact_wxid、source_type、source_id、sub_source_id 相同的记录
-			_, err := tx.MessageRecords.Query().
+			_, err := l.svcCtx.DB.MessageRecords.Query().
 				Where(
 					messagerecords.ContactWxid(contact.Wxid),
 					messagerecords.SourceType(3),
@@ -225,8 +226,8 @@ func (l *PublishSopTaskLogic) AddLabelRelationships(sopStages []*ent.SopStage, c
 			// 判断ActionMessage是否为空
 			sourceType := 3
 			if stage.ActionMessage != nil {
-				for _, message := range stage.ActionMessage {
-					_, _ = tx.MessageRecords.Create().
+				for i, message := range stage.ActionMessage {
+					_, _ = l.svcCtx.DB.MessageRecords.Create().
 						SetNotNilBotWxid(&contact.WxWxid).
 						SetNotNilContactID(&contact.ID).
 						SetNotNilContactType(&contact.Type).
@@ -235,6 +236,7 @@ func (l *PublishSopTaskLogic) AddLabelRelationships(sopStages []*ent.SopStage, c
 						SetNotNilContent(&message.Content).
 						SetNotNilSourceType(&sourceType).
 						SetNotNilSourceID(&stage.ID).
+						SetSubSourceID(uint64(i)).
 						Save(l.ctx)
 
 					//if err != nil {
@@ -246,7 +248,7 @@ func (l *PublishSopTaskLogic) AddLabelRelationships(sopStages []*ent.SopStage, c
 				// 递归调用 AddLabelRelationships
 				err = l.AddLabelRelationships(sopStages, contact, currentLabelIds, stage.ActionLabel)
 				if err != nil {
-					_ = tx.Rollback()
+					//_ = tx.Rollback()
 					return err
 				}
 			}
@@ -255,10 +257,10 @@ func (l *PublishSopTaskLogic) AddLabelRelationships(sopStages []*ent.SopStage, c
 	}
 
 	// 所有操作成功,提交事务
-	err = tx.Commit()
-	if err != nil {
-		return dberrorhandler.DefaultEntError(l.Logger, err, nil)
-	}
+	//err = tx.Commit()
+	//if err != nil {
+	//	return dberrorhandler.DefaultEntError(l.Logger, err, nil)
+	//}
 	return nil
 }