Files
jiang13-forum/routers/web/report.go
2026-08-29 17:47:09 +08:00

73 lines
1.9 KiB
Go

package web
import (
"fmt"
"strconv"
"strings"
"github.com/gin-gonic/gin"
)
// PostReportPost 举报帖子
func (d Deps) PostReportPost(c *gin.Context) {
ctx := d.ctx(c)
postID, _ := strconv.ParseUint(c.Param("id"), 10, 64)
redir := fmt.Sprintf("/post/%d", postID)
if !ctx.CheckCSRF() {
ctx.SetFlash("无效请求,请重试")
ctx.Redirect(redir)
return
}
if d.Report == nil {
ctx.SetFlash("举报服务未就绪")
ctx.Redirect(redir)
return
}
if d.Limiter != nil && !d.Limiter.Allow("report", fmt.Sprintf("%d", ctx.UserID())) {
ctx.SetFlash("举报过于频繁,请稍后再试")
ctx.Redirect(redir)
return
}
reason := strings.TrimSpace(c.PostForm("reason"))
detail := strings.TrimSpace(c.PostForm("detail"))
if _, err := d.Report.Create(ctx.UserID(), uint(postID), reason, detail); err != nil {
ctx.SetFlash(err.Error())
ctx.Redirect(redir)
return
}
ctx.SetFlash("举报已提交,感谢反馈")
ctx.Redirect(redir)
}
// CommentReportPost 举报评论
func (d Deps) CommentReportPost(c *gin.Context) {
ctx := d.ctx(c)
postID, _ := strconv.ParseUint(c.Param("id"), 10, 64)
cid, _ := strconv.ParseUint(c.Param("cid"), 10, 64)
redir := fmt.Sprintf("/post/%d", postID)
if !ctx.CheckCSRF() {
ctx.SetFlash("无效请求,请重试")
ctx.Redirect(redir)
return
}
if d.Report == nil {
ctx.SetFlash("举报服务未就绪")
ctx.Redirect(redir)
return
}
if d.Limiter != nil && !d.Limiter.Allow("report", fmt.Sprintf("%d", ctx.UserID())) {
ctx.SetFlash("举报过于频繁,请稍后再试")
ctx.Redirect(redir)
return
}
reason := strings.TrimSpace(c.PostForm("reason"))
detail := strings.TrimSpace(c.PostForm("detail"))
if _, err := d.Report.CreateCommentReport(ctx.UserID(), uint(cid), reason, detail); err != nil {
ctx.SetFlash(err.Error())
ctx.Redirect(redir)
return
}
ctx.SetFlash("举报已提交,感谢反馈")
ctx.Redirect(redir)
}