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 获取问答题库列表-分页-排序条件