This is an automated email from the ASF dual-hosted git repository.
linkinstar pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/answer.git
The following commit(s) were added to refs/heads/dev by this push:
new fc2a1d8a fix(answer): update QuestionID handling in answer update
process
fc2a1d8a is described below
commit fc2a1d8afeb86602215d831c2767c2a1a56f30a2
Author: LinkinStars <[email protected]>
AuthorDate: Fri Nov 28 10:49:10 2025 +0800
fix(answer): update QuestionID handling in answer update process
---
internal/controller/answer_controller.go | 1 -
internal/schema/answer_schema.go | 1 -
internal/service/content/answer_service.go | 19 +++++++++----------
3 files changed, 9 insertions(+), 12 deletions(-)
diff --git a/internal/controller/answer_controller.go
b/internal/controller/answer_controller.go
index 7c5aca1d..0e43121c 100644
--- a/internal/controller/answer_controller.go
+++ b/internal/controller/answer_controller.go
@@ -318,7 +318,6 @@ func (ac *AnswerController) UpdateAnswer(ctx *gin.Context) {
handler.HandleResponse(ctx, err, nil)
return
}
- req.QuestionID = uid.DeShortID(req.QuestionID)
linkUrlLimitUser := canList[2]
isAdmin := middleware.GetUserIsAdminModerator(ctx)
if !isAdmin || !linkUrlLimitUser {
diff --git a/internal/schema/answer_schema.go b/internal/schema/answer_schema.go
index 015e26ac..9ac4bcad 100644
--- a/internal/schema/answer_schema.go
+++ b/internal/schema/answer_schema.go
@@ -78,7 +78,6 @@ type GetAnswerInfoResp struct {
type AnswerUpdateReq struct {
ID string `json:"id"`
- QuestionID string `json:"question_id"`
Title string `json:"title"`
Content string `validate:"required,notblank,gte=6,lte=65535"
json:"content"`
EditSummary string `validate:"omitempty" json:"edit_summary"`
diff --git a/internal/service/content/answer_service.go
b/internal/service/content/answer_service.go
index b9d45b52..982bbf88 100644
--- a/internal/service/content/answer_service.go
+++ b/internal/service/content/answer_service.go
@@ -346,24 +346,23 @@ func (as *AnswerService) Update(ctx context.Context, req
*schema.AnswerUpdateReq
return "", errors.BadRequest(reason.AnswerCannotUpdate)
}
- questionInfo, exist, err := as.questionRepo.GetQuestion(ctx,
req.QuestionID)
+ answerInfo, exist, err := as.answerRepo.GetByID(ctx, req.ID)
if err != nil {
return "", err
}
if !exist {
- return "", errors.BadRequest(reason.QuestionNotFound)
+ return "", errors.BadRequest(reason.AnswerNotFound)
+ }
+ if answerInfo.Status == entity.AnswerStatusDeleted {
+ return "", errors.BadRequest(reason.AnswerCannotUpdate)
}
- answerInfo, exist, err := as.answerRepo.GetByID(ctx, req.ID)
+ questionInfo, exist, err := as.questionRepo.GetQuestion(ctx,
answerInfo.QuestionID)
if err != nil {
return "", err
}
if !exist {
- return "", errors.BadRequest(reason.AnswerNotFound)
- }
-
- if answerInfo.Status == entity.AnswerStatusDeleted {
- return "", errors.BadRequest(reason.AnswerCannotUpdate)
+ return "", errors.BadRequest(reason.QuestionNotFound)
}
//If the content is the same, ignore it
@@ -374,7 +373,7 @@ func (as *AnswerService) Update(ctx context.Context, req
*schema.AnswerUpdateReq
insertData := &entity.Answer{}
insertData.ID = req.ID
insertData.UserID = answerInfo.UserID
- insertData.QuestionID = req.QuestionID
+ insertData.QuestionID = questionInfo.ID
insertData.OriginalText = req.Content
insertData.ParsedText = req.HTML
insertData.UpdatedAt = time.Now()
@@ -403,7 +402,7 @@ func (as *AnswerService) Update(ctx context.Context, req
*schema.AnswerUpdateReq
if err = as.answerRepo.UpdateAnswer(ctx, insertData,
[]string{"original_text", "parsed_text", "updated_at", "last_edit_user_id"});
err != nil {
return "", err
}
- err = as.questionCommon.UpdatePostTime(ctx, req.QuestionID)
+ err = as.questionCommon.UpdatePostTime(ctx, questionInfo.ID)
if err != nil {
return insertData.ID, err
}