码农笔录博客源码
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

249 lignes
5.7 KiB

package service
import (
"beeblog/models"
"beeblog/utils"
il y a 3 ans
"github.com/beego/beego/v2/client/orm"
)
il y a 5 ans
type BlogService struct {
}
func (this *BlogService) 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
}
il y a 5 ans
func (this *BlogService) countByUser(num int, size int, uid int64) (*utils.Page, error) {
il y a 6 ans
o := orm.NewOrm()
qs := o.QueryTable(&models.Blog{})
totalCount, err := qs.Filter("Delflag", 0).Filter("UserId", uid).Count()
if err != nil {
return nil, err
}
return utils.PageUtil(totalCount, num, size), nil
}
il y a 5 ans
func (this *BlogService) EditBlogBrows(id int64) {
o := orm.NewOrm()
blog := &models.Blog{Id: id}
err := o.Read(blog)
if err == nil {
blog.Browses += 1
o.Update(blog, "Browses")
}
}
il y a 5 ans
func (this *BlogService) TopBlogByUser(uid int64) ([]*models.Blog, error) {
il y a 6 ans
o := orm.NewOrm()
var blogs []*models.Blog
il y a 6 ans
o.QueryTable(models.Blog{}).Filter("Delflag", 0).Filter("UserId", uid).Limit(12, 0).OrderBy("-Browses").All(&blogs)
il y a 6 ans
return blogs, nil
}
il y a 5 ans
func (this *BlogService) ReadBlog(id int64) (*models.Blog, error) {
il y a 6 ans
o := orm.NewOrm()
blog := &models.Blog{Id: id}
il y a 6 ans
if err := o.Read(blog); err != nil {
il y a 6 ans
return nil, err
}
return blog, nil
}
il y a 5 ans
func (this *BlogService) GetBlog(id int64) (*models.Blog, error) {
o := orm.NewOrm()
il y a 6 ans
blog := &models.Blog{Id: id}
err := o.Read(blog)
if err != nil {
return nil, err
}
il y a 6 ans
user := &models.User{Id: blog.UserId}
err = o.Read(user)
if err == nil {
blog.User = user
il y a 6 ans
}
var labels []*models.NLabel
qs := o.QueryTable(&models.NLabel{})
il y a 6 ans
_, err = qs.Filter("BlogId", id).All(&labels)
il y a 6 ans
if err == nil {
blog.Lables = labels
}
category := &models.Category{Id: blog.CategoryId}
if err := o.Read(category); err == nil {
blog.CateName = category.Title
il y a 6 ans
}
return blog, nil
}
il y a 5 ans
func (this *BlogService) DelBlog(blog *models.Blog) error {
o := orm.NewOrm()
_, err := o.Update(blog, "Delflag")
return err
}
il y a 5 ans
func (this *BlogService) FindBlogs(num int, size int, cat int64, flag int) (*utils.Page, error) {
page, err := this.count(num, size, cat)
if err != nil {
return nil, err
}
var blogs []*models.Blog
o := orm.NewOrm()
qs := o.QueryTable(&models.Blog{})
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")
}
il y a 6 ans
qs = qs.Limit(size, (page.PageNo-1)*size)
_, err = qs.All(&blogs)
if err != nil {
return nil, err
}
il y a 6 ans
if len(blogs) > 0 {
for i := 0; i < len(blogs); i++ {
user := &models.User{Id: blogs[i].UserId}
err = o.Read(user)
if err == nil {
blogs[i].UserName = user.UserName
blogs[i].HeadImg = user.Headimg
}
category := &models.Category{Id: blogs[i].CategoryId}
err = o.Read(category)
if err == nil {
blogs[i].CateName = category.Title
}
}
}
page.List = blogs
return page, nil
}
il y a 5 ans
func (this *BlogService) AllBlogs() ([]*models.Blog, error) {
var blogs []*models.Blog
o := orm.NewOrm()
qs := o.QueryTable(&models.Blog{})
qs = qs.Filter("Delflag", 0)
_, err := qs.All(&blogs)
if err != nil {
return nil, err
}
return blogs, nil
}
il y a 5 ans
func (this *BlogService) SaveBlog(blog *models.Blog, strs []string) error {
o := orm.NewOrm()
il y a 3 ans
tx, _ := o.Begin()
id, eror := o.Insert(blog)
if eror != nil {
il y a 3 ans
tx.Rollback()
return eror
} else {
blog.Id = id
il y a 6 ans
if strs != nil && len(strs) > 0 {
il y a 6 ans
nlabels := make([]*models.NLabel, len(strs))
il y a 6 ans
for i := 0; i < len(strs); i++ {
il y a 6 ans
nlabels[i] = &models.NLabel{Title: strs[i], BlogId: id, UserId: blog.UserId}
}
if _, err := o.InsertMulti(len(nlabels), nlabels); err != nil {
il y a 3 ans
tx.Rollback()
il y a 6 ans
return err
il y a 6 ans
}
}
il y a 3 ans
tx.Commit()
}
return nil
}
il y a 6 ans
il y a 5 ans
func (this *BlogService) EditBlog(blog *models.Blog, strs []string) error {
il y a 6 ans
o := orm.NewOrm()
il y a 3 ans
tx, _ := o.Begin()
il y a 6 ans
_, eror := o.Update(blog)
il y a 6 ans
if eror != nil {
il y a 3 ans
tx.Rollback()
il y a 6 ans
return eror
} else {
il y a 6 ans
o.QueryTable(models.NLabel{}).Filter("BlogId", blog.Id).Delete()
il y a 6 ans
if strs != nil && len(strs) > 0 {
nlabels := make([]*models.NLabel, len(strs))
for i := 0; i < len(strs); i++ {
il y a 6 ans
nlabels[i] = &models.NLabel{Title: strs[i], BlogId: blog.Id, UserId: blog.UserId}
il y a 6 ans
}
if _, err := o.InsertMulti(len(nlabels), nlabels); err != nil {
il y a 3 ans
tx.Rollback()
il y a 6 ans
return err
}
}
il y a 3 ans
tx.Commit()
il y a 6 ans
}
return nil
}
il y a 5 ans
func (this *BlogService) MeBlogs(num int, size int, flag int, uid int64) (*utils.Page, error) {
page, err := this.countByUser(num, size, uid)
il y a 6 ans
if err != nil {
return nil, err
}
var blogs []*models.Blog
o := orm.NewOrm()
qs := o.QueryTable(&models.Blog{})
qs = qs.Filter("Delflag", 0)
qs = qs.Filter("UserId", uid)
if flag == 0 {
qs = qs.OrderBy("-Ctime")
} else {
qs = qs.OrderBy("-Browses")
}
qs = qs.Limit(size, (page.PageNo-1)*size)
_, err = qs.All(&blogs)
if err != nil {
return nil, err
}
page.List = blogs
return page, nil
}
il y a 6 ans
il y a 5 ans
func (this *BlogService) IndexBlogs(size int, flag int) ([]*models.Blog, error) {
il y a 6 ans
var blogs []*models.Blog
o := orm.NewOrm()
qs := o.QueryTable(&models.Blog{})
qs = qs.Filter("Delflag", 0)
switch flag {
case 0:
qs = qs.OrderBy("-Ctime") //最新
case 1:
qs = qs.OrderBy("-Browses") //浏览量
case 2:
qs = qs.OrderBy("-Likes") // 收藏量
case 3:
qs = qs.OrderBy("-Comments") // 评论量
}
qs = qs.Limit(size, 0)
_, err := qs.All(&blogs)
return blogs, err
}
il y a 5 ans
func (this *BlogService) GetNLabel(id int64) ([]*models.NLabel, error) {
il y a 6 ans
var labels []*models.NLabel
o := orm.NewOrm()
_, err := o.QueryTable(&models.NLabel{}).Filter("BlogId", id).All(&labels)
if err != nil {
return labels, err
}
return labels, nil
}