码农笔录博客源码
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

86 рядки
1.7 KiB

6 роки тому
package service
import (
"github.com/astaxie/beego/orm"
"beeblog/models"
6 роки тому
"beeblog/utils"
6 роки тому
)
type BlogService struct {
}
6 роки тому
func count(num int, size int, cat int64) (*utils.Page, error) {
o := orm.NewOrm()
qs := o.QueryTable(&models.Blog{})
qs.Filter("Delflag", 0)
if cat != -1 {
qs = qs.Filter("CategoryId", cat)
}
totalCount, err := qs.Count()
if err != nil {
return nil, err
}
return utils.PageUtil(totalCount, num, size), nil
}
6 роки тому
func GetBlog(id int64) (*models.Blog, error) {
o := orm.NewOrm()
6 роки тому
blog := &models.Blog{Id: id}
6 роки тому
err := o.Read(blog)
if err != nil {
return nil, err
}
return blog, nil
}
6 роки тому
func FindBlogs(num int, size int, cat int64, flag int) (*utils.Page, error) {
page, err := count(num, size, cat)
if err != nil {
return nil, err
}
var blogs []*models.Blog
6 роки тому
o := orm.NewOrm()
qs := o.QueryTable(&models.Blog{})
6 роки тому
qs = qs.Filter("Delflag", 0)
if cat != -1 {
qs = qs.Filter("CategoryId", cat)
}
if flag == 0 {
qs = qs.OrderBy("-Ctime")
} else {
qs = qs.OrderBy("-Browses")
}
6 роки тому
qs = qs.Limit(size, (page.PageNo-1) * size)
6 роки тому
_, err = qs.All(&blogs)
6 роки тому
if err != nil {
return nil, err
}
6 роки тому
page.List = blogs
return page, nil
6 роки тому
}
6 роки тому
func SaveBlog(blog *models.Blog, strs []string) error {
6 роки тому
o := orm.NewOrm()
6 роки тому
o.Begin()
6 роки тому
id, eror := o.Insert(blog)
if eror != nil {
6 роки тому
o.Rollback()
6 роки тому
return eror
} else {
blog.Id = id
6 роки тому
if strs != nil && len(strs) > 0 {
6 роки тому
nlabels := make([]*models.NLabel, len(strs))
6 роки тому
for i := 0; i < len(strs); i++ {
6 роки тому
nlabels[i] = &models.NLabel{Title: strs[i], BlogId: id, UserId: blog.UserId}
}
if _, err := o.InsertMulti(len(nlabels), nlabels); err != nil {
o.Rollback()
return err
6 роки тому
}
}
6 роки тому
o.Commit()
}
return nil
}