This is an automated email from the ASF dual-hosted git repository.

linkinstar pushed a commit to branch feat/1.3.0/review
in repository https://gitbox.apache.org/repos/asf/incubator-answer.git


The following commit(s) were added to refs/heads/feat/1.3.0/review by this push:
     new 1b7618f2 fix(notification): update question and answer count amount 
after reviewing
1b7618f2 is described below

commit 1b7618f25b233a28eff75147c21952d6d5bf3104
Author: LinkinStars <[email protected]>
AuthorDate: Thu Mar 14 10:01:05 2024 +0800

    fix(notification): update question and answer count amount after reviewing
---
 internal/service/review/review_service.go | 30 ++++++++++++++++++++++++------
 1 file changed, 24 insertions(+), 6 deletions(-)

diff --git a/internal/service/review/review_service.go 
b/internal/service/review/review_service.go
index 3f77f68c..217a8877 100644
--- a/internal/service/review/review_service.go
+++ b/internal/service/review/review_service.go
@@ -200,7 +200,7 @@ func (cs *ReviewService) updateObjectStatus(ctx 
context.Context, review *entity.
        objectType := constant.ObjectTypeNumberMapping[review.ObjectType]
        switch objectType {
        case constant.QuestionObjectType:
-               question, exist, err := cs.questionRepo.GetQuestion(ctx, 
review.ObjectID)
+               questionInfo, exist, err := cs.questionRepo.GetQuestion(ctx, 
review.ObjectID)
                if err != nil {
                        return err
                }
@@ -208,20 +208,29 @@ func (cs *ReviewService) updateObjectStatus(ctx 
context.Context, review *entity.
                        return errors.BadRequest(reason.ObjectNotFound)
                }
                if isApprove {
-                       question.Status = entity.QuestionStatusAvailable
+                       questionInfo.Status = entity.QuestionStatusAvailable
                } else {
-                       question.Status = entity.QuestionStatusDeleted
+                       questionInfo.Status = entity.QuestionStatusDeleted
                }
-               if err := cs.questionRepo.UpdateQuestionStatus(ctx, 
question.ID, question.Status); err != nil {
+               if err := cs.questionRepo.UpdateQuestionStatus(ctx, 
questionInfo.ID, questionInfo.Status); err != nil {
                        return err
                }
                if isApprove {
-                       tags, err := cs.tagCommon.GetObjectEntityTag(ctx, 
question.ID)
+                       tags, err := cs.tagCommon.GetObjectEntityTag(ctx, 
questionInfo.ID)
                        if err != nil {
                                log.Errorf("get question tags failed, err: %v", 
err)
                        }
                        cs.externalNotificationQueueService.Send(ctx,
-                               
schema.CreateNewQuestionNotificationMsg(question.ID, question.Title, 
question.UserID, tags))
+                               
schema.CreateNewQuestionNotificationMsg(questionInfo.ID, questionInfo.Title, 
questionInfo.UserID, tags))
+               }
+               userQuestionCount, err := 
cs.questionRepo.GetUserQuestionCount(ctx, questionInfo.UserID)
+               if err != nil {
+                       log.Errorf("get user question count failed, err: %v", 
err)
+               } else {
+                       err = cs.userCommon.UpdateQuestionCount(ctx, 
questionInfo.UserID, userQuestionCount)
+                       if err != nil {
+                               log.Errorf("update user question count failed, 
err: %v", err)
+                       }
                }
        case constant.AnswerObjectType:
                answerInfo, exist, err := cs.answerRepo.GetAnswer(ctx, 
review.ObjectID)
@@ -250,6 +259,15 @@ func (cs *ReviewService) updateObjectStatus(ctx 
context.Context, review *entity.
                        cs.notificationAnswerTheQuestion(ctx, 
questionInfo.UserID, questionInfo.ID, answerInfo.ID,
                                answerInfo.UserID, questionInfo.Title, 
answerInfo.OriginalText)
                }
+               userAnswerCount, err := cs.answerRepo.GetCountByUserID(ctx, 
answerInfo.UserID)
+               if err != nil {
+                       log.Errorf("get user answer count failed, err: %v", err)
+               } else {
+                       err = cs.userCommon.UpdateAnswerCount(ctx, 
answerInfo.UserID, int(userAnswerCount))
+                       if err != nil {
+                               log.Errorf("update user answer count failed, 
err: %v", err)
+                       }
+               }
        }
        return
 }

Reply via email to