diff --git a/docs/docs.go b/docs/docs.go
index 9de9e8fc..21f184bc 100644
--- a/docs/docs.go
+++ b/docs/docs.go
@@ -1294,7 +1294,7 @@ const docTemplate = `{
}
}
},
- "/answer/api/v1/answer/list": {
+ "/answer/api/v1/answer/page": {
"get": {
"security": [
{
@@ -1314,13 +1314,32 @@ const docTemplate = `{
"summary": "AnswerList",
"parameters": [
{
- "description": "AnswerListReq",
- "name": "data",
- "in": "body",
- "required": true,
- "schema": {
- "$ref": "#/definitions/schema.AnswerListReq"
- }
+ "type": "string",
+ "description": "question_id",
+ "name": "question_id",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "order",
+ "name": "order",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "page",
+ "name": "page",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "page_size",
+ "name": "page_size",
+ "in": "query",
+ "required": true
}
],
"responses": {
@@ -4875,27 +4894,6 @@ const docTemplate = `{
}
}
},
- "schema.AnswerListReq": {
- "type": "object",
- "properties": {
- "order": {
- "description": "1 Default 2 time",
- "type": "string"
- },
- "page": {
- "description": "Query number of pages",
- "type": "integer"
- },
- "page_size": {
- "description": "Search page size",
- "type": "integer"
- },
- "question_id": {
- "description": "question_id",
- "type": "string"
- }
- }
- },
"schema.AnswerUpdateReq": {
"type": "object",
"properties": {
diff --git a/docs/swagger.json b/docs/swagger.json
index b1eaec18..05fdf0af 100644
--- a/docs/swagger.json
+++ b/docs/swagger.json
@@ -1282,7 +1282,7 @@
}
}
},
- "/answer/api/v1/answer/list": {
+ "/answer/api/v1/answer/page": {
"get": {
"security": [
{
@@ -1302,13 +1302,32 @@
"summary": "AnswerList",
"parameters": [
{
- "description": "AnswerListReq",
- "name": "data",
- "in": "body",
- "required": true,
- "schema": {
- "$ref": "#/definitions/schema.AnswerListReq"
- }
+ "type": "string",
+ "description": "question_id",
+ "name": "question_id",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "order",
+ "name": "order",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "page",
+ "name": "page",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "page_size",
+ "name": "page_size",
+ "in": "query",
+ "required": true
}
],
"responses": {
@@ -4863,27 +4882,6 @@
}
}
},
- "schema.AnswerListReq": {
- "type": "object",
- "properties": {
- "order": {
- "description": "1 Default 2 time",
- "type": "string"
- },
- "page": {
- "description": "Query number of pages",
- "type": "integer"
- },
- "page_size": {
- "description": "Search page size",
- "type": "integer"
- },
- "question_id": {
- "description": "question_id",
- "type": "string"
- }
- }
- },
"schema.AnswerUpdateReq": {
"type": "object",
"properties": {
diff --git a/docs/swagger.yaml b/docs/swagger.yaml
index d32dd3d7..ae9e1bf8 100644
--- a/docs/swagger.yaml
+++ b/docs/swagger.yaml
@@ -206,21 +206,6 @@ definitions:
description: question_id
type: string
type: object
- schema.AnswerListReq:
- properties:
- order:
- description: 1 Default 2 time
- type: string
- page:
- description: Query number of pages
- type: integer
- page_size:
- description: Search page size
- type: integer
- question_id:
- description: question_id
- type: string
- type: object
schema.AnswerUpdateReq:
properties:
content:
@@ -2462,18 +2447,32 @@ paths:
summary: Get Answer
tags:
- api-answer
- /answer/api/v1/answer/list:
+ /answer/api/v1/answer/page:
get:
consumes:
- application/json
description: AnswerList
order (default or updated)
parameters:
- - description: AnswerListReq
- in: body
- name: data
+ - description: question_id
+ in: query
+ name: question_id
required: true
- schema:
- $ref: '#/definitions/schema.AnswerListReq'
+ type: string
+ - description: order
+ in: query
+ name: order
+ required: true
+ type: string
+ - description: page
+ in: query
+ name: page
+ required: true
+ type: string
+ - description: page_size
+ in: query
+ name: page_size
+ required: true
+ type: string
produces:
- application/json
responses:
diff --git a/internal/controller/answer_controller.go b/internal/controller/answer_controller.go
index 94105ba4..dddaeeb8 100644
--- a/internal/controller/answer_controller.go
+++ b/internal/controller/answer_controller.go
@@ -203,14 +203,18 @@ func (ac *AnswerController) Update(ctx *gin.Context) {
// @Security ApiKeyAuth
// @Accept json
// @Produce json
-// @Param data body schema.AnswerListReq true "AnswerListReq"
+// @Param question_id query string true "question_id"
+// @Param order query string true "order"
+// @Param page query string true "page"
+// @Param page_size query string true "page_size"
// @Success 200 {string} string ""
-// @Router /answer/api/v1/answer/list [get]
+// @Router /answer/api/v1/answer/page [get]
func (ac *AnswerController) AnswerList(ctx *gin.Context) {
req := &schema.AnswerListReq{}
if handler.BindAndCheck(ctx, req) {
return
}
+
req.UserID = middleware.GetLoginUserIDFromContext(ctx)
canList, err := ac.rankService.CheckOperationPermissions(ctx, req.UserID, []string{
diff --git a/internal/repo/question/question_repo.go b/internal/repo/question/question_repo.go
index 18da5594..82686fe5 100644
--- a/internal/repo/question/question_repo.go
+++ b/internal/repo/question/question_repo.go
@@ -230,7 +230,7 @@ func (qr *questionRepo) SearchList(ctx context.Context, search *schema.QuestionS
session = session.OrderBy("question.created_at desc")
}
session = session.Limit(search.PageSize, offset)
- session = session.Select("question.id,question.user_id,question.title,question.original_text,question.parsed_text,question.status,question.view_count,question.unique_view_count,question.vote_count,question.answer_count,question.collection_count,question.follow_count,question.accepted_answer_id,question.last_answer_id,question.created_at,question.updated_at,question.post_update_time,question.revision_id")
+ session = session.Select("question.id,question.user_id,last_edit_user_id,question.title,question.original_text,question.parsed_text,question.status,question.view_count,question.unique_view_count,question.vote_count,question.answer_count,question.collection_count,question.follow_count,question.accepted_answer_id,question.last_answer_id,question.created_at,question.updated_at,question.post_update_time,question.revision_id")
count, err = session.FindAndCount(&rows)
if err != nil {
err = errors.InternalServer(reason.DatabaseError).WithError(err).WithStack()
diff --git a/internal/service/answer_service.go b/internal/service/answer_service.go
index 26558c4b..8f688d4a 100644
--- a/internal/service/answer_service.go
+++ b/internal/service/answer_service.go
@@ -249,7 +249,7 @@ func (as *AnswerService) Update(ctx context.Context, req *schema.AnswerUpdateReq
if !canUpdate {
revisionDTO.Status = entity.RevisionUnreviewedStatus
} else {
- if err = as.answerRepo.UpdateAnswer(ctx, insertData, []string{"original_text", "parsed_text", "update_time"}); err != nil {
+ if err = as.answerRepo.UpdateAnswer(ctx, insertData, []string{"original_text", "parsed_text", "update_time", "last_edit_user_id"}); err != nil {
return "", err
}
err = as.questionCommon.UpdataPostTime(ctx, req.QuestionID)
@@ -370,13 +370,22 @@ func (as *AnswerService) Get(ctx context.Context, answerID, loginUserID string)
return nil, nil, has, err
}
// todo UserFunc
- userinfo, has, err := as.userCommon.GetUserBasicInfoByID(ctx, answerInfo.UserID)
+
+ userIds := make([]string, 0)
+ userIds = append(userIds, answerInfo.UserID)
+ userIds = append(userIds, answerInfo.LastEditUserID)
+ userInfoMap, err := as.userCommon.BatchUserBasicInfoByID(ctx, userIds)
if err != nil {
return nil, nil, has, err
}
- if has {
- info.UserInfo = userinfo
- info.UpdateUserInfo = userinfo
+
+ _, ok := userInfoMap[answerInfo.UserID]
+ if ok {
+ info.UserInfo = userInfoMap[answerInfo.UserID]
+ }
+ _, ok = userInfoMap[answerInfo.LastEditUserID]
+ if ok {
+ info.UpdateUserInfo = userInfoMap[answerInfo.LastEditUserID]
}
if loginUserID == "" {
@@ -389,7 +398,7 @@ func (as *AnswerService) Get(ctx context.Context, answerID, loginUserID string)
if err != nil {
log.Error("CollectionFunc.SearchObjectCollected error", err)
}
- _, ok := CollectedMap[answerInfo.ID]
+ _, ok = CollectedMap[answerInfo.ID]
if ok {
info.Collected = true
}
diff --git a/internal/service/question_common/question.go b/internal/service/question_common/question.go
index 645d1148..045b979d 100644
--- a/internal/service/question_common/question.go
+++ b/internal/service/question_common/question.go
@@ -184,14 +184,26 @@ func (qs *QuestionCommon) Info(ctx context.Context, questionID string, loginUser
}
showinfo.Tags = tagmap
- userinfo, has, err := qs.userCommon.GetUserBasicInfoByID(ctx, dbinfo.UserID)
+ userIds := make([]string, 0)
+ userIds = append(userIds, dbinfo.UserID)
+ userIds = append(userIds, dbinfo.LastEditUserID)
+ userIds = append(userIds, showinfo.LastAnsweredUserID)
+ userInfoMap, err := qs.userCommon.BatchUserBasicInfoByID(ctx, userIds)
if err != nil {
return showinfo, err
}
- if has {
- showinfo.UserInfo = userinfo
- showinfo.UpdateUserInfo = userinfo
- showinfo.LastAnsweredUserInfo = userinfo
+
+ _, ok := userInfoMap[dbinfo.UserID]
+ if ok {
+ showinfo.UserInfo = userInfoMap[dbinfo.UserID]
+ }
+ _, ok = userInfoMap[dbinfo.LastEditUserID]
+ if ok {
+ showinfo.UpdateUserInfo = userInfoMap[dbinfo.LastEditUserID]
+ }
+ _, ok = userInfoMap[showinfo.LastAnsweredUserID]
+ if ok {
+ showinfo.LastAnsweredUserInfo = userInfoMap[showinfo.LastAnsweredUserID]
}
if loginUserID == "" {
@@ -216,7 +228,7 @@ func (qs *QuestionCommon) Info(ctx context.Context, questionID string, loginUser
if err != nil {
log.Error("CollectionFunc.SearchObjectCollected", err)
}
- _, ok := CollectedMap[dbinfo.ID]
+ _, ok = CollectedMap[dbinfo.ID]
if ok {
showinfo.Collected = true
}
@@ -233,10 +245,9 @@ func (qs *QuestionCommon) ListFormat(ctx context.Context, questionList []*entity
item := qs.ShowListFormat(ctx, questionInfo)
list = append(list, item)
objectIds = append(objectIds, item.ID)
- userIds = append(userIds, questionInfo.UserID)
- userIds = append(userIds, questionInfo.LastEditUserID)
+ userIds = append(userIds, item.UserID)
+ userIds = append(userIds, item.LastEditUserID)
userIds = append(userIds, item.LastAnsweredUserID)
-
}
tagsMap, err := qs.tagCommon.BatchGetObjectTag(ctx, objectIds)
if err != nil {
@@ -256,11 +267,10 @@ func (qs *QuestionCommon) ListFormat(ctx context.Context, questionList []*entity
_, ok = userInfoMap[item.UserID]
if ok {
item.UserInfo = userInfoMap[item.UserID]
- item.UpdateUserInfo = userInfoMap[item.UserID]
}
_, ok = userInfoMap[item.LastEditUserID]
if ok {
- item.UpdateUserInfo = userInfoMap[item.UserID]
+ item.UpdateUserInfo = userInfoMap[item.LastEditUserID]
}
_, ok = userInfoMap[item.LastAnsweredUserID]
if ok {