mirror of https://gitee.com/answerdev/answer.git
fix(answer): fix incorrect id for answer list
This commit is contained in:
parent
79b71d41e4
commit
3d032a7f48
|
@ -2,9 +2,9 @@ package collection
|
|||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/answerdev/answer/internal/base/constant"
|
||||
"github.com/answerdev/answer/internal/base/data"
|
||||
"github.com/answerdev/answer/internal/base/handler"
|
||||
"github.com/answerdev/answer/internal/base/pager"
|
||||
"github.com/answerdev/answer/internal/base/reason"
|
||||
"github.com/answerdev/answer/internal/entity"
|
||||
|
@ -142,25 +142,32 @@ func (cr *collectionRepo) GetCollectionPage(ctx context.Context, page, pageSize
|
|||
session = session.OrderBy("update_time desc")
|
||||
|
||||
total, err = pager.Help(page, pageSize, collectionList, collection, session)
|
||||
err = errors.InternalServer(reason.DatabaseError).WithError(err).WithStack()
|
||||
if err != nil {
|
||||
err = errors.InternalServer(reason.DatabaseError).WithError(err).WithStack()
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// SearchObjectCollected check object is collected or not
|
||||
func (cr *collectionRepo) SearchObjectCollected(ctx context.Context, userID string, objectIds []string) (map[string]bool, error) {
|
||||
collectedMap := make(map[string]bool)
|
||||
for k, object_id := range objectIds {
|
||||
objectIds[k] = uid.DeShortID(object_id)
|
||||
for i := 0; i < len(objectIds); i++ {
|
||||
objectIds[i] = uid.DeShortID(objectIds[i])
|
||||
}
|
||||
|
||||
list, err := cr.SearchByObjectIDsAndUser(ctx, userID, objectIds)
|
||||
if err != nil {
|
||||
err = errors.InternalServer(reason.DatabaseError).WithError(err).WithStack()
|
||||
return collectedMap, err
|
||||
return nil, errors.InternalServer(reason.DatabaseError).WithError(err).WithStack()
|
||||
}
|
||||
|
||||
collectedMap := make(map[string]bool)
|
||||
short := handler.GetEnableShortID(ctx)
|
||||
for _, item := range list {
|
||||
if short {
|
||||
item.ObjectID = uid.EnShortID(item.ObjectID)
|
||||
}
|
||||
collectedMap[item.ObjectID] = true
|
||||
}
|
||||
return collectedMap, err
|
||||
return collectedMap, nil
|
||||
}
|
||||
|
||||
// SearchList
|
||||
|
|
|
@ -83,6 +83,7 @@ func (as *AnswerCommon) ShowFormat(ctx context.Context, data *entity.Answer) *sc
|
|||
info.UserID = data.UserID
|
||||
info.UpdateUserID = data.LastEditUserID
|
||||
info.Status = data.Status
|
||||
info.MemberActions = make([]*schema.PermissionMemberAction, 0)
|
||||
return &info
|
||||
}
|
||||
|
||||
|
|
|
@ -427,12 +427,11 @@ func (as *AnswerService) Get(ctx context.Context, answerID, loginUserID string)
|
|||
|
||||
info.VoteStatus = as.voteRepo.GetVoteStatus(ctx, answerID, loginUserID)
|
||||
|
||||
CollectedMap, err := as.collectionCommon.SearchObjectCollected(ctx, loginUserID, []string{answerInfo.ID})
|
||||
collectedMap, err := as.collectionCommon.SearchObjectCollected(ctx, loginUserID, []string{answerInfo.ID})
|
||||
if err != nil {
|
||||
log.Error("CollectionFunc.SearchObjectCollected error", err)
|
||||
return nil, nil, has, err
|
||||
}
|
||||
_, ok = CollectedMap[answerInfo.ID]
|
||||
if ok {
|
||||
if len(collectedMap) > 0 {
|
||||
info.Collected = true
|
||||
}
|
||||
|
||||
|
@ -513,46 +512,28 @@ func (as *AnswerService) SearchFormatInfo(ctx context.Context, answers []*entity
|
|||
item := as.ShowFormat(ctx, info)
|
||||
list = append(list, item)
|
||||
objectIDs = append(objectIDs, info.ID)
|
||||
userIDs = append(userIDs, info.UserID)
|
||||
userIDs = append(userIDs, info.LastEditUserID)
|
||||
if req.UserID != "" {
|
||||
item.ID = uid.DeShortID(item.ID)
|
||||
item.VoteStatus = as.voteRepo.GetVoteStatus(ctx, item.ID, req.UserID)
|
||||
}
|
||||
userIDs = append(userIDs, info.UserID, info.LastEditUserID)
|
||||
}
|
||||
|
||||
userInfoMap, err := as.userCommon.BatchUserBasicInfoByID(ctx, userIDs)
|
||||
if err != nil {
|
||||
return list, err
|
||||
}
|
||||
for _, item := range list {
|
||||
_, ok := userInfoMap[item.UserID]
|
||||
if ok {
|
||||
item.UserInfo = userInfoMap[item.UserID]
|
||||
}
|
||||
_, ok = userInfoMap[item.UpdateUserID]
|
||||
if ok {
|
||||
item.UpdateUserInfo = userInfoMap[item.UpdateUserID]
|
||||
}
|
||||
item.UserInfo = userInfoMap[item.UserID]
|
||||
item.UpdateUserInfo = userInfoMap[item.UpdateUserID]
|
||||
}
|
||||
|
||||
if req.UserID == "" {
|
||||
if len(req.UserID) == 0 {
|
||||
return list, nil
|
||||
}
|
||||
|
||||
searchObjectCollected, err := as.collectionCommon.SearchObjectCollected(ctx, req.UserID, objectIDs)
|
||||
collectedMap, err := as.collectionCommon.SearchObjectCollected(ctx, req.UserID, objectIDs)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
for _, item := range list {
|
||||
_, ok := searchObjectCollected[item.ID]
|
||||
if ok {
|
||||
item.Collected = true
|
||||
}
|
||||
}
|
||||
|
||||
for _, item := range list {
|
||||
item.ID = uid.EnShortID(item.ID)
|
||||
item.VoteStatus = as.voteRepo.GetVoteStatus(ctx, item.ID, req.UserID)
|
||||
item.Collected = collectedMap[item.ID]
|
||||
item.MemberActions = permission.GetAnswerPermission(ctx, req.UserID, item.UserID, req.CanEdit, req.CanDelete)
|
||||
}
|
||||
return list, nil
|
||||
|
|
|
@ -282,17 +282,13 @@ func (qs *QuestionCommon) Info(ctx context.Context, questionID string, loginUser
|
|||
}
|
||||
showinfo.Answered = has
|
||||
|
||||
// login user Collected information
|
||||
|
||||
CollectedMap, err := qs.collectionCommon.SearchObjectCollected(ctx, loginUserID, []string{dbinfo.ID})
|
||||
collectedMap, err := qs.collectionCommon.SearchObjectCollected(ctx, loginUserID, []string{dbinfo.ID})
|
||||
if err != nil {
|
||||
log.Error("CollectionFunc.SearchObjectCollected", err)
|
||||
return nil, err
|
||||
}
|
||||
_, ok = CollectedMap[dbinfo.ID]
|
||||
if ok {
|
||||
if len(collectedMap) > 0 {
|
||||
showinfo.Collected = true
|
||||
}
|
||||
|
||||
return showinfo, nil
|
||||
}
|
||||
|
||||
|
@ -406,9 +402,7 @@ func (qs *QuestionCommon) FormatQuestions(ctx context.Context, questionList []*e
|
|||
item := qs.ShowFormat(ctx, questionInfo)
|
||||
list = append(list, item)
|
||||
objectIds = append(objectIds, item.ID)
|
||||
userIds = append(userIds, item.UserID)
|
||||
userIds = append(userIds, item.LastEditUserID)
|
||||
userIds = append(userIds, item.LastAnsweredUserID)
|
||||
userIds = append(userIds, item.UserID, item.LastEditUserID, item.LastAnsweredUserID)
|
||||
}
|
||||
tagsMap, err := qs.tagCommon.BatchGetObjectTag(ctx, objectIds)
|
||||
if err != nil {
|
||||
|
@ -421,38 +415,21 @@ func (qs *QuestionCommon) FormatQuestions(ctx context.Context, questionList []*e
|
|||
}
|
||||
|
||||
for _, item := range list {
|
||||
_, ok := tagsMap[item.ID]
|
||||
if ok {
|
||||
item.Tags = tagsMap[item.ID]
|
||||
}
|
||||
_, ok = userInfoMap[item.UserID]
|
||||
if ok {
|
||||
item.UserInfo = userInfoMap[item.UserID]
|
||||
}
|
||||
_, ok = userInfoMap[item.LastEditUserID]
|
||||
if ok {
|
||||
item.UpdateUserInfo = userInfoMap[item.LastEditUserID]
|
||||
}
|
||||
_, ok = userInfoMap[item.LastAnsweredUserID]
|
||||
if ok {
|
||||
item.LastAnsweredUserInfo = userInfoMap[item.LastAnsweredUserID]
|
||||
}
|
||||
item.Tags = tagsMap[item.ID]
|
||||
item.UserInfo = userInfoMap[item.UserID]
|
||||
item.UpdateUserInfo = userInfoMap[item.LastEditUserID]
|
||||
item.LastAnsweredUserInfo = userInfoMap[item.LastAnsweredUserID]
|
||||
}
|
||||
|
||||
if loginUserID == "" {
|
||||
return list, nil
|
||||
}
|
||||
// //login user Collected information
|
||||
CollectedMap, err := qs.collectionCommon.SearchObjectCollected(ctx, loginUserID, objectIds)
|
||||
if err != nil {
|
||||
log.Error("CollectionFunc.SearchObjectCollected", err)
|
||||
}
|
||||
|
||||
collectedMap, err := qs.collectionCommon.SearchObjectCollected(ctx, loginUserID, objectIds)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
for _, item := range list {
|
||||
_, ok := CollectedMap[item.ID]
|
||||
if ok {
|
||||
item.Collected = true
|
||||
}
|
||||
item.Collected = collectedMap[item.ID]
|
||||
}
|
||||
return list, nil
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue