package router import ( "errors" "io" "net/http" "strconv" "strings" "chatapp3-golang/internal/service/apppopup" "github.com/gin-gonic/gin" ) // registerAppPopupRoutes 注册 APP 进场弹窗接口。 func registerAppPopupRoutes(engine *gin.Engine, javaClient authGateway, service *apppopup.Service) { if service == nil { return } appGroup := engine.Group("/app/popups") appGroup.Use(authMiddleware(javaClient)) appGroup.POST("/entry", func(c *gin.Context) { var req apppopup.EntryQueryRequest if err := c.ShouldBindJSON(&req); err != nil && !errors.Is(err, io.EOF) { writeError(c, apppopup.NewAppError(http.StatusBadRequest, "bad_request", err.Error())) return } resp, err := service.QueryEntryPopups(c.Request.Context(), mustAuthUser(c), req) if err != nil { writeError(c, err) return } writeOK(c, resp) }) adminGroup := engine.Group("/app-system/home-popups") adminGroup.Use(consoleAuthMiddleware(javaClient)) adminGroup.GET("/configs", func(c *gin.Context) { cursor, _ := strconv.Atoi(strings.TrimSpace(c.DefaultQuery("cursor", "1"))) limit, _ := strconv.Atoi(strings.TrimSpace(c.DefaultQuery("limit", "20"))) resp, err := service.PageAdminConfigs( c.Request.Context(), c.Query("sysOrigin"), c.Query("scene"), c.Query("popupKey"), cursor, limit, ) if err != nil { writeError(c, err) return } writeOK(c, resp) }) adminGroup.POST("/configs/save", func(c *gin.Context) { var req apppopup.SaveAdminConfigRequest if err := c.ShouldBindJSON(&req); err != nil { writeError(c, apppopup.NewAppError(http.StatusBadRequest, "bad_request", err.Error())) return } resp, err := service.SaveAdminConfig(c.Request.Context(), req) if err != nil { writeError(c, err) return } writeOK(c, resp) }) adminGroup.DELETE("/configs/:id", func(c *gin.Context) { id, _ := strconv.ParseInt(strings.TrimSpace(c.Param("id")), 10, 64) if err := service.DeleteAdminConfig(c.Request.Context(), id); err != nil { writeError(c, err) return } writeOK(c, gin.H{"deleted": true}) }) }