166 lines
7.0 KiB
Go
166 lines
7.0 KiB
Go
package http
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"go-common/app/admin/main/reply/conf"
|
|
"go-common/app/admin/main/reply/service"
|
|
"go-common/library/log"
|
|
bm "go-common/library/net/http/blademaster"
|
|
"go-common/library/net/http/blademaster/middleware/permit"
|
|
"go-common/library/net/http/blademaster/middleware/verify"
|
|
)
|
|
|
|
var (
|
|
rpSvc *service.Service
|
|
verifySvc *verify.Verify
|
|
)
|
|
|
|
// Init init http.
|
|
func Init(c *conf.Config) {
|
|
// init services
|
|
rpSvc = service.New(c)
|
|
verifySvc = verify.New(c.Verify)
|
|
auther := permit.New(c.ManagerAuth)
|
|
engine := bm.DefaultServer(c.HTTPServer)
|
|
authRouter(engine, auther)
|
|
interRouter(engine)
|
|
verifyRouter(engine)
|
|
// serve port
|
|
if err := engine.Start(); err != nil {
|
|
log.Error("engine.Start error(%v)", err)
|
|
panic(err)
|
|
}
|
|
}
|
|
|
|
type managerAuther interface {
|
|
Permit(permit string) bm.HandlerFunc
|
|
}
|
|
|
|
type fakeAuth struct {
|
|
}
|
|
|
|
func (a *fakeAuth) Permit(permit string) bm.HandlerFunc {
|
|
return func(ctx *bm.Context) {
|
|
ctx.Next()
|
|
}
|
|
}
|
|
|
|
func authRouter(engine *bm.Engine, auther managerAuther) {
|
|
engine.GET("/monitor/ping", ping)
|
|
group := engine.Group("/x/admin/reply")
|
|
{
|
|
// reply
|
|
group.GET("/search", auther.Permit("REPLY_READONLY"), replySearch) // 评论列表
|
|
group.GET("/export", auther.Permit("REPLY_READONLY"), replyExport) // 评论列表
|
|
group.POST("/pass", auther.Permit("REPLY_MGR"), adminPassReply) // 通过评论
|
|
group.POST("/recover", auther.Permit("REPLY_MGR"), adminRecoverReply) // 恢复评论
|
|
group.POST("/edit", auther.Permit("REPLY_MGR"), adminEditReply) // 编辑评论
|
|
group.POST("/del", auther.Permit("REPLY_MGR"), adminDelReply) // 删除评论
|
|
group.POST("/top", auther.Permit("REPLY_TOP_MGR"), adminTopReply) // 置顶评论
|
|
group.GET("/top/log", auther.Permit("REPLY_TOP_MGR"), adminTopReplyLog) // 置顶评论日志搜索
|
|
|
|
group.GET("/reply/top", auther.Permit("REPLY_MGR"), topChildReply)
|
|
|
|
// report
|
|
group.GET("/report/search", auther.Permit("REPLY_REPORT_READONLY"), reportSearch) // 举报列表
|
|
group.POST("/report/del", auther.Permit("REPLY_MGR"), reportDel) // 举报删除
|
|
group.POST("/report/ignore", auther.Permit("REPLY_MGR"), reportIgnore) // 举报忽略
|
|
group.POST("/report/recover", auther.Permit("REPLY_MGR"), reportRecover) // 举报恢复
|
|
group.POST("/report/transfer", auther.Permit("REPLY_MGR"), reportTransfer) // 举报转审
|
|
group.POST("/report/state", auther.Permit("REPLY_MGR"), reportStateSet) // 设置举报状态
|
|
// monitor
|
|
group.GET("/monitor/search", auther.Permit("REPLY_MONITOR_READONLY"), monitorSearch) // 监控列表
|
|
group.GET("/monitor/stats", auther.Permit("REPLY_MONITOR_READONLY"), monitorStats) // 监控统计
|
|
group.POST("/monitor/state", auther.Permit("REPLY_MONITOR_MGR"), monitorState) // 监控状态
|
|
group.GET("/mointor/log", auther.Permit("REPLY_MONITOR_READONLY"), monitorLog) // 监控操作日志
|
|
// config
|
|
group.POST("/config/update", auther.Permit("REPLY_MGR"), updateReplyConfig) // 配置更新
|
|
group.POST("/config/renew", auther.Permit("REPLY_MGR"), renewReplyConfig) // 配置添加
|
|
group.GET("/config/info", auther.Permit("REPLY_READONLY"), loadReplyConfig) // 配置信息
|
|
group.GET("/config/list", auther.Permit("REPLY_READONLY"), paginateReplyConfig) // 配置列表
|
|
// notice
|
|
group.GET("/notice/detail", auther.Permit("MANAGER_NOTICE"), getNotice) // 通知信息
|
|
group.GET("/notice/list", auther.Permit("MANAGER_NOTICE"), listNotice2) // 通知列表
|
|
group.POST("/notice/edit", auther.Permit("MANAGER_NOTICE"), editNotice) // 通知编辑
|
|
group.POST("/notice/delete", auther.Permit("MANAGER_NOTICE"), deleteNotice) // 通知删除
|
|
group.POST("/notice/offline", auther.Permit("MANAGER_NOTICE"), offlineNotice) // 下线通知
|
|
group.POST("/notice/online", auther.Permit("MANAGER_NOTICE"), onlineNotice) // 上线通知
|
|
// subject
|
|
group.GET("/subject/info", auther.Permit("REPLY_READONLY"), adminSubject) // 主题信息
|
|
group.POST("/subject/state", auther.Permit("REPLY_SUBJECT_FREEZE"), adminSubjectState) // 主题状态设置
|
|
group.POST("/subject/freeze", auther.Permit("REPLY_SUBJECT_FREEZE"), SubFreeze) // 主题冻结或解冻评论
|
|
group.GET("/subject/log", auther.Permit("REPLY_READONLY"), SubLogSearch) // 主题操作日志搜索
|
|
// action
|
|
group.GET("/action/count", auther.Permit("REPLY_MGR"), actionCount)
|
|
group.POST("/action/update", auther.Permit("REPLY_MGR"), actionUpdate)
|
|
// log
|
|
group.GET("/log", auther.Permit("REPLY_MGR"), logByRpID)
|
|
|
|
// emoji
|
|
group.GET("/emoji/list", auther.Permit("REPLY_EMOJI"), listEmoji)
|
|
group.POST("/emoji/add", auther.Permit("REPLY_EMOJI"), createEmoji)
|
|
group.POST("/emoji/state", auther.Permit("REPLY_EMOJI"), upEmojiState)
|
|
group.POST("/emoji/sort", auther.Permit("REPLY_EMOJI"), upEmojiSort)
|
|
group.POST("/emoji/edit", auther.Permit("REPLY_EMOJI"), upEmoji)
|
|
group.GET("/emoji/package/list", auther.Permit("REPLY_EMOJI"), listEmojiPacks)
|
|
group.POST("/emoji/package/add", auther.Permit("REPLY_EMOJI"), createEmojiPackage)
|
|
group.POST("/emoji/package/edit", auther.Permit("REPLY_EMOJI"), editEmojiPack)
|
|
group.POST("/emoji/package/sort", auther.Permit("REPLY_EMOJI"), upEmojiPackageSort)
|
|
// business
|
|
group.GET("/business/list", listBusiness)
|
|
group.GET("/business/get", getBusiness)
|
|
group.POST("/business/add", addBusiness)
|
|
group.POST("/business/update", upBusiness)
|
|
group.POST("/business/state", upBusiState)
|
|
|
|
// fold reply
|
|
group.POST("/fold", foldReply)
|
|
}
|
|
}
|
|
|
|
func interRouter(engine *bm.Engine) {
|
|
group := engine.Group("/x/internal/replyadmin", verifySvc.Verify)
|
|
{
|
|
//log
|
|
group.GET("/log", logByRpID)
|
|
//search
|
|
group.GET("/reply/search", replySearch)
|
|
group.GET("/report/search", reportSearch)
|
|
// moniter
|
|
group.GET("/monitor/stats", monitorStats)
|
|
group.GET("/monitor/search", monitorSearch)
|
|
group.POST("/monitor/state", monitorState)
|
|
// config
|
|
group.POST("/config/update", updateReplyConfig)
|
|
group.POST("/config/rewnew", renewReplyConfig)
|
|
group.GET("/config/info", loadReplyConfig)
|
|
group.GET("/config/list", paginateReplyConfig)
|
|
// notice
|
|
group.GET("/notice/detail", getNotice)
|
|
group.GET("/notice/list", listNotice)
|
|
group.POST("/notice/edit", editNotice)
|
|
group.POST("/notice/delete", deleteNotice)
|
|
group.POST("/notice/offline", offlineNotice)
|
|
group.POST("/notice/online", onlineNotice)
|
|
}
|
|
}
|
|
|
|
func verifyRouter(engine *bm.Engine) {
|
|
group := engine.Group("/x/admin/reply/internal")
|
|
{
|
|
group.POST("/spam", verifySvc.Verify, adminMarkAsSpam) // 标记评论为垃圾
|
|
group.POST("/del", verifySvc.Verify, adminDelReply) // 删除评论
|
|
group.POST("/callback/del", verifySvc.Verify, callbackDelReply) // 回调删除评论
|
|
group.GET("/reply", adminReplyList) // 获得评论列表接口
|
|
}
|
|
}
|
|
|
|
func ping(ctx *bm.Context) {
|
|
if err := rpSvc.Ping(ctx); err != nil {
|
|
log.Error("reply admin ping error(%v)", err)
|
|
ctx.JSON(nil, err)
|
|
ctx.AbortWithStatus(http.StatusServiceUnavailable)
|
|
}
|
|
}
|