126 lines
4.0 KiB
Go
126 lines
4.0 KiB
Go
package router
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"chatapp3-golang/internal/config"
|
|
"chatapp3-golang/internal/service/highwin"
|
|
"chatapp3-golang/internal/service/regionimgroup"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
// registerRegionIMGroupRoutes 注册区域通用 IM 群组和区域广播接口。
|
|
func registerRegionIMGroupRoutes(
|
|
engine *gin.Engine,
|
|
cfg config.Config,
|
|
javaClient authGateway,
|
|
service *regionimgroup.Service,
|
|
) {
|
|
if service == nil {
|
|
return
|
|
}
|
|
|
|
registerRegionIMGroupAppRoutes(engine, javaClient, service)
|
|
registerRegionIMGroupInternalRoutes(engine, cfg, service)
|
|
registerRegionIMGroupAdminRoutes(engine, javaClient, service)
|
|
}
|
|
|
|
func registerRegionIMGroupAppRoutes(engine *gin.Engine, javaClient authGateway, service *regionimgroup.Service) {
|
|
handler := func(c *gin.Context) {
|
|
resp, err := service.GetCurrentRegionIMGroup(c.Request.Context(), mustAuthUser(c))
|
|
if err != nil {
|
|
writeError(c, err)
|
|
return
|
|
}
|
|
writeOK(c, resp)
|
|
}
|
|
|
|
appGroup := engine.Group("/app/region-im-group")
|
|
appGroup.Use(authMiddleware(javaClient))
|
|
appGroup.GET("/current", handler)
|
|
|
|
legacyGroup := engine.Group("/app/voice-room/red-packet")
|
|
legacyGroup.Use(authMiddleware(javaClient))
|
|
legacyGroup.GET("/im-group", handler)
|
|
}
|
|
|
|
func registerRegionIMGroupInternalRoutes(engine *gin.Engine, cfg config.Config, service *regionimgroup.Service) {
|
|
internalGroup := engine.Group("/internal/voice-room")
|
|
internalGroup.Use(internalSecretMiddleware(cfg.HTTP.InternalCallbackSecret))
|
|
internalGroup.POST("/region-broadcast", func(c *gin.Context) {
|
|
var req regionimgroup.RegionBroadcastRequest
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|
writeError(c, regionimgroup.NewAppError(http.StatusBadRequest, "bad_request", err.Error()))
|
|
return
|
|
}
|
|
resp, err := service.SendRegionBroadcast(c.Request.Context(), req)
|
|
if err != nil {
|
|
writeError(c, err)
|
|
return
|
|
}
|
|
writeOK(c, resp)
|
|
})
|
|
}
|
|
|
|
func registerRegionIMGroupAdminRoutes(engine *gin.Engine, javaClient authGateway, service *regionimgroup.Service) {
|
|
registerRegionIMGroupAdminGroup(engine.Group("/region/config"), javaClient, service)
|
|
registerRegionIMGroupAdminGroup(engine.Group("/resident-activity/voice-room-red-packet"), javaClient, service)
|
|
registerRegionBroadcastSimulationAdminGroup(engine.Group("/operate/region-broadcast"), javaClient, service)
|
|
}
|
|
|
|
func registerRegionIMGroupAdminGroup(group *gin.RouterGroup, javaClient authGateway, service *regionimgroup.Service) {
|
|
group.Use(consoleAuthMiddleware(javaClient))
|
|
group.GET("/im-groups", func(c *gin.Context) {
|
|
resp, err := service.ListRegionIMGroups(c.Request.Context(), c.Query("sysOrigin"))
|
|
if err != nil {
|
|
writeError(c, err)
|
|
return
|
|
}
|
|
writeOK(c, resp)
|
|
})
|
|
group.POST("/im-groups/save", func(c *gin.Context) {
|
|
var req regionimgroup.RegionIMGroupRequest
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|
writeError(c, regionimgroup.NewAppError(http.StatusBadRequest, "bad_request", err.Error()))
|
|
return
|
|
}
|
|
resp, err := service.SaveRegionIMGroup(c.Request.Context(), req)
|
|
if err != nil {
|
|
writeError(c, err)
|
|
return
|
|
}
|
|
writeOK(c, resp)
|
|
})
|
|
group.POST("/im-groups/create", func(c *gin.Context) {
|
|
var req regionimgroup.RegionIMGroupRequest
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|
writeError(c, regionimgroup.NewAppError(http.StatusBadRequest, "bad_request", err.Error()))
|
|
return
|
|
}
|
|
resp, err := service.CreateRegionIMGroup(c.Request.Context(), req)
|
|
if err != nil {
|
|
writeError(c, err)
|
|
return
|
|
}
|
|
writeOK(c, resp)
|
|
})
|
|
}
|
|
|
|
func registerRegionBroadcastSimulationAdminGroup(group *gin.RouterGroup, javaClient authGateway, service *regionimgroup.Service) {
|
|
group.Use(consoleAuthMiddleware(javaClient))
|
|
group.POST("/simulate", func(c *gin.Context) {
|
|
var req highwin.BroadcastSimulationRequest
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|
writeError(c, regionimgroup.NewAppError(http.StatusBadRequest, "bad_request", err.Error()))
|
|
return
|
|
}
|
|
resp, err := highwin.SendSimulationBroadcast(c.Request.Context(), service, req)
|
|
if err != nil {
|
|
writeError(c, err)
|
|
return
|
|
}
|
|
writeOK(c, resp)
|
|
})
|
|
}
|