Skip to content

Commit 28cc744

Browse files
committed
Merge remote-tracking branch 'github/hot-fix/1.1.0' into github-main
2 parents d4b6130 + 82324f5 commit 28cc744

File tree

5 files changed

+56
-17
lines changed

5 files changed

+56
-17
lines changed

internal/repo/answer/answer_repo.go

+24-1
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,25 @@ func (ar *answerRepo) GetByID(ctx context.Context, id string) (*entity.Answer, b
196196
return &resp, has, nil
197197
}
198198

199+
func (ar *answerRepo) GetCountByQuestionID(ctx context.Context, questionID string) (int64, error) {
200+
questionID = uid.DeShortID(questionID)
201+
rows := make([]*entity.Answer, 0)
202+
count, err := ar.data.DB.Context(ctx).Where("question_id =? and status = ?", questionID, entity.AnswerStatusAvailable).FindAndCount(&rows)
203+
if err != nil {
204+
return count, errors.InternalServer(reason.DatabaseError).WithError(err).WithStack()
205+
}
206+
return count, nil
207+
}
208+
209+
func (ar *answerRepo) GetCountByUserID(ctx context.Context, userID string) (int64, error) {
210+
rows := make([]*entity.Answer, 0)
211+
count, err := ar.data.DB.Context(ctx).Where(" user_id = ? and status = ?", userID, entity.AnswerStatusAvailable).FindAndCount(&rows)
212+
if err != nil {
213+
return count, errors.InternalServer(reason.DatabaseError).WithError(err).WithStack()
214+
}
215+
return count, nil
216+
}
217+
199218
func (ar *answerRepo) GetByUserIDQuestionID(ctx context.Context, userID string, questionID string) (*entity.Answer, bool, error) {
200219
questionID = uid.DeShortID(questionID)
201220
var resp entity.Answer
@@ -243,7 +262,11 @@ func (ar *answerRepo) SearchList(ctx context.Context, search *entity.AnswerSearc
243262
session = session.OrderBy("adopted desc,vote_count desc,created_at asc")
244263
}
245264
if !search.IncludeDeleted {
246-
session = session.And("status = ? OR user_id = ?", entity.AnswerStatusAvailable, search.LoginUserID)
265+
if search.LoginUserID == "" {
266+
session = session.And("status = ? ", entity.AnswerStatusAvailable)
267+
} else {
268+
session = session.And("status = ? OR user_id = ?", entity.AnswerStatusAvailable, search.LoginUserID)
269+
}
247270
}
248271

249272
session = session.Limit(search.PageSize, offset)

internal/repo/question/question_repo.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,8 @@ func (qr *questionRepo) UpdatePvCount(ctx context.Context, questionID string) (e
8888
func (qr *questionRepo) UpdateAnswerCount(ctx context.Context, questionID string, num int) (err error) {
8989
questionID = uid.DeShortID(questionID)
9090
question := &entity.Question{}
91-
_, err = qr.data.DB.Context(ctx).Where("id =?", questionID).Incr("answer_count", num).Update(question)
91+
question.AnswerCount = num
92+
_, err = qr.data.DB.Context(ctx).Where("id =?", questionID).Cols("answer_count").Update(question)
9293
if err != nil {
9394
return errors.InternalServer(reason.DatabaseError).WithError(err).WithStack()
9495
}

internal/service/answer_common/answer.go

+2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ type AnswerRepo interface {
1717
GetAnswerPage(ctx context.Context, page, pageSize int, answer *entity.Answer) (answerList []*entity.Answer, total int64, err error)
1818
UpdateAccepted(ctx context.Context, id string, questionID string) error
1919
GetByID(ctx context.Context, id string) (*entity.Answer, bool, error)
20+
GetCountByQuestionID(ctx context.Context, questionID string) (int64, error)
21+
GetCountByUserID(ctx context.Context, userID string) (int64, error)
2022
GetByUserIDQuestionID(ctx context.Context, userID string, questionID string) (*entity.Answer, bool, error)
2123
SearchList(ctx context.Context, search *entity.AnswerSearch) ([]*entity.Answer, int64, error)
2224
AdminSearchList(ctx context.Context, search *entity.AdminAnswerSearch) ([]*entity.Answer, int64, error)

internal/service/answer_service.go

+16-10
Original file line numberDiff line numberDiff line change
@@ -112,20 +112,23 @@ func (as *AnswerService) RemoveAnswer(ctx context.Context, req *schema.RemoveAns
112112

113113
}
114114

115+
err = as.answerRepo.RemoveAnswer(ctx, req.ID)
116+
if err != nil {
117+
return err
118+
}
119+
115120
// user add question count
116-
err = as.questionCommon.UpdateAnswerCount(ctx, answerInfo.QuestionID, -1)
121+
err = as.questionCommon.UpdateAnswerCount(ctx, answerInfo.QuestionID)
117122
if err != nil {
118123
log.Error("IncreaseAnswerCount error", err.Error())
119124
}
120-
121-
err = as.userCommon.UpdateAnswerCount(ctx, answerInfo.UserID, -1)
125+
userAnswerCount, err := as.answerRepo.GetCountByUserID(ctx, answerInfo.UserID)
122126
if err != nil {
123-
log.Error("user IncreaseAnswerCount error", err.Error())
127+
log.Error("GetCountByUserID error", err.Error())
124128
}
125-
126-
err = as.answerRepo.RemoveAnswer(ctx, req.ID)
129+
err = as.userCommon.UpdateAnswerCount(ctx, answerInfo.UserID, int(userAnswerCount))
127130
if err != nil {
128-
return err
131+
log.Error("user IncreaseAnswerCount error", err.Error())
129132
}
130133
// #2372 In order to simplify the process and complexity, as well as to consider if it is in-house,
131134
// facing the problem of recovery.
@@ -167,7 +170,7 @@ func (as *AnswerService) Insert(ctx context.Context, req *schema.AnswerAddReq) (
167170
if err = as.answerRepo.AddAnswer(ctx, insertData); err != nil {
168171
return "", err
169172
}
170-
err = as.questionCommon.UpdateAnswerCount(ctx, req.QuestionID, 1)
173+
err = as.questionCommon.UpdateAnswerCount(ctx, req.QuestionID)
171174
if err != nil {
172175
log.Error("IncreaseAnswerCount error", err.Error())
173176
}
@@ -179,8 +182,11 @@ func (as *AnswerService) Insert(ctx context.Context, req *schema.AnswerAddReq) (
179182
if err != nil {
180183
return insertData.ID, err
181184
}
182-
183-
err = as.userCommon.UpdateAnswerCount(ctx, req.UserID, 1)
185+
userAnswerCount, err := as.answerRepo.GetCountByUserID(ctx, req.UserID)
186+
if err != nil {
187+
log.Error("GetCountByUserID error", err.Error())
188+
}
189+
err = as.userCommon.UpdateAnswerCount(ctx, req.UserID, int(userAnswerCount))
184190
if err != nil {
185191
log.Error("user IncreaseAnswerCount error", err.Error())
186192
}

internal/service/question_common/question.go

+12-5
Original file line numberDiff line numberDiff line change
@@ -99,8 +99,12 @@ func (qs *QuestionCommon) UpdatePv(ctx context.Context, questionID string) error
9999
return qs.questionRepo.UpdatePvCount(ctx, questionID)
100100
}
101101

102-
func (qs *QuestionCommon) UpdateAnswerCount(ctx context.Context, questionID string, num int) error {
103-
return qs.questionRepo.UpdateAnswerCount(ctx, questionID, num)
102+
func (qs *QuestionCommon) UpdateAnswerCount(ctx context.Context, questionID string) error {
103+
count, err := qs.answerRepo.GetCountByQuestionID(ctx, questionID)
104+
if err != nil {
105+
return err
106+
}
107+
return qs.questionRepo.UpdateAnswerCount(ctx, questionID, int(count))
104108
}
105109

106110
func (qs *QuestionCommon) UpdateCollectionCount(ctx context.Context, questionID string, num int) error {
@@ -523,12 +527,15 @@ func (as *QuestionCommon) RemoveAnswer(ctx context.Context, id string) (err erro
523527

524528
// user add question count
525529

526-
err = as.UpdateAnswerCount(ctx, answerinfo.QuestionID, -1)
530+
err = as.UpdateAnswerCount(ctx, answerinfo.QuestionID)
527531
if err != nil {
528532
log.Error("UpdateAnswerCount error", err.Error())
529533
}
530-
531-
err = as.userCommon.UpdateAnswerCount(ctx, answerinfo.UserID, -1)
534+
userAnswerCount, err := as.answerRepo.GetCountByUserID(ctx, answerinfo.UserID)
535+
if err != nil {
536+
log.Error("GetCountByUserID error", err.Error())
537+
}
538+
err = as.userCommon.UpdateAnswerCount(ctx, answerinfo.UserID, int(userAnswerCount))
532539
if err != nil {
533540
log.Error("user UpdateAnswerCount error", err.Error())
534541
}

0 commit comments

Comments
 (0)