yumi-golang/internal/router/invite_routes.go
2026-04-24 13:04:06 +08:00

88 lines
2.3 KiB
Go

package router
import (
"net/http"
"strconv"
"chatapp3-golang/internal/service/invite"
"github.com/gin-gonic/gin"
)
// registerInviteRoutes 注册邀请活动相关路由。
func registerInviteRoutes(engine *gin.Engine, javaClient authGateway, inviteService *invite.InviteService) {
if inviteService == nil {
return
}
engine.GET("/public/h5/invite-campaign/landing", func(c *gin.Context) {
resp, err := inviteService.GetLanding(c.Request.Context(), c.Query("code"))
if err != nil {
writeError(c, err)
return
}
writeOK(c, resp)
})
internalGroup := engine.Group("/internal/invite-campaign")
internalGroup.POST("/recharge-success", func(c *gin.Context) {
var req invite.RechargeSuccessRequest
if err := c.ShouldBindJSON(&req); err != nil {
writeError(c, invite.NewAppError(http.StatusBadRequest, "bad_request", err.Error()))
return
}
resp, err := inviteService.HandleRechargeSuccess(c.Request.Context(), req)
if err != nil {
writeError(c, err)
return
}
writeOK(c, resp)
})
appGroup := engine.Group("/app/h5/invite-campaign")
appGroup.Use(authMiddleware(javaClient))
appGroup.GET("/home", func(c *gin.Context) {
resp, err := inviteService.GetHome(c.Request.Context(), mustAuthUser(c))
if err != nil {
writeError(c, err)
return
}
writeOK(c, resp)
})
appGroup.GET("/rank", func(c *gin.Context) {
limit, _ := strconv.Atoi(c.Query("limit"))
resp, err := inviteService.GetRank(c.Request.Context(), mustAuthUser(c), limit)
if err != nil {
writeError(c, err)
return
}
writeOK(c, resp)
})
appGroup.POST("/bind-code", func(c *gin.Context) {
var req invite.BindCodeRequest
if err := c.ShouldBindJSON(&req); err != nil {
writeError(c, invite.NewAppError(http.StatusBadRequest, "bad_request", err.Error()))
return
}
resp, err := inviteService.BindCode(c.Request.Context(), mustAuthUser(c), resolveClientIP(c), req)
if err != nil {
writeError(c, err)
return
}
writeOK(c, resp)
})
appGroup.POST("/tasks/claim", func(c *gin.Context) {
var req invite.TaskClaimRequest
if err := c.ShouldBindJSON(&req); err != nil {
writeError(c, invite.NewAppError(http.StatusBadRequest, "bad_request", err.Error()))
return
}
resp, err := inviteService.ClaimTask(c.Request.Context(), mustAuthUser(c), req)
if err != nil {
writeError(c, err)
return
}
writeOK(c, resp)
})
}