You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
222 lines
8.5 KiB
222 lines
8.5 KiB
package route
|
|
|
|
import (
|
|
"github.com/gin-gonic/gin"
|
|
|
|
"laic-backend/common"
|
|
"laic-backend/handler"
|
|
"laic-backend/logger"
|
|
"laic-backend/middleware"
|
|
"laic-backend/websocket"
|
|
)
|
|
|
|
// InitRouter 初始化 gin 引擎与路由注册
|
|
func InitRouter(port int32) {
|
|
common.Server(true)
|
|
common.SetWriter(logger.GetLogWriter())
|
|
|
|
engine := common.GetEngine()
|
|
engine.Use(middleware.TraceMiddleware(), middleware.CORSMiddleware(), middleware.DefaultLogMiddleware(), middleware.RateLimitMiddleware(300, 60))
|
|
|
|
// 健康检查
|
|
engine.GET("/health", func(c *gin.Context) {
|
|
common.OKWithData(c, gin.H{"status": "up"})
|
|
})
|
|
|
|
// 阿里云直播回调使用独立令牌鉴权,不能进入用户 JWT 或操作日志中间件。
|
|
engine.POST("/pay/wx/callback", handler.AGPayCallback)
|
|
engine.POST("/internal/callbacks/aliyun/live", handler.HandleAliyunLiveCallback)
|
|
|
|
// v1 业务路由
|
|
v1 := common.RouteGroup("/v1")
|
|
v1.Use(middleware.OperationLogMiddleware())
|
|
|
|
// 实时监控 WS(设备状态 + 告警推送)
|
|
v1.GET("/ws/monitor", middleware.AuthMiddleware(), websocket.HandleMonitor)
|
|
|
|
// 认证(公开)
|
|
auth := v1.Group("/auth")
|
|
{
|
|
auth.GET("/captcha", handler.Captcha)
|
|
auth.POST("/register", handler.Register)
|
|
auth.POST("/login", handler.Login)
|
|
auth.POST("/refresh", handler.Refresh)
|
|
auth.POST("/sms-code", handler.SmsCode)
|
|
auth.POST("/reset-password", handler.ResetPassword)
|
|
auth.POST("/logout", middleware.AuthMiddleware(), handler.Logout)
|
|
}
|
|
|
|
// 账户中心(资料 / 流量 / SIM 卡)
|
|
account := v1.Group("/account", middleware.AuthMiddleware())
|
|
{
|
|
account.GET("/profile", handler.GetProfile)
|
|
account.PUT("/profile", handler.UpdateProfile)
|
|
account.GET("/traffic/balance", handler.GetTrafficBalance)
|
|
account.GET("/traffic-packages", handler.ListTrafficPackages)
|
|
account.GET("/resource-summary", handler.GetResourceSummary)
|
|
account.GET("/downloads", handler.GetDownloadPage)
|
|
account.GET("/traffic/usage", handler.GetUsagePage)
|
|
account.GET("/traffic/orders", handler.GetOrderPage)
|
|
account.POST("/traffic/orders", handler.CreateTrafficOrder)
|
|
account.DELETE("/traffic/orders/:id", handler.CancelTrafficOrder)
|
|
account.POST("/payments", handler.CreateWechatPayment)
|
|
account.GET("/payments/:id", handler.GetPaymentTransaction)
|
|
account.GET("/sim-cards", handler.ListSimCards)
|
|
account.POST("/sim-cards", handler.CreateSimCard)
|
|
account.DELETE("/sim-cards/:id", handler.DeleteSimCard)
|
|
account.GET("/sim-cards/:id", handler.GetSimCard)
|
|
account.GET("/sim-packages", handler.ListSimPackages)
|
|
account.POST("/sim-cards/:id/recharge-orders", handler.CreateSimRechargeOrder)
|
|
account.GET("/sim-recharge-orders/:id", handler.GetSimRechargeOrder)
|
|
account.DELETE("/sim-recharge-orders/:id", handler.CancelSimRechargeOrder)
|
|
account.GET("/sim-recharge-logs", handler.GetSimRechargeLogPage)
|
|
account.POST("/security/change-password", handler.ChangePassword)
|
|
account.GET("/security/sessions", handler.ListSessions)
|
|
account.DELETE("/security/sessions", handler.RevokeOtherSessions)
|
|
account.DELETE("/security/sessions/:id", handler.RevokeSession)
|
|
account.GET("/invoice-profiles", handler.ListInvoiceProfiles)
|
|
account.POST("/invoice-profiles", handler.SaveInvoiceProfile)
|
|
account.PUT("/invoice-profiles/:id", handler.SaveInvoiceProfile)
|
|
account.DELETE("/invoice-profiles/:id", handler.DeleteInvoiceProfile)
|
|
account.GET("/invoice-orders", handler.ListInvoiceOrders)
|
|
account.GET("/invoice-requests", handler.ListInvoiceRequests)
|
|
account.POST("/invoice-requests", handler.CreateInvoiceRequest)
|
|
account.PUT("/invoice-requests/:id/review", middleware.AdminMiddleware(), handler.ReviewInvoiceRequest)
|
|
}
|
|
|
|
// 机巢 & 无人机
|
|
docks := v1.Group("/docks", middleware.AuthMiddleware())
|
|
{
|
|
docks.GET("", handler.GetDockPage)
|
|
docks.POST("", handler.CreateDock)
|
|
docks.GET("/:id", handler.GetDock)
|
|
docks.PUT("/:id", handler.UpdateDock)
|
|
docks.DELETE("/:id", handler.DeleteDock)
|
|
docks.GET("/:id/status", handler.GetDockStatus)
|
|
docks.POST("/:id/command", handler.DispatchCommand)
|
|
docks.POST("/:id/firmware/upgrade", handler.UpgradeFirmware)
|
|
}
|
|
|
|
drones := v1.Group("/drones", middleware.AuthMiddleware())
|
|
{
|
|
drones.GET("", handler.GetDronePage)
|
|
drones.GET("/:id", handler.GetDrone)
|
|
drones.PUT("/:id", handler.UpdateDrone)
|
|
drones.DELETE("/:id", handler.DeleteDrone)
|
|
drones.GET("/:id/telemetry", handler.GetDroneTelemetry)
|
|
}
|
|
|
|
// 告警
|
|
alarms := v1.Group("/alarms", middleware.AuthMiddleware())
|
|
{
|
|
alarms.GET("", handler.GetAlarmPage)
|
|
alarms.PUT("/:id/acknowledge", handler.AcknowledgeAlarm)
|
|
alarms.PUT("/:id/resolve", handler.ResolveAlarm)
|
|
}
|
|
|
|
// 指令历史
|
|
commands := v1.Group("/commands", middleware.AuthMiddleware())
|
|
{
|
|
commands.GET("", handler.GetCommandPage)
|
|
commands.GET("/:id", handler.GetCommand)
|
|
}
|
|
|
|
// 航线
|
|
routes := v1.Group("/routes", middleware.AuthMiddleware())
|
|
{
|
|
routes.GET("", handler.GetRoutePage)
|
|
routes.POST("", handler.CreateRoute)
|
|
routes.GET("/:id", handler.GetRoute)
|
|
routes.PUT("/:id", handler.UpdateRoute)
|
|
routes.DELETE("/:id", handler.DeleteRoute)
|
|
}
|
|
|
|
// 任务
|
|
tasks := v1.Group("/tasks", middleware.AuthMiddleware())
|
|
{
|
|
tasks.GET("", handler.GetTaskPage)
|
|
tasks.POST("", handler.CreateTask)
|
|
tasks.GET("/:id", handler.GetTask)
|
|
tasks.PUT("/:id", handler.UpdateTask)
|
|
tasks.DELETE("/:id", handler.DeleteTask)
|
|
tasks.POST("/:id/execute", handler.ExecuteTask)
|
|
}
|
|
|
|
// 执行记录
|
|
executions := v1.Group("/executions", middleware.AuthMiddleware())
|
|
{
|
|
executions.GET("", handler.GetExecutionPage)
|
|
executions.GET("/:id", handler.GetExecution)
|
|
executions.GET("/:id/trajectory", handler.GetTrajectory)
|
|
}
|
|
|
|
// 已发布固件列表(普通用户可选升级,无需 admin)
|
|
v1.GET("/firmwares/released", middleware.AuthMiddleware(), handler.GetReleasedFirmwares)
|
|
|
|
// 固件管理(admin)
|
|
firmwares := v1.Group("/firmwares", middleware.AuthMiddleware(), middleware.AdminMiddleware())
|
|
{
|
|
firmwares.GET("", handler.GetFirmwarePage)
|
|
firmwares.GET("/:id", handler.GetFirmware)
|
|
firmwares.POST("", handler.CreateFirmware)
|
|
firmwares.PUT("/:id", handler.UpdateFirmware)
|
|
firmwares.DELETE("/:id", handler.DeleteFirmware)
|
|
}
|
|
|
|
// 直播
|
|
live := v1.Group("/live", middleware.AuthMiddleware())
|
|
{
|
|
live.GET("", handler.GetLivePage)
|
|
live.POST("/:dockId/start", handler.StartLive)
|
|
live.POST("/:dockId/stop", handler.StopLive)
|
|
live.GET("/:dockId/play-url", handler.GetLivePlayURL)
|
|
live.POST("/:dockId/sessions", handler.CreateLiveSession)
|
|
live.GET("/:dockId/sessions/:streamSessionId", handler.GetLiveSession)
|
|
live.POST("/:dockId/sessions/:streamSessionId/heartbeat", handler.HeartbeatLiveSession)
|
|
live.DELETE("/:dockId/sessions/:streamSessionId/viewers/me", handler.LeaveLiveSession)
|
|
}
|
|
|
|
// 视频(OSS 上传/下载)
|
|
videos := v1.Group("/videos", middleware.AuthMiddleware())
|
|
{
|
|
videos.POST("", handler.CreateVideoUpload)
|
|
videos.POST("/:id/complete", handler.CompleteVideoUpload)
|
|
videos.GET("", handler.GetVideoPage)
|
|
videos.GET("/:id", handler.GetVideo)
|
|
videos.POST("/:id/download", handler.DownloadVideo)
|
|
}
|
|
|
|
// 平台流量资源与套餐管理(admin)
|
|
trafficAdmin := v1.Group("/admin/traffic", middleware.AuthMiddleware(), middleware.AdminMiddleware())
|
|
{
|
|
trafficAdmin.GET("/pool", handler.GetPlatformResourcePool)
|
|
trafficAdmin.POST("/purchases", handler.CreatePlatformPurchase)
|
|
trafficAdmin.POST("/test-grants", handler.GrantTrafficForTest)
|
|
trafficAdmin.GET("/purchases", handler.GetPlatformPurchasePage)
|
|
trafficAdmin.GET("/packages", handler.GetTrafficPackagePage)
|
|
trafficAdmin.POST("/packages", handler.CreateTrafficPackage)
|
|
trafficAdmin.PUT("/packages/:id", handler.UpdateTrafficPackage)
|
|
trafficAdmin.DELETE("/packages/:id", handler.DeleteTrafficPackage)
|
|
trafficAdmin.GET("/ledger", handler.GetTrafficLedgerPage)
|
|
}
|
|
|
|
// SIM 通信卡套餐管理(admin)
|
|
simPackages := v1.Group("/admin/sim-packages", middleware.AuthMiddleware(), middleware.AdminMiddleware())
|
|
{
|
|
simPackages.POST("/provider-plans", handler.GetSimProviderPlans)
|
|
simPackages.GET("", handler.GetSimPackagePage)
|
|
simPackages.POST("", handler.CreateSimPackage)
|
|
simPackages.PUT("/:id", handler.UpdateSimPackage)
|
|
simPackages.DELETE("/:id", handler.DeleteSimPackage)
|
|
}
|
|
|
|
users := v1.Group("/users", middleware.AuthMiddleware(), middleware.AdminMiddleware())
|
|
{
|
|
users.GET("", handler.GetUserPage)
|
|
users.POST("", handler.CreateUser)
|
|
users.PUT("/:id", handler.UpdateUser)
|
|
users.DELETE("/:id", handler.DeleteUser)
|
|
}
|
|
v1.GET("/roles", middleware.AuthMiddleware(), middleware.AdminMiddleware(), handler.GetRoles)
|
|
v1.GET("/logs/operation", middleware.AuthMiddleware(), handler.GetOperationLogPage)
|
|
}
|
|
|