You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
92 lines
2.5 KiB
92 lines
2.5 KiB
package topic
|
|
|
|
import (
|
|
"fmt"
|
|
"github.com/golangkit/formatime"
|
|
"gorm.io/gorm"
|
|
"live/app/lib/db"
|
|
)
|
|
|
|
type Topic struct {
|
|
db.BaseModel
|
|
Id uint `gorm:"column:id" json:"id"`
|
|
Title string `gorm:"column:title" json:"title"`
|
|
Substance uint `gorm:"column:substance" json:"substance"`
|
|
Partake uint `gorm:"column:partake" json:"partake"`
|
|
CreatedAt formatime.Second `gorm:"column:created_at" json:"createdAt"`
|
|
UpdatedAt formatime.Second `gorm:"column:updated_at" json:"updatedAt"`
|
|
IsDel int `gorm:"column:is_del" json:"isDel"`
|
|
IsHot int `gorm:"column:is_hot" json:"isHot"`
|
|
TopicImg string `gorm:"column:topic_img" json:"topicImg"`
|
|
}
|
|
|
|
// 插入
|
|
func (t *Topic) Create(topic *Topic) uint {
|
|
t.GetDb().Create(topic)
|
|
if topic.Id > 0 {
|
|
return topic.Id
|
|
}
|
|
return 0
|
|
}
|
|
|
|
// @Title 获取热门列表
|
|
func (t *Topic) GetHotlist(count int) (result []Topic) {
|
|
t.GetDb().Model(t).Where("is_del = ? and is_hot = ?", 0, 1).Limit(count).Find(&result)
|
|
return
|
|
}
|
|
|
|
// @Title 根据关键字检索话题列表
|
|
func (t *Topic) Getlist(keyword string, start, limit int) (result []Topic) {
|
|
t.GetDb().Model(t).Where("is_del = ? and title like ?", 0, fmt.Sprintf("%%%v%%", keyword)).
|
|
Limit(limit).Offset(start).Find(&result)
|
|
return
|
|
}
|
|
|
|
// @Title 根据关键字检索话题列表数量
|
|
func (t *Topic) GetlistCount(keyword string) (result int64) {
|
|
t.GetDb().Model(t).Where("is_del = ? and title like ?", 0, fmt.Sprintf("%%%v%%", keyword)).
|
|
Count(&result)
|
|
return
|
|
}
|
|
|
|
// @Title 根据ids获取列表
|
|
func (t *Topic) GetlistByIds(topicIds []uint) (result []Topic) {
|
|
t.GetDb().Model(t).Where("is_del = ? and id in ?", 0, topicIds).Find(&result)
|
|
return
|
|
}
|
|
|
|
// @Title 根据id获取单条数据
|
|
func (t *Topic) GetById(topicId uint) (result Topic) {
|
|
if topicId <= 0 {
|
|
return
|
|
}
|
|
result.Id = topicId
|
|
t.GetDb().First(&result)
|
|
return
|
|
}
|
|
|
|
// @Title 添加参与人
|
|
func (t *Topic) AddSubstance(topicId uint) int64 {
|
|
if topicId <= 0 {
|
|
return 0
|
|
}
|
|
return t.GetDb().Model(t).Where(Topic{Id: topicId}).Update("substance", gorm.Expr("substance + ?", 1)).RowsAffected
|
|
}
|
|
|
|
// @Title 添加内容数
|
|
func (t *Topic) AddPartake(topicId uint) int64 {
|
|
if topicId <= 0 {
|
|
return 0
|
|
}
|
|
return t.GetDb().Model(t).Where(Topic{Id: topicId}).Update("partake", gorm.Expr("partake + ?", 1)).RowsAffected
|
|
}
|
|
|
|
// @Title 获取话题
|
|
func (t *Topic) GetByTitle(title string) (result Topic) {
|
|
if title == "" {
|
|
return
|
|
}
|
|
t.GetDb().Model(t).Where("title = ?", title).First(&result)
|
|
return
|
|
}
|