From 606693a475546d39e6f375a68f8519275694de54 Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Thu, 19 Sep 2024 16:57:38 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=90=9C=E8=BF=87=E5=85=B3?= =?UTF-8?q?=E9=94=AE=E5=AD=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/dao/Question.go | 21 +++++++++++++++++++++ api/requests/Question.go | 1 + 2 files changed, 22 insertions(+) diff --git a/api/dao/Question.go b/api/dao/Question.go index 691bcdd..2e98451 100644 --- a/api/dao/Question.go +++ b/api/dao/Question.go @@ -184,6 +184,27 @@ func (r *QuestionDao) GetQuestionPageSearch(req requests.GetQuestionPage, page, query = query.Where("question_id IN (?)", questionClassQuery) } + // 搜索关键字 + if req.Keyword != "" { + keyword := "%" + req.Keyword + "%" // + + // 标题 + orQuery := global.Db.Model(&model.Question{}).Or("question_title LIKE ?", keyword) + + // 副标题 + orQuery = orQuery.Or("question_subtitle LIKE ?", keyword) + + // 分类标识 + baseClassSubQuery := global.Db.Model(&model.BaseClass{}). + Select("class_id"). + Where("class_name LIKE ?", keyword) + + questionClassSubQuery := global.Db.Model(&model.QuestionClass{}). + Select("question_id"). + Where(gorm.Expr("class_id IN (?)", baseClassSubQuery)) + + orQuery = orQuery.Or(gorm.Expr("question_id IN (?)", questionClassSubQuery)) + } // 排序 if req.Order != nil { // 点击次数(点击进入详情页的人次) diff --git a/api/requests/Question.go b/api/requests/Question.go index f05d873..8a4f289 100644 --- a/api/requests/Question.go +++ b/api/requests/Question.go @@ -18,6 +18,7 @@ type GetQuestionPage struct { QuestionExplain string `json:"question_explain" form:"question_explain" label:"问题解释/科普"` ClassId string `json:"class_id" form:"class_id" label:"分类标识"` Order *GetQuestionPageOrder `json:"order" form:"order" label:"排序"` + Keyword string `json:"keyword" form:"keyword" label:"搜索关键字"` } // GetQuestionPageOrder 获取问答题库列表-分页-排序条件