From b9141743a3959c33e3832faa9a0f4a58f7f09189 Mon Sep 17 00:00:00 2001 From: GoEdgeLab Date: Tue, 13 Apr 2021 21:30:40 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B6=88=E6=81=AF=E4=BB=BB=E5=8A=A1=E9=98=B2?= =?UTF-8?q?=E6=AD=A2=E5=8D=95=E4=B8=AA=E6=8E=A5=E6=94=B6=E4=BA=BA=E6=8E=A5?= =?UTF-8?q?=E6=94=B6=E5=88=B0=E5=A4=9A=E5=B0=81=E5=90=8C=E6=A0=B7=E7=9A=84?= =?UTF-8?q?=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/db/models/message_task_dao.go | 27 ++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/internal/db/models/message_task_dao.go b/internal/db/models/message_task_dao.go index f4e47d26..ca4fdd1a 100644 --- a/internal/db/models/message_task_dao.go +++ b/internal/db/models/message_task_dao.go @@ -122,24 +122,31 @@ func (this *MessageTaskDAO) CreateMessageTasks(tx *dbs.Tx, target MessageTaskTar if err != nil { return err } + allRecipientIds := []int64{} for _, receiver := range receivers { if receiver.RecipientId > 0 { - _, err := this.CreateMessageTask(tx, int64(receiver.RecipientId), 0, "", subject, body, false) - if err != nil { - return err - } + allRecipientIds = append(allRecipientIds, int64(receiver.RecipientId)) } else if receiver.RecipientGroupId > 0 { recipientIds, err := SharedMessageRecipientDAO.FindAllEnabledAndOnRecipientIdsWithGroup(tx, int64(receiver.RecipientGroupId)) if err != nil { return err } - for _, recipientId := range recipientIds { - _, err := this.CreateMessageTask(tx, recipientId, 0, "", subject, body, false) - if err != nil { - return err - } - } + allRecipientIds = append(allRecipientIds, recipientIds...) } } + + sentMap := map[int64]bool{} // recipientId => bool 用来检查是否已经发送,防止重复发送给某个接收人 + for _, recipientId := range allRecipientIds { + _, ok := sentMap[recipientId] + if ok { + continue + } + sentMap[recipientId] = true + _, err := this.CreateMessageTask(tx, recipientId, 0, "", subject, body, false) + if err != nil { + return err + } + } + return nil }