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

84 строки
1.9 KiB

6 лет назад
package service
import (
"beeblog/models"
"fmt"
4 лет назад
"github.com/beego/beego/v2/client/orm"
6 лет назад
)
6 лет назад
type CommentService struct {
}
func (this *CommentService) FindCommentByBlog(bid int64) ([]*models.Comment, error) {
6 лет назад
var comms []*models.Comment
o := orm.NewOrm()
4 лет назад
_, err := o.QueryTable(&models.Comment{}).Filter("Pid", 0).Filter("BlogId", bid).OrderBy("-Ctime").All(&comms)
6 лет назад
if err != nil {
return nil, err
}
if len(comms) > 0 {
for i := 0; i < len(comms); i++ {
var childs []*models.Comment
_, childerrr := o.QueryTable(&models.Comment{}).Filter("Pid", comms[i].Id).OrderBy("-Ctime").All(&childs)
if childerrr == nil {
4 лет назад
if len(childs) > 0 {
6 лет назад
comms[i].Childs = childs
4 лет назад
for j := 0; j < len(childs); j++ {
6 лет назад
cuser := &models.User{Id: childs[j].CuserId}
o.Read(cuser)
childs[j].CUser = cuser
buser := &models.User{Id: childs[j].BuserId}
o.Read(buser)
childs[j].BUser = buser
}
}
}
cuser := &models.User{Id: comms[i].CuserId}
o.Read(cuser)
comms[i].CUser = cuser
}
}
return comms, nil
}
6 лет назад
func (this *CommentService) SaveComment(comment *models.Comment) error {
6 лет назад
o := orm.NewOrm()
id, err := o.Insert(comment)
if err == nil {
comment.Id = id
cuser := &models.User{Id: comment.CuserId}
o.Read(cuser)
comment.CUser = cuser
4 лет назад
if comment.BuserId != 0 {
6 лет назад
buser := &models.User{Id: comment.BuserId}
o.Read(buser)
comment.BUser = buser
}
return nil
}
return err
}
6 лет назад
func (this *CommentService) ReadComment(comment *models.Comment) error {
6 лет назад
return orm.NewOrm().Read(comment)
}
6 лет назад
func (this *CommentService) DelComment(id int64) error {
6 лет назад
comm := &models.Comment{Id: id}
o := orm.NewOrm()
err := o.Read(comm)
if err != nil {
return err
}
if comm.Pid != 0 {
if _, err := o.QueryTable(models.Comment{}).Filter("Pid", id).Delete(); err != nil {
fmt.Println(err)
}
}
if _, err := o.Delete(comm); err != nil {
return err
}
return nil
}