package controllers
import (
"beeblog/models"
"beeblog/service"
beego "github.com/beego/beego/v2/server/web"
"strconv"
)
type CommentController struct {
beego . Controller
}
func ( this * CommentController ) Save ( ) {
commentService := service . CommentService { }
blogService := service . BlogService { }
userService := service . UserService { }
uid := this . GetSession ( "userid" )
if uid == nil {
this . Data [ "json" ] = models . ReurnError ( 401 , "" )
this . ServeJSON ( )
return
}
blogId , berr := this . GetInt64 ( "blog" )
if blogId == 0 || berr != nil {
this . Data [ "json" ] = models . ReurnError ( 403 , "" )
this . ServeJSON ( )
return
}
commVal := this . GetString ( "commval" )
blog , err := blogService . ReadBlog ( blogId )
if err != nil {
this . Data [ "json" ] = models . ReurnError ( 403 , "" )
this . ServeJSON ( )
return
}
comm := & models . Comment { BlogId : blogId , CuserId : uid . ( int64 ) , BuserId : blog . UserId , ComVal : commVal }
if pid , _ := this . GetInt64 ( "pid" ) ; pid != 0 {
parent := & models . Comment { Id : pid }
if err := commentService . ReadComment ( parent ) ; err == nil {
comm . BuserId = parent . CuserId
}
comm . Pid = pid
}
err = commentService . SaveComment ( comm )
if err == nil {
this . Data [ "json" ] = models . ReurnData ( "" , comm )
} else {
this . Data [ "json" ] = models . ReurnError ( 500 , "保存失败" )
}
this . ServeJSON ( )
userService . CountComments ( uid . ( int64 ) , blogId )
return
}
func ( this * CommentController ) Del ( ) {
commentService := service . CommentService { }
userService := service . UserService { }
uid := this . GetSession ( "userid" )
if uid == nil {
this . Data [ "json" ] = models . ReurnError ( 401 , "" )
this . ServeJSON ( )
return
}
idStr := this . Ctx . Input . Param ( ":id" )
id , _ := strconv . ParseInt ( idStr , 10 , 64 )
comm := & models . Comment { Id : id }
err := commentService . ReadComment ( comm )
if err != nil {
this . Data [ "json" ] = models . ReurnError ( 500 , "" )
this . ServeJSON ( )
return
}
if comm . CuserId != uid . ( int64 ) {
this . Data [ "json" ] = models . ReurnError ( 403 , "" )
this . ServeJSON ( )
return
}
err = commentService . DelComment ( id )
if err == nil {
this . Data [ "json" ] = models . ReurnSuccess ( "" )
} else {
this . Data [ "json" ] = models . ReurnError ( 500 , "保存失败" )
}
this . ServeJSON ( )
userService . CountComments ( uid . ( int64 ) , id )
return
}