boweniac 2 일 전
부모
커밋
2fa4c41841
1개의 변경된 파일18개의 추가작업 그리고 8개의 파일을 삭제
  1. 18 8
      crontask/send_wx_on_timeout.go

+ 18 - 8
crontask/send_wx_on_timeout.go

@@ -2,6 +2,7 @@ package crontask
 
 import (
 	"context"
+	"github.com/zeromicro/go-zero/core/logx"
 	"regexp"
 	"time"
 	"wechat-api/ent"
@@ -24,15 +25,24 @@ func (l *CronTask) sendWxOnTimeout() {
 			soptask.DeletedAtIsNil(),
 		).
 		All(l.ctx)
+
 	sopTasks := make([]uint64, 0)
 	for _, st := range sopTask {
 		sopTasks = append(sopTasks, st.ID)
 	}
-	sopStages, _ := l.svcCtx.DB.SopStage.Query().Where(sopstage.TaskIDIn(sopTasks...), sopstage.DeletedAtIsNil()).All(l.ctx)
-	stageMap := make(map[uint64]*ent.SopStage)
-	for _, stage := range sopStages {
-		stageMap[stage.ID] = stage
+
+	botStageMap := make(map[string]map[uint64]*ent.SopStage)
+	for _, t := range sopTask {
+		for _, bot := range t.BotWxidList {
+			sopStages, _ := l.svcCtx.DB.SopStage.Query().Where(sopstage.TaskIDEQ(t.ID), sopstage.DeletedAtIsNil()).All(l.ctx)
+			stageMap := make(map[uint64]*ent.SopStage)
+			for _, stage := range sopStages {
+				stageMap[stage.ID] = stage
+			}
+			botStageMap[bot] = stageMap
+		}
 	}
+
 	// 查询所有 no_reply_condition 值非 0  的 sop_node 记录
 	nodes, err := l.svcCtx.DB.SopNode.Query().
 		Where(sopnode.NoReplyConditionNEQ(0)).
@@ -72,7 +82,6 @@ func (l *CronTask) sendWxOnTimeout() {
 				Where(messagerecords.StatusEQ(3)).
 				Where(messagerecords.SourceTypeEQ(3)).
 				Where(messagerecords.SourceIDEQ(node.StageID)).
-				Where(messagerecords.SubSourceIDEQ(0)).
 				Where(messagerecords.SendTimeGTE(lowerBound)).
 				Where(messagerecords.SendTimeLTE(upperBound)).
 				All(ctx)
@@ -81,7 +90,6 @@ func (l *CronTask) sendWxOnTimeout() {
 				Where(messagerecords.StatusEQ(3)).
 				Where(messagerecords.SourceTypeEQ(4)).
 				Where(messagerecords.SourceIDIn(node.ParentID)).
-				Where(messagerecords.SubSourceIDEQ(0)).
 				Where(messagerecords.SendTimeGTE(lowerBound)).
 				Where(messagerecords.SendTimeLTE(upperBound)).
 				All(ctx)
@@ -91,8 +99,10 @@ func (l *CronTask) sendWxOnTimeout() {
 			latest, _ := l.svcCtx.DB.MessageRecords.Query().
 				Where(messagerecords.ContactIDEQ(s.ContactID)).
 				Where(messagerecords.StatusEQ(3)).
-				Order(ent.Asc(messagerecords.FieldID)).
+				Order(ent.Desc(messagerecords.FieldID)).
 				First(ctx)
+			logx.Info("latest.ID: ", latest.ID)
+			logx.Info("s.ID: ", s.ID)
 			if latest.ID == s.ID {
 				// 创建 MessageRecords 记录
 				if node.ActionMessage != nil {
@@ -185,7 +195,7 @@ func (l *CronTask) sendWxOnTimeout() {
 
 				if node.ActionLabelAdd != nil || node.ActionLabelDel != nil {
 					visitedStages := make(map[uint64]bool)
-					_ = l.AddLabelRelationships(stageMap, *contact, currentLabelIds, node.ActionLabelAdd, node.ActionLabelDel, s.OrganizationID, visitedStages)
+					_ = l.AddLabelRelationships(botStageMap[s.BotWxid], *contact, currentLabelIds, node.ActionLabelAdd, node.ActionLabelDel, s.OrganizationID, visitedStages)
 				}
 			}
 		}