diff --git a/docs/docs.go b/docs/docs.go index bc8ed53a..c720de0e 100644 --- a/docs/docs.go +++ b/docs/docs.go @@ -5835,6 +5835,10 @@ const docTemplate = `{ "title": { "description": "title", "type": "string" + }, + "url_title": { + "description": "url title", + "type": "string" } } }, @@ -6082,6 +6086,10 @@ const docTemplate = `{ "title": { "description": "title", "type": "string" + }, + "url_title": { + "description": "url title", + "type": "string" } } }, @@ -6661,6 +6669,10 @@ const docTemplate = `{ "description": "title", "type": "string" }, + "url_title": { + "description": "url title", + "type": "string" + }, "vote_type": { "description": "vote type", "type": "string" @@ -7324,7 +7336,7 @@ const docTemplate = `{ "properties": { "permalink": { "type": "integer", - "maximum": 3, + "maximum": 4, "minimum": 0 }, "robots": { @@ -7341,7 +7353,7 @@ const docTemplate = `{ "properties": { "permalink": { "type": "integer", - "maximum": 3, + "maximum": 4, "minimum": 0 }, "robots": { diff --git a/docs/swagger.json b/docs/swagger.json index bdca4f97..0729c0ec 100644 --- a/docs/swagger.json +++ b/docs/swagger.json @@ -5823,6 +5823,10 @@ "title": { "description": "title", "type": "string" + }, + "url_title": { + "description": "url title", + "type": "string" } } }, @@ -6070,6 +6074,10 @@ "title": { "description": "title", "type": "string" + }, + "url_title": { + "description": "url title", + "type": "string" } } }, @@ -6649,6 +6657,10 @@ "description": "title", "type": "string" }, + "url_title": { + "description": "url title", + "type": "string" + }, "vote_type": { "description": "vote type", "type": "string" @@ -7312,7 +7324,7 @@ "properties": { "permalink": { "type": "integer", - "maximum": 3, + "maximum": 4, "minimum": 0 }, "robots": { @@ -7329,7 +7341,7 @@ "properties": { "permalink": { "type": "integer", - "maximum": 3, + "maximum": 4, "minimum": 0 }, "robots": { diff --git a/docs/swagger.yaml b/docs/swagger.yaml index 266a32f5..529bd7c3 100644 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -356,6 +356,9 @@ definitions: title: description: title type: string + url_title: + description: url title + type: string type: object schema.GetCommentResp: properties: @@ -538,6 +541,9 @@ definitions: title: description: title type: string + url_title: + description: url title + type: string type: object schema.GetReportTypeResp: properties: @@ -956,6 +962,9 @@ definitions: title: description: title type: string + url_title: + description: url title + type: string vote_type: description: vote type type: string @@ -1412,7 +1421,7 @@ definitions: schema.SiteSeoReq: properties: permalink: - maximum: 3 + maximum: 4 minimum: 0 type: integer robots: @@ -1424,7 +1433,7 @@ definitions: schema.SiteSeoResp: properties: permalink: - maximum: 3 + maximum: 4 minimum: 0 type: integer robots: diff --git a/internal/schema/comment_schema.go b/internal/schema/comment_schema.go index 5b045a07..4d64cf01 100644 --- a/internal/schema/comment_schema.go +++ b/internal/schema/comment_schema.go @@ -198,6 +198,8 @@ type GetCommentPersonalWithPageResp struct { ObjectType string `json:"object_type" enums:"question,answer,tag,comment"` // title Title string `json:"title"` + // url title + UrlTitle string `json:"url_title"` // content Content string `json:"content"` } diff --git a/internal/schema/question_schema.go b/internal/schema/question_schema.go index b0101141..c743577b 100644 --- a/internal/schema/question_schema.go +++ b/internal/schema/question_schema.go @@ -215,14 +215,16 @@ type UserAnswerInfo struct { CreateTime int `json:"create_time"` UpdateTime int `json:"update_time"` QuestionInfo struct { - Title string `json:"title"` - Tags []interface{} `json:"tags"` + Title string `json:"title"` + UrlTitle string `json:"url_title"` + Tags []interface{} `json:"tags"` } `json:"question_info"` } type UserQuestionInfo struct { ID string `json:"question_id"` Title string `json:"title"` + UrlTitle string `json:"url_title"` VoteCount int `json:"vote_count"` Tags []interface{} `json:"tags"` ViewCount int `json:"view_count"` diff --git a/internal/schema/rank_schema.go b/internal/schema/rank_schema.go index 81505c82..b09eb66b 100644 --- a/internal/schema/rank_schema.go +++ b/internal/schema/rank_schema.go @@ -26,6 +26,8 @@ type GetRankPersonalWithPageResp struct { ObjectType string `json:"object_type" enums:"question,answer,tag,comment"` // title Title string `json:"title"` + // url title + UrlTitle string `json:"url_title"` // content Content string `json:"content"` // reputation diff --git a/internal/schema/siteinfo_schema.go b/internal/schema/siteinfo_schema.go index 9754b08e..e8b7c233 100644 --- a/internal/schema/siteinfo_schema.go +++ b/internal/schema/siteinfo_schema.go @@ -28,7 +28,7 @@ type SiteGeneralReq struct { } type SiteSeoReq struct { - PermaLink int `validate:"required,lte=3,gte=0" form:"permalink" json:"permalink"` + PermaLink int `validate:"required,lte=4,gte=0" form:"permalink" json:"permalink"` Robots string `validate:"required" form:"robots" json:"robots"` } diff --git a/internal/schema/vote_schema.go b/internal/schema/vote_schema.go index 8a17666f..4cb86c66 100644 --- a/internal/schema/vote_schema.go +++ b/internal/schema/vote_schema.go @@ -60,6 +60,8 @@ type GetVoteWithPageResp struct { ObjectType string `json:"object_type" enums:"question,answer,tag,comment"` // title Title string `json:"title"` + // url title + UrlTitle string `json:"url_title"` // content Content string `json:"content"` // vote type diff --git a/internal/service/comment/comment_service.go b/internal/service/comment/comment_service.go index 30527cb5..38595229 100644 --- a/internal/service/comment/comment_service.go +++ b/internal/service/comment/comment_service.go @@ -18,7 +18,9 @@ import ( "github.com/answerdev/answer/internal/service/permission" usercommon "github.com/answerdev/answer/internal/service/user_common" "github.com/answerdev/answer/pkg/encryption" + "github.com/answerdev/answer/pkg/htmltext" "github.com/answerdev/answer/pkg/uid" + "github.com/davecgh/go-spew/spew" "github.com/jinzhu/copier" "github.com/segmentfault/pacman/errors" "github.com/segmentfault/pacman/log" @@ -446,8 +448,10 @@ func (cs *CommentService) GetCommentPersonalWithPage(ctx context.Context, req *s if err != nil { log.Error(err) } else { + spew.Dump("==", objInfo) commentResp.ObjectType = objInfo.ObjectType commentResp.Title = objInfo.Title + commentResp.UrlTitle = htmltext.UrlTitle(objInfo.Title) commentResp.QuestionID = objInfo.QuestionID commentResp.AnswerID = objInfo.AnswerID } diff --git a/internal/service/question_service.go b/internal/service/question_service.go index 0971a9d5..3f293e39 100644 --- a/internal/service/question_service.go +++ b/internal/service/question_service.go @@ -770,13 +770,13 @@ func (qs *QuestionService) SearchUserCollectionList(ctx context.Context, page, p return list, count, err } for _, id := range questionIDs { - _, ok := questionMaps[id] + _, ok := questionMaps[uid.EnShortID(id)] if ok { - questionMaps[id].LastAnsweredUserInfo = nil - questionMaps[id].UpdateUserInfo = nil - questionMaps[id].Content = "" - questionMaps[id].HTML = "" - list = append(list, questionMaps[id]) + questionMaps[uid.EnShortID(id)].LastAnsweredUserInfo = nil + questionMaps[uid.EnShortID(id)].UpdateUserInfo = nil + questionMaps[uid.EnShortID(id)].Content = "" + questionMaps[uid.EnShortID(id)].HTML = "" + list = append(list, questionMaps[uid.EnShortID(id)]) } } @@ -834,6 +834,7 @@ func (qs *QuestionService) SearchUserTopList(ctx context.Context, userName strin for _, item := range questionlist { info := &schema.UserQuestionInfo{} _ = copier.Copy(info, item) + info.UrlTitle = htmltext.UrlTitle(info.Title) userQuestionlist = append(userQuestionlist, info) } @@ -842,6 +843,7 @@ func (qs *QuestionService) SearchUserTopList(ctx context.Context, userName strin _ = copier.Copy(info, item) info.AnswerID = item.ID info.QuestionID = item.QuestionID + info.QuestionInfo.UrlTitle = htmltext.UrlTitle(info.QuestionInfo.Title) userAnswerlist = append(userAnswerlist, info) } diff --git a/internal/service/rank/rank_service.go b/internal/service/rank/rank_service.go index 111924e9..dac7df20 100644 --- a/internal/service/rank/rank_service.go +++ b/internal/service/rank/rank_service.go @@ -14,6 +14,7 @@ import ( "github.com/answerdev/answer/internal/service/permission" "github.com/answerdev/answer/internal/service/role" usercommon "github.com/answerdev/answer/internal/service/user_common" + "github.com/answerdev/answer/pkg/htmltext" "github.com/segmentfault/pacman/errors" "github.com/segmentfault/pacman/log" "xorm.io/xorm" @@ -260,6 +261,7 @@ func (rs *RankService) GetRankPersonalWithPage(ctx context.Context, req *schema. commentResp.RankType = activity_type.Format(userRankInfo.ActivityType) commentResp.ObjectType = objInfo.ObjectType commentResp.Title = objInfo.Title + commentResp.UrlTitle = htmltext.UrlTitle(objInfo.Title) commentResp.Content = objInfo.Content commentResp.QuestionID = objInfo.QuestionID commentResp.AnswerID = objInfo.AnswerID diff --git a/internal/service/vote_service.go b/internal/service/vote_service.go index ae555bf0..62c20b64 100644 --- a/internal/service/vote_service.go +++ b/internal/service/vote_service.go @@ -9,6 +9,7 @@ import ( "github.com/answerdev/answer/internal/service/comment_common" "github.com/answerdev/answer/internal/service/config" "github.com/answerdev/answer/internal/service/object_info" + "github.com/answerdev/answer/pkg/htmltext" "github.com/answerdev/answer/pkg/obj" "github.com/segmentfault/pacman/log" @@ -190,6 +191,7 @@ func (vs *VoteService) ListUserVotes(ctx context.Context, req schema.GetVoteWith AnswerID: objInfo.AnswerID, ObjectType: objInfo.ObjectType, Title: objInfo.Title, + UrlTitle: htmltext.UrlTitle(objInfo.Title), Content: objInfo.Content, VoteType: activity_type.Format(voteInfo.ActivityType), }