mh_goadmin_server/app/admin/models/article.go
2023-10-14 16:19:04 +08:00

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.Error())
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.Error())
return articles, count, err
}
return articles, count, nil
}