From a6b6545089b568d0a8325e9255c49fa7d4d3aa63 Mon Sep 17 00:00:00 2001 From: LinkinStars Date: Tue, 29 Aug 2023 15:22:35 +0800 Subject: [PATCH] fix(answer): fix incorrect cancel answer activity --- internal/repo/activity/answer_repo.go | 35 +++---------------- .../activity/answer_activity_service.go | 3 ++ 2 files changed, 8 insertions(+), 30 deletions(-) diff --git a/internal/repo/activity/answer_repo.go b/internal/repo/activity/answer_repo.go index 80335f73..5542ee2e 100644 --- a/internal/repo/activity/answer_repo.go +++ b/internal/repo/activity/answer_repo.go @@ -46,15 +46,6 @@ func NewAnswerActivityRepo( func (ar *AnswerActivityRepo) SaveAcceptAnswerActivity(ctx context.Context, op *schema.AcceptAnswerOperationInfo) ( err error) { - // pre check - noNeedToDo, err := ar.activityPreCheck(ctx, op) - if err != nil { - return err - } - if noNeedToDo { - return nil - } - // save activity _, err = ar.data.DB.Transaction(func(session *xorm.Session) (result any, err error) { session = session.Context(ctx) @@ -131,21 +122,6 @@ func (ar *AnswerActivityRepo) SaveCancelAcceptAnswerActivity(ctx context.Context return nil } -func (ar *AnswerActivityRepo) activityPreCheck(ctx context.Context, op *schema.AcceptAnswerOperationInfo) ( - noNeedToDo bool, err error) { - activities, err := ar.getExistActivity(ctx, op) - if err != nil { - return false, err - } - done := 0 - for _, act := range activities { - if act.Cancelled == entity.ActivityAvailable { - done++ - } - } - return done == len(op.Activities), nil -} - func (ar *AnswerActivityRepo) acquireUserInfo(session *xorm.Session, userIDs []string) (map[string]*entity.User, error) { us := make([]*entity.User, 0) err := session.In("id", userIDs).ForUpdate().Find(&us) @@ -286,18 +262,17 @@ func (ar *AnswerActivityRepo) rollbackUserRank(ctx context.Context, session *xor func (ar *AnswerActivityRepo) getExistActivity(ctx context.Context, op *schema.AcceptAnswerOperationInfo) ([]*entity.Activity, error) { var activities []*entity.Activity for _, action := range op.Activities { - t := &entity.Activity{} - exist, err := ar.data.DB.Context(ctx). + var t []*entity.Activity + err := ar.data.DB.Context(ctx). Where(builder.Eq{"user_id": action.ActivityUserID}). - And(builder.Eq{"trigger_user_id": action.TriggerUserID}). And(builder.Eq{"activity_type": action.ActivityType}). And(builder.Eq{"object_id": op.AnswerObjectID}). - Get(t) + Find(&t) if err != nil { return nil, errors.InternalServer(reason.DatabaseError).WithError(err).WithStack() } - if exist { - activities = append(activities, t) + if len(t) > 0 { + activities = append(activities, t...) } } return activities, nil diff --git a/internal/service/activity/answer_activity_service.go b/internal/service/activity/answer_activity_service.go index daab2bf7..9785061a 100644 --- a/internal/service/activity/answer_activity_service.go +++ b/internal/service/activity/answer_activity_service.go @@ -34,6 +34,9 @@ func NewAnswerActivityService( // AcceptAnswer accept answer change activity func (as *AnswerActivityService) AcceptAnswer(ctx context.Context, loginUserID, answerObjID, questionObjID, questionUserID, answerUserID string, isSelf bool) (err error) { + log.Debugf("user %s want to accept answer %s[%s] for question %s[%s]", loginUserID, + answerObjID, answerUserID, + questionObjID, questionUserID) operationInfo := as.createAcceptAnswerOperationInfo(ctx, loginUserID, answerObjID, questionObjID, questionUserID, answerUserID, isSelf) return as.answerActivityRepo.SaveAcceptAnswerActivity(ctx, operationInfo)