yumi-golang/internal/router/app_popup_routes.go
2026-05-08 18:55:47 +08:00

78 lines
2.0 KiB
Go

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})
})
}