From c429bb03b1e1593edb619e1e41f9be724fe55590 Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Wed, 4 Sep 2024 16:12:18 +0800 Subject: [PATCH] 3 --- api/dao/Article.go | 33 ++++++++++++++++++++++++++------- api/dao/Video.go | 35 +++++++++++++++++++++++++++-------- api/requests/Article.go | 11 +++++------ api/requests/Video.go | 13 ++++++------- 4 files changed, 64 insertions(+), 28 deletions(-) diff --git a/api/dao/Article.go b/api/dao/Article.go index 4a45ecc..9ba05f3 100644 --- a/api/dao/Article.go +++ b/api/dao/Article.go @@ -139,14 +139,33 @@ func (r *ArticleDao) GetArticlePageSearch(req requests.GetArticlePage, page, pag // 作者关联医院 query = query.Preload("ArticleAuthor.BaseHospital") - // 文章标题 - if req.ArticleTitle != "" { - query = query.Where("article_title LIKE ?", "%"+req.ArticleTitle+"%") - } + // 搜索关键字 + if req.Keyword != "" { + keyword := "%" + req.Keyword + "%" // - // 文章内容 - if req.ArticleContent != "" { - query = query.Where("article_content LIKE ?", "%"+req.ArticleContent+"%") + // 标题 + orQuery := global.Db.Model(&model.Article{}).Or("article_title LIKE ?", keyword) + + // 医院名称 + hospitalSubQuery := global.Db.Model(&model.BaseHospital{}). + Select("hospital_id"). + Where("hospital_name LIKE ?", keyword) + + articleAuthorSubQuery := global.Db.Model(&model.ArticleAuthor{}). + Select("article_id"). + Where(gorm.Expr("hospital_id IN (?)", hospitalSubQuery)) + + orQuery = orQuery.Or(gorm.Expr("article_id IN (?)", articleAuthorSubQuery)) + + // 作者姓名 + subQuery := global.Db.Model(&model.ArticleAuthor{}). + Select("article_id"). + Where("author_name LIKE ?", keyword) + + orQuery = orQuery.Or(gorm.Expr("article_id IN (?)", subQuery)) + + // 执行组建 + query = query.Where(orQuery) } // 文章状态 diff --git a/api/dao/Video.go b/api/dao/Video.go index 953c805..c3ce624 100644 --- a/api/dao/Video.go +++ b/api/dao/Video.go @@ -139,19 +139,38 @@ func (r *VideoDao) GetVideoPageSearch(req requests.GetVideoPage, page, pageSize // 作者关联医院 query = query.Preload("VideoAuthor.BaseHospital") - // 文章标题 - if req.VideoTitle != "" { - query = query.Where("video_title LIKE ?", "%"+req.VideoTitle+"%") - } - // 视频编号 if req.VideoNo != "" { query = query.Where("video_no LIKE ?", "%"+req.VideoNo+"%") } - // 文章内容 - if req.VideoContent != "" { - query = query.Where("video_content LIKE ?", "%"+req.VideoContent+"%") + // 搜索关键字 + if req.Keyword != "" { + keyword := "%" + req.Keyword + "%" // + + // 标题 + orQuery := global.Db.Model(&model.Video{}).Or("video_title LIKE ?", keyword) + + // 医院名称 + hospitalSubQuery := global.Db.Model(&model.BaseHospital{}). + Select("hospital_id"). + Where("hospital_name LIKE ?", keyword) + + articleAuthorSubQuery := global.Db.Model(&model.VideoAuthor{}). + Select("video_id"). + Where(gorm.Expr("hospital_id IN (?)", hospitalSubQuery)) + + orQuery = orQuery.Or(gorm.Expr("video_id IN (?)", articleAuthorSubQuery)) + + // 作者姓名 + subQuery := global.Db.Model(&model.VideoAuthor{}). + Select("video_id"). + Where("author_name LIKE ?", keyword) + + orQuery = orQuery.Or(gorm.Expr("video_id IN (?)", subQuery)) + + // 执行组建 + query = query.Where(orQuery) } // 文章状态 diff --git a/api/requests/Article.go b/api/requests/Article.go index 525d673..260b834 100644 --- a/api/requests/Article.go +++ b/api/requests/Article.go @@ -8,12 +8,11 @@ type ArticleRequest struct { // GetArticlePage 获取图文列表-分页 type GetArticlePage struct { - Page int `json:"page" form:"page" label:"页码"` - PageSize int `json:"page_size" form:"page_size" label:"每页个数"` - ArticleTitle string `json:"article_title" form:"article_title" label:"文章标题"` - ArticleStatus *int `json:"article_status" form:"article_status" label:"文章状态"` // (1:正常 2:禁用) - ArticleContent string `json:"article_content" form:"article_content" label:"文章内容"` - Order *GetArticlePageOrder `json:"order" form:"order" label:"排序"` + Page int `json:"page" form:"page" label:"页码"` + PageSize int `json:"page_size" form:"page_size" label:"每页个数"` + ArticleStatus *int `json:"article_status" form:"article_status" label:"文章状态"` // (1:正常 2:禁用) + Keyword string `json:"keyword" form:"keyword" label:"搜索关键字"` + Order *GetArticlePageOrder `json:"order" form:"order" label:"排序"` } // GetArticlePageOrder 获取图文列表-分页-排序条件 diff --git a/api/requests/Video.go b/api/requests/Video.go index 51f476f..e8a2fb4 100644 --- a/api/requests/Video.go +++ b/api/requests/Video.go @@ -8,13 +8,12 @@ type VideoRequest struct { // GetVideoPage 获取视频列表-分页 type GetVideoPage struct { - Page int `json:"page" form:"page" label:"页码"` - PageSize int `json:"page_size" form:"page_size" label:"每页个数"` - VideoTitle string `json:"video_title" form:"Video_title" label:"视频标题"` - VideoStatus *int `json:"video_status" form:"Video_status" label:"视频状态"` // (1:正常 2:禁用) - VideoNo string `json:"video_no" form:"video_no" label:"视频编号"` // (保利) - VideoContent string `json:"video_content" form:"Video_content" label:"视频内容"` - Order *GetVideoPageOrder `json:"order" form:"order" label:"排序"` + Page int `json:"page" form:"page" label:"页码"` + PageSize int `json:"page_size" form:"page_size" label:"每页个数"` + Keyword string `json:"keyword" form:"keyword" label:"搜索关键字"` + VideoStatus *int `json:"video_status" form:"Video_status" label:"视频状态"` // (1:正常 2:禁用) + VideoNo string `json:"video_no" form:"video_no" label:"视频编号"` // (保利) + Order *GetVideoPageOrder `json:"order" form:"order" label:"排序"` } // GetVideoPageOrder 获取视频列表-分页-排序条件