码农笔录博客源码
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

84 lines
1.9 KiB

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