diff --git a/api/controller/Article.go b/api/controller/Article.go index 1ab7600..3637c51 100644 --- a/api/controller/Article.go +++ b/api/controller/Article.go @@ -109,18 +109,33 @@ func (r *Article) GetArticle(c *gin.Context) { article.ArticleAuthor = articleAuthors - // 获取排名 - rank, _ := articleDao.GetArticleRank(article.ArticleId) - // 处理返回值 g := dto.GetArticleDto(article) + // 获取排名开关限制 + systemConfigDao := dao.SystemConfigDao{} + systemConfig, err := systemConfigDao.GetSystemConfigById(1) + if err != nil { + responses.OkWithData(nil, c) + return + } + + if systemConfig.IsDisplayRank == 1 { + // 获取大于某一投票数的文章 + maps := make(map[string]interface{}) + maps["article_status"] = 1 + articles, err := articleDao.GetArticleListGtVoteNum(maps, article.VoteNum) + if err == nil { + rank := len(articles) + 1 + + // 加载数据-作者排名 + g.LoadRank(rank) + } + } + // 加载数据-作者 g.LoadArticleAuthor(article.ArticleAuthor) - // 加载数据-作者排名 - g.LoadRank(rank) - // 检测用户今日是否投票 userId := c.GetInt64("UserId") if userId != 0 { diff --git a/api/controller/Video.go b/api/controller/Video.go index 33a0238..0802525 100644 --- a/api/controller/Video.go +++ b/api/controller/Video.go @@ -109,18 +109,33 @@ func (r *Video) GetVideo(c *gin.Context) { video.VideoAuthor = videoAuthors - // 获取排名 - rank, _ := videoDao.GetVideoRank(video.VideoId) - // 处理返回值 g := dto.GetVideoDto(video) + // 获取排名开关限制 + systemConfigDao := dao.SystemConfigDao{} + systemConfig, err := systemConfigDao.GetSystemConfigById(1) + if err != nil { + responses.OkWithData(nil, c) + return + } + + if systemConfig.IsDisplayRank == 1 { + // 获取大于某一投票数的文章 + maps := make(map[string]interface{}) + maps["article_status"] = 1 + videos, err := videoDao.GetVideoListGtVoteNum(maps, video.VoteNum) + if err == nil { + rank := len(videos) + 1 + + // 加载数据-作者排名 + g.LoadRank(rank) + } + } + // 加载数据-作者 g.LoadVideoAuthor(video.VideoAuthor) - // 加载数据-作者排名 - g.LoadRank(rank) - // 检测用户今日是否投票 userId := c.GetInt64("UserId") if userId != 0 { diff --git a/api/dao/Article.go b/api/dao/Article.go index 46ac253..7a96e4f 100644 --- a/api/dao/Article.go +++ b/api/dao/Article.go @@ -210,6 +210,15 @@ func (r *ArticleDao) GetArticleRankList(maps interface{}, orderField string, lim return m, nil } +// GetArticleListGtVoteNum 获取大于某一投票数的文章列表 +func (r *ArticleDao) GetArticleListGtVoteNum(maps interface{}, voteNum uint) (m []*model.Article, err error) { + err = global.Db.Where(maps).Where("vote_num > ?", voteNum).Find(&m).Error + if err != nil { + return nil, err + } + return m, nil +} + // GetArticleRank 获取某一条数据的排名 func (r *ArticleDao) GetArticleRank(articleID int64) (int, error) { var rank int diff --git a/api/dao/Video.go b/api/dao/Video.go index 0cab343..5a0536c 100644 --- a/api/dao/Video.go +++ b/api/dao/Video.go @@ -210,6 +210,15 @@ func (r *VideoDao) GetVideoRankList(maps interface{}, orderField string, limit i return m, nil } +// GetVideoListGtVoteNum 获取大于某一投票数的视频列表 +func (r *VideoDao) GetVideoListGtVoteNum(maps interface{}, voteNum uint) (m []*model.Video, err error) { + err = global.Db.Where(maps).Where("vote_num > ?", voteNum).Find(&m).Error + if err != nil { + return nil, err + } + return m, nil +} + // GetVideoRank 获取某一条数据的排名 func (r *VideoDao) GetVideoRank(videoID int64) (int, error) { var rank int