56 lines
1.4 KiB
Go
56 lines
1.4 KiB
Go
package dao
|
|
|
|
import (
|
|
"time"
|
|
|
|
"gorm.io/datatypes"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
// 帖子表
|
|
type Post struct {
|
|
BaseModel
|
|
UserId int32 `gorm:"index;comment:'发帖人ID'"`
|
|
Title string `gorm:"index;type:varchar(255);comment:'帖子标题'"`
|
|
Content string `gorm:"type:text;comment:'帖子内容'"`
|
|
RoleIds datatypes.JSON `gorm:"comment:'关联角色'"`
|
|
}
|
|
|
|
func Post_Insert(data *Post) (uint64, error) {
|
|
if err := s.db.Create(data).Error; err != nil {
|
|
return 0, err
|
|
}
|
|
return uint64(data.ID), nil
|
|
}
|
|
|
|
func Post_Query(postId uint64) (*Post, error) {
|
|
var data Post
|
|
if err := s.db.Where("id = ?", postId).First(&data).Error; err != nil {
|
|
if err == gorm.ErrRecordNotFound {
|
|
return nil, nil
|
|
}
|
|
return nil, err
|
|
}
|
|
return &data, nil
|
|
}
|
|
|
|
func Post_Page_Query(start_time, stop_time time.Time, role_id int32) ([]*Post, error) {
|
|
var list []*Post
|
|
var err error
|
|
if role_id == int32(0) { // 不能根据role_id查询
|
|
err = s.db.Where("created_at between ? and ?", start_time, stop_time).Find(&list).Error
|
|
} else {
|
|
err = s.db.Where("created_at between ? and ?", start_time, stop_time).Where(datatypes.JSONArrayQuery("role_ids").Contains(role_id)).Find(&list).Error
|
|
}
|
|
if err != nil && err != gorm.ErrRecordNotFound {
|
|
return nil, err
|
|
}
|
|
return list, nil
|
|
}
|
|
|
|
func Post_Delete(postId uint64) error {
|
|
data := Post{}
|
|
data.ID = postId
|
|
return s.db.Delete(&data).Error
|
|
}
|