feat(admin): add comprehensive admin management system
- Add admin handlers and services for users, posts, comments, groups, and dashboard - Implement role permission management with ability to view and update permissions - Add database seeding for roles and Casbin permission policies - Upgrade Casbin from v2 to v3 with GORM adapter for persistent policy storage - Add admin-specific repository methods with filtering and pagination - Register new admin API routes under /api/v1/admin/*
This commit is contained in:
@@ -11,23 +11,28 @@ import (
|
||||
|
||||
// Router 路由配置
|
||||
type Router struct {
|
||||
engine *gin.Engine
|
||||
userHandler *handler.UserHandler
|
||||
postHandler *handler.PostHandler
|
||||
commentHandler *handler.CommentHandler
|
||||
messageHandler *handler.MessageHandler
|
||||
notificationHandler *handler.NotificationHandler
|
||||
uploadHandler *handler.UploadHandler
|
||||
pushHandler *handler.PushHandler
|
||||
systemMessageHandler *handler.SystemMessageHandler
|
||||
groupHandler *handler.GroupHandler
|
||||
stickerHandler *handler.StickerHandler
|
||||
gorseHandler *handler.GorseHandler
|
||||
voteHandler *handler.VoteHandler
|
||||
scheduleHandler *handler.ScheduleHandler
|
||||
roleHandler *handler.RoleHandler
|
||||
jwtService *service.JWTService
|
||||
casbinService service.CasbinService
|
||||
engine *gin.Engine
|
||||
userHandler *handler.UserHandler
|
||||
postHandler *handler.PostHandler
|
||||
commentHandler *handler.CommentHandler
|
||||
messageHandler *handler.MessageHandler
|
||||
notificationHandler *handler.NotificationHandler
|
||||
uploadHandler *handler.UploadHandler
|
||||
pushHandler *handler.PushHandler
|
||||
systemMessageHandler *handler.SystemMessageHandler
|
||||
groupHandler *handler.GroupHandler
|
||||
stickerHandler *handler.StickerHandler
|
||||
gorseHandler *handler.GorseHandler
|
||||
voteHandler *handler.VoteHandler
|
||||
scheduleHandler *handler.ScheduleHandler
|
||||
roleHandler *handler.RoleHandler
|
||||
adminUserHandler *handler.AdminUserHandler
|
||||
adminPostHandler *handler.AdminPostHandler
|
||||
adminCommentHandler *handler.AdminCommentHandler
|
||||
adminGroupHandler *handler.AdminGroupHandler
|
||||
adminDashboardHandler *handler.AdminDashboardHandler
|
||||
jwtService *service.JWTService
|
||||
casbinService service.CasbinService
|
||||
}
|
||||
|
||||
// New 创建路由
|
||||
@@ -47,6 +52,11 @@ func New(
|
||||
voteHandler *handler.VoteHandler,
|
||||
scheduleHandler *handler.ScheduleHandler,
|
||||
roleHandler *handler.RoleHandler,
|
||||
adminUserHandler *handler.AdminUserHandler,
|
||||
adminPostHandler *handler.AdminPostHandler,
|
||||
adminCommentHandler *handler.AdminCommentHandler,
|
||||
adminGroupHandler *handler.AdminGroupHandler,
|
||||
adminDashboardHandler *handler.AdminDashboardHandler,
|
||||
activityService service.UserActivityService,
|
||||
casbinService service.CasbinService,
|
||||
) *Router {
|
||||
@@ -56,23 +66,28 @@ func New(
|
||||
userHandler.SetActivityService(activityService)
|
||||
|
||||
r := &Router{
|
||||
engine: gin.Default(),
|
||||
userHandler: userHandler,
|
||||
postHandler: postHandler,
|
||||
commentHandler: commentHandler,
|
||||
messageHandler: messageHandler,
|
||||
notificationHandler: notificationHandler,
|
||||
uploadHandler: uploadHandler,
|
||||
pushHandler: pushHandler,
|
||||
systemMessageHandler: systemMessageHandler,
|
||||
groupHandler: groupHandler,
|
||||
stickerHandler: stickerHandler,
|
||||
gorseHandler: gorseHandler,
|
||||
voteHandler: voteHandler,
|
||||
scheduleHandler: scheduleHandler,
|
||||
roleHandler: roleHandler,
|
||||
jwtService: jwtService,
|
||||
casbinService: casbinService,
|
||||
engine: gin.Default(),
|
||||
userHandler: userHandler,
|
||||
postHandler: postHandler,
|
||||
commentHandler: commentHandler,
|
||||
messageHandler: messageHandler,
|
||||
notificationHandler: notificationHandler,
|
||||
uploadHandler: uploadHandler,
|
||||
pushHandler: pushHandler,
|
||||
systemMessageHandler: systemMessageHandler,
|
||||
groupHandler: groupHandler,
|
||||
stickerHandler: stickerHandler,
|
||||
gorseHandler: gorseHandler,
|
||||
voteHandler: voteHandler,
|
||||
scheduleHandler: scheduleHandler,
|
||||
roleHandler: roleHandler,
|
||||
adminUserHandler: adminUserHandler,
|
||||
adminPostHandler: adminPostHandler,
|
||||
adminCommentHandler: adminCommentHandler,
|
||||
adminGroupHandler: adminGroupHandler,
|
||||
adminDashboardHandler: adminDashboardHandler,
|
||||
jwtService: jwtService,
|
||||
casbinService: casbinService,
|
||||
}
|
||||
|
||||
r.setupRoutes()
|
||||
@@ -365,9 +380,61 @@ func (r *Router) setupRoutes() {
|
||||
{
|
||||
// 角色管理
|
||||
admin.GET("/roles", r.roleHandler.GetAllRoles)
|
||||
admin.GET("/roles/:name", r.roleHandler.GetRoleDetail)
|
||||
admin.GET("/roles/:name/permissions", r.roleHandler.GetRolePermissions)
|
||||
admin.PUT("/roles/:name/permissions", r.roleHandler.UpdateRolePermissions)
|
||||
admin.GET("/permissions", r.roleHandler.GetAllPermissions)
|
||||
admin.GET("/users/:id/roles", r.roleHandler.GetUserRoles)
|
||||
admin.POST("/users/:id/roles", r.roleHandler.AssignRole)
|
||||
admin.DELETE("/users/:id/roles/:role", r.roleHandler.RemoveRole)
|
||||
|
||||
// 用户管理
|
||||
if r.adminUserHandler != nil {
|
||||
admin.GET("/users", r.adminUserHandler.GetUserList)
|
||||
admin.GET("/users/:id", r.adminUserHandler.GetUserDetail)
|
||||
admin.PUT("/users/:id/status", r.adminUserHandler.UpdateUserStatus)
|
||||
}
|
||||
|
||||
// 帖子管理
|
||||
if r.adminPostHandler != nil {
|
||||
admin.GET("/posts", r.adminPostHandler.GetPostList)
|
||||
admin.GET("/posts/:id", r.adminPostHandler.GetPostDetail)
|
||||
admin.DELETE("/posts/:id", r.adminPostHandler.DeletePost)
|
||||
admin.PUT("/posts/:id/moderate", r.adminPostHandler.ModeratePost)
|
||||
admin.POST("/posts/batch-delete", r.adminPostHandler.BatchDeletePosts)
|
||||
admin.POST("/posts/batch-moderate", r.adminPostHandler.BatchModeratePosts)
|
||||
admin.PUT("/posts/:id/pin", r.adminPostHandler.SetPostPin)
|
||||
admin.PUT("/posts/:id/feature", r.adminPostHandler.SetPostFeature)
|
||||
}
|
||||
|
||||
// 评论管理
|
||||
if r.adminCommentHandler != nil {
|
||||
admin.GET("/comments", r.adminCommentHandler.GetCommentList)
|
||||
admin.GET("/comments/:id", r.adminCommentHandler.GetCommentDetail)
|
||||
admin.DELETE("/comments/:id", r.adminCommentHandler.DeleteComment)
|
||||
admin.POST("/comments/batch-delete", r.adminCommentHandler.BatchDeleteComments)
|
||||
admin.GET("/comments/post/:postId", r.adminCommentHandler.GetPostComments)
|
||||
}
|
||||
|
||||
// 群组管理
|
||||
if r.adminGroupHandler != nil {
|
||||
admin.GET("/groups", r.adminGroupHandler.GetGroupList)
|
||||
admin.GET("/groups/:id", r.adminGroupHandler.GetGroupDetail)
|
||||
admin.GET("/groups/:id/members", r.adminGroupHandler.GetGroupMembers)
|
||||
admin.DELETE("/groups/:id", r.adminGroupHandler.DeleteGroup)
|
||||
admin.PUT("/groups/:id/status", r.adminGroupHandler.UpdateGroupStatus)
|
||||
admin.DELETE("/groups/:id/members/:userId", r.adminGroupHandler.RemoveMember)
|
||||
admin.PUT("/groups/:id/transfer", r.adminGroupHandler.TransferOwner)
|
||||
}
|
||||
|
||||
// 仪表盘
|
||||
if r.adminDashboardHandler != nil {
|
||||
admin.GET("/dashboard/stats", r.adminDashboardHandler.GetStats)
|
||||
admin.GET("/dashboard/user-activity", r.adminDashboardHandler.GetUserActivityTrend)
|
||||
admin.GET("/dashboard/content-stats", r.adminDashboardHandler.GetContentStats)
|
||||
admin.GET("/dashboard/pending-content", r.adminDashboardHandler.GetPendingContent)
|
||||
admin.GET("/dashboard/online-users", r.adminDashboardHandler.GetOnlineUsers)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user