77 lines
1.7 KiB
Go
77 lines
1.7 KiB
Go
package models
|
|
|
|
import (
|
|
orm "go-admin/common/global"
|
|
"go-admin/logger"
|
|
)
|
|
|
|
type Article struct {
|
|
Model
|
|
|
|
Title string `json:"title"`
|
|
SubTitle string `json:"sub_title"`
|
|
IconUrl string `json:"icon_url"`
|
|
Content string `json:"content"`
|
|
SourceName string `json:"source_name"`
|
|
SourceUrl string `json:"source_url"`
|
|
ReadCount uint32 `json:"read_count"`
|
|
ThumbsCount uint32 `json:"thumbs_count"`
|
|
Status uint32 `json:"status"`
|
|
ColumnType int `json:"column_type"` // 1-攻略 2-新闻
|
|
}
|
|
|
|
type ArticleCollect struct {
|
|
Model
|
|
|
|
ArticleId uint32 `json:"article_id"`
|
|
Uid uint32 `json:"uid"`
|
|
ColumnType int `json:"column_type"` // 1-攻略 2-新闻
|
|
}
|
|
|
|
func (m *Article) TableName() string {
|
|
return "article"
|
|
}
|
|
|
|
type ArticleListReq struct {
|
|
Title string `json:"title"`
|
|
Status uint32 `json:"status"`
|
|
Column int `json:"column_type"`
|
|
PageIdx int `json:"pageIndex"`
|
|
PageSize int `json:"pageSize"`
|
|
}
|
|
|
|
func (m *ArticleListReq) GetArticleList() ([]Article, int64, error) {
|
|
page := m.PageIdx - 1
|
|
if page < 0 {
|
|
page = 0
|
|
}
|
|
if m.PageSize == 0 {
|
|
m.PageSize = 10
|
|
}
|
|
var articles []Article
|
|
qs := orm.Eloquent.Table("article")
|
|
if m.Title != "" {
|
|
qs = qs.Where("title LIKE '%" + m.Title + "%'")
|
|
}
|
|
if m.Status != 0 {
|
|
qs = qs.Where("status = ?", m.Status)
|
|
}
|
|
if m.Column != 0 {
|
|
qs = qs.Where("column_type = ?", m.Column)
|
|
}
|
|
|
|
var count int64
|
|
err := qs.Count(&count).Error
|
|
if err != nil {
|
|
logger.Error("err:", err)
|
|
return articles, 0, err
|
|
}
|
|
|
|
err = qs.Order("id desc").Offset(page * m.PageSize).Limit(m.PageSize).Find(&articles).Error
|
|
if err != nil {
|
|
logger.Error("err:", err)
|
|
return articles, count, err
|
|
}
|
|
return articles, count, nil
|
|
}
|