diff --git a/internal/controller/answer_controller.go b/internal/controller/answer_controller.go index b2c8225b..8e4ca92d 100644 --- a/internal/controller/answer_controller.go +++ b/internal/controller/answer_controller.go @@ -11,6 +11,7 @@ import ( "github.com/answerdev/answer/internal/service/dashboard" "github.com/answerdev/answer/internal/service/permission" "github.com/answerdev/answer/internal/service/rank" + "github.com/answerdev/answer/pkg/uid" "github.com/gin-gonic/gin" "github.com/segmentfault/pacman/errors" ) @@ -49,7 +50,7 @@ func (ac *AnswerController) RemoveAnswer(ctx *gin.Context) { if handler.BindAndCheck(ctx, req) { return } - + req.ID = uid.DeShortID(req.ID) req.UserID = middleware.GetLoginUserIDFromContext(ctx) req.IsAdmin = middleware.GetIsAdminFromContext(ctx) can, err := ac.rankService.CheckOperationPermission(ctx, req.UserID, permission.AnswerDelete, req.ID) diff --git a/internal/controller/question_controller.go b/internal/controller/question_controller.go index dd0ee9ac..80f4b7df 100644 --- a/internal/controller/question_controller.go +++ b/internal/controller/question_controller.go @@ -12,6 +12,7 @@ import ( "github.com/answerdev/answer/internal/service/permission" "github.com/answerdev/answer/internal/service/rank" "github.com/answerdev/answer/pkg/converter" + "github.com/answerdev/answer/pkg/uid" "github.com/gin-gonic/gin" "github.com/segmentfault/pacman/errors" ) @@ -42,6 +43,7 @@ func (qc *QuestionController) RemoveQuestion(ctx *gin.Context) { if handler.BindAndCheck(ctx, req) { return } + req.ID = uid.DeShortID(req.ID) req.UserID = middleware.GetLoginUserIDFromContext(ctx) req.IsAdmin = middleware.GetIsAdminFromContext(ctx) can, err := qc.rankService.CheckOperationPermission(ctx, req.UserID, permission.QuestionDelete, req.ID) diff --git a/internal/controller/template_controller.go b/internal/controller/template_controller.go index 0ccd5ad3..1b1879e6 100644 --- a/internal/controller/template_controller.go +++ b/internal/controller/template_controller.go @@ -17,6 +17,7 @@ import ( "github.com/answerdev/answer/pkg/converter" "github.com/answerdev/answer/pkg/htmltext" "github.com/answerdev/answer/pkg/obj" + "github.com/answerdev/answer/pkg/uid" "github.com/answerdev/answer/ui" "github.com/gin-gonic/gin" "github.com/segmentfault/pacman/log" @@ -160,19 +161,21 @@ func (tc *TemplateController) QuestionInfoeRdirect(ctx *gin.Context, siteInfo *s title := ctx.Param("title") titleIsAnswerID := false - objectType, objectTypeerr := obj.GetObjectTypeStrByObjectID(title) + objectType, objectTypeerr := obj.GetObjectTypeStrByObjectID(uid.DeShortID(title)) if objectTypeerr == nil { if objectType == constant.AnswerObjectType { titleIsAnswerID = true } } - url = fmt.Sprintf("%s/questions/%s", siteInfo.General.SiteUrl, id) if siteInfo.SiteSeo.PermaLink == schema.PermaLinkQuestionID { //not have title if titleIsAnswerID || len(title) == 0 { return false, "" } + if len(ctx.Request.URL.Query()) > 0 { + url = fmt.Sprintf("%s?%s", url, ctx.Request.URL.RawQuery) + } return true, url } else { //have title @@ -188,6 +191,10 @@ func (tc *TemplateController) QuestionInfoeRdirect(ctx *gin.Context, siteInfo *s if titleIsAnswerID { url = fmt.Sprintf("%s/%s", url, title) } + + if len(ctx.Request.URL.Query()) > 0 { + url = fmt.Sprintf("%s?%s", url, ctx.Request.URL.RawQuery) + } return true, url } }