232 lines
11 KiB
Go
232 lines
11 KiB
Go
package routes
|
||
|
||
import (
|
||
"github.com/goravel/framework/contracts/route"
|
||
"github.com/goravel/framework/facades"
|
||
httpmiddleware "github.com/goravel/framework/http/middleware"
|
||
|
||
"goravel/app/http/controllers/admin"
|
||
"goravel/app/http/middleware"
|
||
)
|
||
|
||
func Admin() {
|
||
adminAuthController := admin.NewAuthController()
|
||
adminController := admin.NewAdminController()
|
||
roleController := admin.NewRoleController()
|
||
permissionController := admin.NewPermissionController()
|
||
menuController := admin.NewMenuController()
|
||
departmentController := admin.NewDepartmentController()
|
||
dictionaryController := admin.NewDictionaryController()
|
||
configController := admin.NewConfigController()
|
||
blacklistController := admin.NewBlacklistController()
|
||
onlineAdminController := admin.NewOnlineAdminController()
|
||
operationLogController := admin.NewOperationLogController()
|
||
loginLogController := admin.NewLoginLogController()
|
||
systemLogController := admin.NewSystemLogController()
|
||
dashboardController := admin.NewDashboardController()
|
||
// debugController := admin.NewDebugController()
|
||
monitorController := admin.NewMonitorController()
|
||
notificationController := admin.NewNotificationController()
|
||
notificationWsController := admin.NewNotificationWsController()
|
||
optionController := admin.NewOptionController()
|
||
exportController := admin.NewExportController()
|
||
attachmentController := admin.NewAttachmentController()
|
||
orderController := admin.NewOrderController()
|
||
userController := admin.NewUserController()
|
||
userBalanceLogController := admin.NewUserBalanceLogController()
|
||
paymentMethodController := admin.NewPaymentMethodController()
|
||
paymentController := admin.NewPaymentController()
|
||
codeGeneratorController := admin.NewCodeGeneratorController()
|
||
articleController := admin.NewArticleController()
|
||
|
||
// Admin 路由组:统一前缀和域名限制
|
||
facades.Route().Prefix("api/admin").Middleware(middleware.Domain(facades.Config().Get("domains.admin"))).Group(func(router route.Router) {
|
||
|
||
// 登录相关(不需要认证,但需要多语言)
|
||
router.Middleware(middleware.Lang()).Group(func(router route.Router) {
|
||
router.Middleware(httpmiddleware.Throttle("login")).Post("login", adminAuthController.Login)
|
||
router.Get("login/captcha", adminAuthController.Captcha)
|
||
})
|
||
|
||
// 基础功能(需要认证和多语言,但不需要权限验证和操作日志)
|
||
router.Middleware(middleware.Lang(), middleware.Jwt()).Group(func(router route.Router) {
|
||
// 认证相关
|
||
router.Get("info", adminAuthController.Info)
|
||
|
||
router.Post("logout", adminAuthController.Logout)
|
||
router.Get("heartbeat", adminAuthController.Heartbeat)
|
||
|
||
// 谷歌验证码相关
|
||
router.Get("google-authenticator/status", adminAuthController.GetGoogleAuthenticatorStatus)
|
||
router.Get("google-authenticator/qrcode", adminAuthController.GetGoogleAuthenticatorQRCode)
|
||
router.Post("google-authenticator/bind", adminAuthController.BindGoogleAuthenticator)
|
||
router.Post("google-authenticator/unbind", adminAuthController.UnbindGoogleAuthenticator)
|
||
|
||
// 通知中心
|
||
router.Get("notifications", notificationController.Index)
|
||
router.Get("notifications/unread-count", notificationController.UnreadCount)
|
||
router.Get("notifications/recent", notificationController.Recent)
|
||
router.Post("notifications/{id}/read", notificationController.MarkRead)
|
||
router.Post("notifications/read-all", notificationController.MarkAllRead)
|
||
|
||
// 统一的下拉选项接口(不需要权限验证)
|
||
router.Get("options", optionController.Index)
|
||
|
||
router.Get("dictionaries/types", dictionaryController.GetAllTypes)
|
||
|
||
})
|
||
|
||
// 需要认证、多语言、权限验证和操作日志的路由
|
||
router.Middleware(middleware.Lang(), middleware.Jwt(), middleware.Permission(), middleware.OperationLog()).Group(func(router route.Router) {
|
||
|
||
router.Put("profile", adminAuthController.UpdateProfile)
|
||
|
||
// 密码管理
|
||
passwordController := admin.NewPasswordController()
|
||
router.Put("password", passwordController.UpdatePassword)
|
||
router.Put("admins/{id}/password", passwordController.ResetPassword)
|
||
|
||
// 管理员管理
|
||
router.Resource("admins", adminController)
|
||
router.Post("admins/export", adminController.Export)
|
||
router.Delete("admins/{id}/tokens", adminAuthController.KickOutUser) // 踢出指定用户的所有token
|
||
router.Post("admins/{id}/unbind-google-auth", adminController.UnbindGoogleAuthenticator) // 解绑管理员的谷歌验证码
|
||
|
||
// 角色管理 - 使用 Resource 路由
|
||
router.Resource("roles", roleController)
|
||
|
||
// 权限管理 - 使用 Resource 路由
|
||
router.Resource("permissions", permissionController)
|
||
|
||
// 菜单管理 - 使用 Resource 路由
|
||
router.Resource("menus", menuController)
|
||
|
||
// 部门管理 - 使用 Resource 路由
|
||
router.Resource("departments", departmentController)
|
||
|
||
// 字典管理
|
||
router.Resource("dictionaries", dictionaryController)
|
||
router.Get("dictionaries/type/{type}", dictionaryController.GetByType)
|
||
|
||
// 配置管理
|
||
router.Get("configs/group/{group}", configController.GetByGroup)
|
||
router.Post("configs/save", configController.Save)
|
||
router.Post("configs/test-email", configController.TestEmail)
|
||
|
||
// 黑名单管理
|
||
router.Resource("blacklists", blacklistController)
|
||
|
||
// 在线管理员管理
|
||
router.Get("online-admins", onlineAdminController.Index)
|
||
router.Delete("online-admins/{id}", onlineAdminController.KickOut)
|
||
router.Post("online-admins/batch-kick-out", onlineAdminController.BatchKickOut)
|
||
|
||
// 操作日志
|
||
router.Get("operation-logs", operationLogController.Index)
|
||
router.Get("operation-logs/title-options", operationLogController.GetTitleOptions)
|
||
router.Get("operation-logs/{id}", operationLogController.Show)
|
||
router.Delete("operation-logs/{id}", operationLogController.Destroy)
|
||
router.Post("operation-logs/batch-delete", operationLogController.BatchDestroy)
|
||
// router.Post("operation-logs/clean", operationLogController.Clean)
|
||
|
||
// 导出管理
|
||
router.Get("exports", exportController.Index)
|
||
router.Get("exports/{id}/download", exportController.Download)
|
||
// SSE 路由:实时推送导出任务进度(之前没有进度查询接口,直接使用 SSE)
|
||
// router.Get("exports/{id}/progress", exportController.StreamExportProgress)
|
||
router.Delete("exports/{id}", exportController.Destroy)
|
||
router.Post("exports/batch-delete", exportController.BatchDestroy)
|
||
|
||
// 登录日志
|
||
router.Get("login-logs", loginLogController.Index)
|
||
router.Get("login-logs/{id}", loginLogController.Show)
|
||
router.Delete("login-logs/{id}", loginLogController.Destroy)
|
||
router.Post("login-logs/batch-delete", loginLogController.BatchDestroy)
|
||
// router.Post("login-logs/clean", loginLogController.Clean)
|
||
|
||
// 系统日志
|
||
router.Get("system-logs", systemLogController.Index)
|
||
router.Get("system-logs/{id}", systemLogController.Show)
|
||
router.Delete("system-logs/{id}", systemLogController.Destroy)
|
||
router.Post("system-logs/batch-delete", systemLogController.BatchDestroy)
|
||
// router.Post("system-logs/clean", systemLogController.Clean)
|
||
|
||
// Dashboard 统计
|
||
// 原路由:按需查询特定数据(适合一次性查询或按需刷新)
|
||
router.Get("dashboard/count", dashboardController.GetCount)
|
||
router.Get("dashboard/user-access-source", dashboardController.GetUserAccessSource)
|
||
router.Get("dashboard/weekly-user-activity", dashboardController.GetWeeklyUserActivity)
|
||
router.Get("dashboard/monthly-sales", dashboardController.GetMonthlySales)
|
||
router.Get("dashboard/recent-activities", dashboardController.GetRecentActivities)
|
||
// SSE 路由:实时推送所有 Dashboard 数据(适合实时 Dashboard 页面,自动更新)
|
||
router.Get("dashboard/stream", dashboardController.StreamDashboardData)
|
||
|
||
// 服务监控
|
||
// 原路由:手动刷新、一次性查询(适合按需查看或定时刷新)
|
||
router.Get("monitor/system-info", monitorController.GetSystemInfo)
|
||
// SSE 路由:实时推送系统监控数据(适合实时监控页面,自动更新)
|
||
router.Get("monitor/system-info/stream", monitorController.StreamSystemInfo)
|
||
|
||
// 系统公告/通知
|
||
router.Post("notifications", notificationController.Store)
|
||
|
||
// 调试: trace id 日志验证
|
||
// router.Get("debug/trace-test", debugController.TraceTest)
|
||
|
||
// 附件管理
|
||
router.Get("attachments", attachmentController.Index)
|
||
router.Post("attachments/upload", attachmentController.Upload)
|
||
// 统一的分片上传接口(POST,action参数:init/upload/merge)
|
||
router.Post("attachments/chunk", attachmentController.ChunkUpload)
|
||
// 获取上传进度(GET,action=progress)- 适合断点续传检查、一次性查询
|
||
router.Get("attachments/chunk", attachmentController.ChunkUpload)
|
||
router.Get("attachments/{id}/preview", attachmentController.Preview)
|
||
router.Get("attachments/{id}/download", attachmentController.Download)
|
||
router.Put("attachments/{id}/display-name", attachmentController.UpdateDisplayName)
|
||
router.Delete("attachments/{id}", attachmentController.Destroy)
|
||
router.Post("attachments/batch-delete", attachmentController.BatchDestroy)
|
||
|
||
// 订单管理
|
||
router.Resource("orders", orderController)
|
||
router.Post("orders/export", orderController.Export)
|
||
router.Post("orders/import", orderController.Import)
|
||
router.Get("orders/export/status/:id", orderController.GetExportStatus)
|
||
|
||
// 用户管理
|
||
router.Resource("users", userController)
|
||
router.Post("users/{id}/update-balance", userController.UpdateBalance)
|
||
router.Put("users/{id}/password", userController.ResetPassword)
|
||
router.Post("users/export", userController.Export)
|
||
|
||
// 用户余额变动记录
|
||
router.Get("user-balance-logs", userBalanceLogController.Index)
|
||
router.Post("user-balance-logs", userBalanceLogController.Store)
|
||
router.Get("user-balance-logs/statistics", userBalanceLogController.Statistics)
|
||
|
||
// 支付方式管理
|
||
router.Resource("payment-methods", paymentMethodController)
|
||
|
||
// 支付记录管理
|
||
router.Get("payments", paymentController.Index)
|
||
router.Get("payments/{id}", paymentController.Show)
|
||
router.Post("payments/export", paymentController.Export)
|
||
router.Get("payments/export/status/{id}", paymentController.GetExportStatus)
|
||
|
||
router.Resource("articles", articleController)
|
||
|
||
// 代码生成器(仅在开发环境可用)
|
||
router.Middleware(middleware.DevelopmentOnly()).Group(func(router route.Router) {
|
||
router.Get("code-generator/field-types", codeGeneratorController.GetFieldTypes)
|
||
router.Post("code-generator/preview", codeGeneratorController.Preview)
|
||
router.Post("code-generator/generate", codeGeneratorController.Generate)
|
||
router.Post("code-generator/save", codeGeneratorController.Save)
|
||
})
|
||
|
||
})
|
||
|
||
})
|
||
|
||
// 通知 WebSocket(不在域名限制范围内)
|
||
facades.Route().Get("/ws/admin/notifications", notificationWsController.Server)
|
||
}
|