fix(notification): Remove the author from notification subscribers

This commit is contained in:
LinkinStars 2023-08-22 17:16:46 +08:00
parent e4a77367a4
commit fce6e1d075
4 changed files with 18 additions and 11 deletions

View File

@ -87,11 +87,12 @@ type NewCommentTemplateData struct {
} }
type NewQuestionTemplateRawData struct { type NewQuestionTemplateRawData struct {
QuestionTitle string QuestionAuthorUserID string
QuestionID string QuestionTitle string
UnsubscribeCode string QuestionID string
Tags []string UnsubscribeCode string
TagIDs []string Tags []string
TagIDs []string
} }
type NewQuestionTemplateData struct { type NewQuestionTemplateData struct {

View File

@ -16,12 +16,14 @@ type ExternalNotificationMsg struct {
NewQuestionTemplateRawData *NewQuestionTemplateRawData `json:"new_question_template_raw_data,omitempty"` NewQuestionTemplateRawData *NewQuestionTemplateRawData `json:"new_question_template_raw_data,omitempty"`
} }
func CreateNewQuestionNotificationMsg(questionID, questionTitle string, tags []*entity.Tag) *ExternalNotificationMsg { func CreateNewQuestionNotificationMsg(
questionID, questionTitle, questionAuthorUserID string, tags []*entity.Tag) *ExternalNotificationMsg {
questionID = uid.DeShortID(questionID) questionID = uid.DeShortID(questionID)
msg := &ExternalNotificationMsg{ msg := &ExternalNotificationMsg{
NewQuestionTemplateRawData: &NewQuestionTemplateRawData{ NewQuestionTemplateRawData: &NewQuestionTemplateRawData{
QuestionID: questionID, QuestionAuthorUserID: questionAuthorUserID,
QuestionTitle: questionTitle, QuestionID: questionID,
QuestionTitle: questionTitle,
}, },
} }
for _, tag := range tags { for _, tag := range tags {

View File

@ -78,7 +78,6 @@ func (ns *ExternalNotificationService) getNewQuestionSubscribers(ctx context.Con
UserID: userNotificationConfig.UserID, UserID: userNotificationConfig.UserID,
Channels: schema.NewNotificationChannelsFormJson(userNotificationConfig.Channels), Channels: schema.NewNotificationChannelsFormJson(userNotificationConfig.Channels),
} }
subscribers = append(subscribers, subscribersMapping[userNotificationConfig.UserID])
} }
log.Debugf("get %d subscribers from tags", len(subscribersMapping)) log.Debugf("get %d subscribers from tags", len(subscribersMapping))
@ -98,7 +97,12 @@ func (ns *ExternalNotificationService) getNewQuestionSubscribers(ctx context.Con
UserID: notificationConfig.UserID, UserID: notificationConfig.UserID,
Channels: schema.NewNotificationChannelsFormJson(notificationConfig.Channels), Channels: schema.NewNotificationChannelsFormJson(notificationConfig.Channels),
} }
subscribers = append(subscribers, subscribersMapping[notificationConfig.UserID]) }
// 3. remove question owner
delete(subscribersMapping, msg.NewQuestionTemplateRawData.QuestionAuthorUserID)
for _, subscriber := range subscribersMapping {
subscribers = append(subscribers, subscriber)
} }
log.Debugf("get %d subscribers from all new question config", len(subscribers)) log.Debugf("get %d subscribers from all new question config", len(subscribers))
return subscribers, nil return subscribers, nil

View File

@ -333,7 +333,7 @@ func (qs *QuestionService) AddQuestion(ctx context.Context, req *schema.Question
}) })
qs.externalNotificationQueueService.Send(ctx, qs.externalNotificationQueueService.Send(ctx,
schema.CreateNewQuestionNotificationMsg(question.ID, question.Title, tags)) schema.CreateNewQuestionNotificationMsg(question.ID, question.Title, question.UserID, tags))
questionInfo, err = qs.GetQuestion(ctx, question.ID, question.UserID, req.QuestionPermission) questionInfo, err = qs.GetQuestion(ctx, question.ID, question.UserID, req.QuestionPermission)
return return