From ac91dc525975f4757be1e4d091e31757ccab516e Mon Sep 17 00:00:00 2001 From: LinkinStars Date: Wed, 28 Jun 2023 11:43:13 +0800 Subject: [PATCH] fix(sitemap): set question id by default --- cmd/wire_gen.go | 2 +- internal/controller/template_render/question.go | 2 +- internal/repo/question/question_repo.go | 3 ++- internal/service/question_common/question.go | 2 +- internal/service/question_service.go | 14 ++++++++++---- 5 files changed, 15 insertions(+), 8 deletions(-) diff --git a/cmd/wire_gen.go b/cmd/wire_gen.go index bc612ccd..0439c638 100644 --- a/cmd/wire_gen.go +++ b/cmd/wire_gen.go @@ -174,7 +174,7 @@ func initApplication(debug bool, serverConf *conf.Server, dbConf *data.Database, answerActivityRepo := activity.NewAnswerActivityRepo(dataData, activityRepo, userRankRepo, notificationQueueService) questionActivityRepo := activity.NewQuestionActivityRepo(dataData, activityRepo, userRankRepo) answerActivityService := activity2.NewAnswerActivityService(answerActivityRepo, questionActivityRepo) - questionService := service.NewQuestionService(questionRepo, tagCommonService, questionCommon, userCommon, userRepo, revisionService, metaService, collectionCommon, answerActivityService, dataData, emailService, notificationQueueService, activityQueueService) + questionService := service.NewQuestionService(questionRepo, tagCommonService, questionCommon, userCommon, userRepo, revisionService, metaService, collectionCommon, answerActivityService, emailService, notificationQueueService, activityQueueService, siteInfoCommonService) answerService := service.NewAnswerService(answerRepo, questionRepo, questionCommon, userCommon, collectionCommon, userRepo, revisionService, answerActivityService, answerCommon, voteRepo, emailService, userRoleRelService, notificationQueueService, activityQueueService) questionController := controller.NewQuestionController(questionService, answerService, rankService, siteInfoCommonService) answerController := controller.NewAnswerController(answerService, rankService) diff --git a/internal/controller/template_render/question.go b/internal/controller/template_render/question.go index e8ae67f4..dbf02f91 100644 --- a/internal/controller/template_render/question.go +++ b/internal/controller/template_render/question.go @@ -30,7 +30,7 @@ func (t *TemplateRenderController) Sitemap(ctx *gin.Context) { return } - questions, err := t.questionRepo.SitemapQuestions(ctx, 0, constant.SitemapMaxSize) + questions, err := t.questionRepo.SitemapQuestions(ctx, 1, constant.SitemapMaxSize) if err != nil { log.Errorf("get sitemap questions failed: %s", err) return diff --git a/internal/repo/question/question_repo.go b/internal/repo/question/question_repo.go index 18685dca..6623ae90 100644 --- a/internal/repo/question/question_repo.go +++ b/internal/repo/question/question_repo.go @@ -253,6 +253,7 @@ func (qr *questionRepo) GetQuestionCountByIDs(ctx context.Context, ids []string) func (qr *questionRepo) SitemapQuestions(ctx context.Context, page, pageSize int) ( questionIDList []*schema.SiteMapQuestionInfo, err error) { + page = page - 1 questionIDList = make([]*schema.SiteMapQuestionInfo, 0) // try to get sitemap data from cache @@ -278,7 +279,7 @@ func (qr *questionRepo) SitemapQuestions(ctx context.Context, page, pageSize int // warp data for _, question := range rows { - item := &schema.SiteMapQuestionInfo{} + item := &schema.SiteMapQuestionInfo{ID: question.ID} if handler.GetEnableShortID(ctx) { item.ID = uid.EnShortID(question.ID) } diff --git a/internal/service/question_common/question.go b/internal/service/question_common/question.go index ce93a947..dee28b5b 100644 --- a/internal/service/question_common/question.go +++ b/internal/service/question_common/question.go @@ -558,7 +558,7 @@ func (qs *QuestionCommon) SitemapCron(ctx context.Context) { return } if questionNum <= constant.SitemapMaxSize { - _, err = qs.questionRepo.SitemapQuestions(ctx, 0, int(questionNum)) + _, err = qs.questionRepo.SitemapQuestions(ctx, 1, int(questionNum)) if err != nil { log.Errorf("get site map question error: %v", err) } diff --git a/internal/service/question_service.go b/internal/service/question_service.go index dff02550..f8f939b7 100644 --- a/internal/service/question_service.go +++ b/internal/service/question_service.go @@ -3,11 +3,11 @@ package service import ( "encoding/json" "fmt" + "github.com/answerdev/answer/internal/service/siteinfo_common" "strings" "time" "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" @@ -50,10 +50,10 @@ type QuestionService struct { metaService *meta.MetaService collectionCommon *collectioncommon.CollectionCommon answerActivityService *activity.AnswerActivityService - data *data.Data emailService *export.EmailService notificationQueueService notice_queue.NotificationQueueService activityQueueService activity_queue.ActivityQueueService + siteInfoService siteinfo_common.SiteInfoCommonService } func NewQuestionService( @@ -66,10 +66,10 @@ func NewQuestionService( metaService *meta.MetaService, collectionCommon *collectioncommon.CollectionCommon, answerActivityService *activity.AnswerActivityService, - data *data.Data, emailService *export.EmailService, notificationQueueService notice_queue.NotificationQueueService, activityQueueService activity_queue.ActivityQueueService, + siteInfoService siteinfo_common.SiteInfoCommonService, ) *QuestionService { return &QuestionService{ questionRepo: questionRepo, @@ -81,10 +81,10 @@ func NewQuestionService( metaService: metaService, collectionCommon: collectionCommon, answerActivityService: answerActivityService, - data: data, emailService: emailService, notificationQueueService: notificationQueueService, activityQueueService: activityQueueService, + siteInfoService: siteInfoService, } } @@ -1339,5 +1339,11 @@ func (qs *QuestionService) changeQuestionToRevision(ctx context.Context, questio } func (qs *QuestionService) SitemapCron(ctx context.Context) { + siteSeo, err := qs.siteInfoService.GetSiteSeo(ctx) + if err != nil { + log.Error(err) + return + } + ctx = context.WithValue(ctx, constant.ShortIDFlag, siteSeo.IsShortLink()) qs.questioncommon.SitemapCron(ctx) }