init
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"bbs-go/internal/models"
|
||||
"bbs-go/internal/models/constants"
|
||||
"bbs-go/internal/spam"
|
||||
"strconv"
|
||||
|
||||
"github.com/kataras/iris/v12"
|
||||
"github.com/mlogclub/simple/sqls"
|
||||
"github.com/mlogclub/simple/web"
|
||||
"github.com/mlogclub/simple/web/params"
|
||||
"github.com/panjf2000/ants/v2"
|
||||
"github.com/sirupsen/logrus"
|
||||
|
||||
"bbs-go/internal/controllers/render"
|
||||
"bbs-go/internal/services"
|
||||
)
|
||||
|
||||
type CommentController struct {
|
||||
Ctx iris.Context
|
||||
}
|
||||
|
||||
func (c *CommentController) GetClean() *web.JsonResult {
|
||||
go func() {
|
||||
p, _ := ants.NewPool(10)
|
||||
services.CommentService.Scan(func(comments []models.Comment) {
|
||||
var ids []int64
|
||||
for _, comment := range comments {
|
||||
if comment.ContentType == constants.ContentTypeHtml {
|
||||
ids = append(ids, comment.Id)
|
||||
}
|
||||
}
|
||||
if len(ids) > 0 {
|
||||
p.Submit(func() {
|
||||
sqls.DB().Delete(&models.Comment{}, "id in ?", ids)
|
||||
logrus.Info("清理评论:", ids)
|
||||
})
|
||||
}
|
||||
})
|
||||
}()
|
||||
return web.JsonSuccess()
|
||||
}
|
||||
|
||||
func (c *CommentController) GetComments() *web.JsonResult {
|
||||
var (
|
||||
err error
|
||||
cursor int64
|
||||
entityType string
|
||||
entityId int64
|
||||
)
|
||||
cursor = params.FormValueInt64Default(c.Ctx, "cursor", 0)
|
||||
|
||||
if entityType, err = params.FormValueRequired(c.Ctx, "entityType"); err != nil {
|
||||
return web.JsonError(err)
|
||||
}
|
||||
if entityId, err = params.FormValueInt64(c.Ctx, "entityId"); err != nil {
|
||||
return web.JsonError(err)
|
||||
}
|
||||
currentUser := services.UserTokenService.GetCurrent(c.Ctx)
|
||||
comments, cursor, hasMore := services.CommentService.GetComments(entityType, entityId, cursor)
|
||||
return web.JsonCursorData(render.BuildComments(comments, currentUser, true, false), strconv.FormatInt(cursor, 10), hasMore)
|
||||
}
|
||||
|
||||
func (c *CommentController) GetReplies() *web.JsonResult {
|
||||
var (
|
||||
cursor = params.FormValueInt64Default(c.Ctx, "cursor", 0)
|
||||
commentId = params.FormValueInt64Default(c.Ctx, "commentId", 0)
|
||||
)
|
||||
currentUser := services.UserTokenService.GetCurrent(c.Ctx)
|
||||
comments, cursor, hasMore := services.CommentService.GetReplies(commentId, cursor, 10)
|
||||
return web.JsonCursorData(render.BuildComments(comments, currentUser, false, true), strconv.FormatInt(cursor, 10), hasMore)
|
||||
}
|
||||
|
||||
func (c *CommentController) PostCreate() *web.JsonResult {
|
||||
user := services.UserTokenService.GetCurrent(c.Ctx)
|
||||
if err := services.UserService.CheckPostStatus(user); err != nil {
|
||||
return web.JsonError(err)
|
||||
}
|
||||
form := models.GetCreateCommentForm(c.Ctx)
|
||||
if err := spam.CheckComment(user, form); err != nil {
|
||||
return web.JsonError(err)
|
||||
}
|
||||
|
||||
comment, err := services.CommentService.Publish(user.Id, form)
|
||||
if err != nil {
|
||||
return web.JsonError(err)
|
||||
}
|
||||
|
||||
return web.JsonData(render.BuildComment(comment))
|
||||
}
|
||||
Reference in New Issue
Block a user