package router import ( "net/http" "strings" "chatapp3-golang/internal/service/firstrechargereward" "github.com/gin-gonic/gin" ) // registerFirstRechargeRewardRoutes registers app and admin first recharge reward APIs. func registerFirstRechargeRewardRoutes(engine *gin.Engine, javaClient authGateway, service *firstrechargereward.Service) { if service == nil { return } registerFirstRechargeRewardAppGroup(engine.Group("/app/first-recharge-reward"), javaClient, service) registerFirstRechargeRewardAppGroup(engine.Group("/app/h5/first-recharge-reward"), javaClient, service) group := engine.Group("/resident-activity/first-recharge-reward") group.Use(consoleAuthMiddleware(javaClient)) group.GET("/config", func(c *gin.Context) { resp, err := service.GetConfig(c.Request.Context(), c.Query("sysOrigin")) if err != nil { writeError(c, err) return } writeOK(c, resp) }) group.POST("/config/save", func(c *gin.Context) { var req firstrechargereward.SaveConfigRequest if err := c.ShouldBindJSON(&req); err != nil { writeError(c, firstrechargereward.NewAppError(http.StatusBadRequest, "bad_request", err.Error())) return } resp, err := service.SaveConfig(c.Request.Context(), req) if err != nil { writeError(c, err) return } writeOK(c, resp) }) group.GET("/grant-record/page", func(c *gin.Context) { resp, err := service.PageGrantRecords( c.Request.Context(), c.Query("sysOrigin"), c.Query("status"), firstrechargereward.ParseInt64(c.Query("userId")), int(firstrechargereward.ParseInt64(c.Query("cursor"))), int(firstrechargereward.ParseInt64(c.Query("limit"))), ) if err != nil { writeError(c, err) return } writeOK(c, resp) }) } func registerFirstRechargeRewardAppGroup(group *gin.RouterGroup, javaClient authGateway, service *firstrechargereward.Service) { group.Use(authMiddleware(javaClient)) group.GET("/home", func(c *gin.Context) { resp, err := service.GetHome(c.Request.Context(), mustAuthUser(c), firstRechargeRewardRequestVersion(c)) if err != nil { writeError(c, err) return } writeOK(c, resp) }) } func firstRechargeRewardRequestVersion(c *gin.Context) string { return firstNonEmptyString( c.Query("appVersion"), c.Query("version"), c.GetHeader("req-version"), c.GetHeader("Req-Version"), versionFromReqAppIntel(c.GetHeader("req-app-intel")), versionFromReqAppIntel(c.GetHeader("Req-App-Intel")), ) } func versionFromReqAppIntel(value string) string { for _, item := range strings.Split(value, ";") { parts := strings.SplitN(item, "=", 2) if len(parts) == 2 && strings.EqualFold(strings.TrimSpace(parts[0]), "version") { return strings.TrimSpace(parts[1]) } } return "" } func firstNonEmptyString(values ...string) string { for _, value := range values { if text := strings.TrimSpace(value); text != "" { return text } } return "" }