码农笔录博客源码
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.
 
 
 
 
 

83 lines
1.9 KiB

package service
import (
"beeblog/models"
"fmt"
"github.com/beego/beego/v2/client/orm"
)
type CommentService struct {
}
func (this *CommentService) FindCommentByBlog(bid int64) ([]*models.Comment, error) {
var comms []*models.Comment
o := orm.NewOrm()
_, err := o.QueryTable(&models.Comment{}).Filter("Pid", 0).Filter("BlogId", bid).OrderBy("-Ctime").All(&comms)
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 {
if len(childs) > 0 {
comms[i].Childs = childs
for j := 0; j < len(childs); j++ {
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
}
func (this *CommentService) SaveComment(comment *models.Comment) error {
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
if comment.BuserId != 0 {
buser := &models.User{Id: comment.BuserId}
o.Read(buser)
comment.BUser = buser
}
return nil
}
return err
}
func (this *CommentService) ReadComment(comment *models.Comment) error {
return orm.NewOrm().Read(comment)
}
func (this *CommentService) DelComment(id int64) error {
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
}