package router import ( "net/http" "chatapp3-golang/internal/config" "chatapp3-golang/internal/service/taskcenter" "github.com/gin-gonic/gin" ) // registerTaskCenterRoutes 注册任务中心 App、后台和内部事件路由。 func registerTaskCenterRoutes(engine *gin.Engine, cfg config.Config, javaClient authGateway, service *taskcenter.Service) { if service == nil { return } appGroup := engine.Group("/app/task-center") appGroup.Use(authMiddleware(javaClient)) appGroup.GET("/list", func(c *gin.Context) { resp, err := service.ListTasks(c.Request.Context(), mustAuthUser(c)) if err != nil { writeError(c, err) return } writeOK(c, resp) }) appGroup.GET("/claimable-count", func(c *gin.Context) { resp, err := service.ClaimableCount(c.Request.Context(), mustAuthUser(c)) if err != nil { writeError(c, err) return } writeOK(c, resp) }) appGroup.POST("/claim", func(c *gin.Context) { var req taskcenter.ClaimRequest if err := c.ShouldBindJSON(&req); err != nil { writeError(c, taskcenter.NewAppError(http.StatusBadRequest, "bad_request", err.Error())) return } resp, err := service.Claim(c.Request.Context(), mustAuthUser(c), req.TaskID.Int64()) if err != nil { writeError(c, err) return } writeOK(c, resp) }) v2Group := engine.Group("/app/v2/task") v2Group.Use(authMiddleware(javaClient)) v2Group.GET("/list", func(c *gin.Context) { resp, err := service.ListTasks(c.Request.Context(), mustAuthUser(c)) if err != nil { writeError(c, err) return } writeOK(c, resp) }) v2Group.GET("/claimable-count", func(c *gin.Context) { resp, err := service.ClaimableCount(c.Request.Context(), mustAuthUser(c)) if err != nil { writeError(c, err) return } writeOK(c, resp) }) v2Group.GET("/reward", func(c *gin.Context) { resp, err := service.Claim(c.Request.Context(), mustAuthUser(c), taskcenter.ParseInt64(c.Query("taskId"))) if err != nil { writeError(c, err) return } writeOK(c, resp) }) internalGroup := engine.Group("/internal/task-center") internalGroup.Use(internalSecretMiddleware(cfg.HTTP.InternalCallbackSecret)) internalGroup.POST("/event", func(c *gin.Context) { var req taskcenter.EventRequest if err := c.ShouldBindJSON(&req); err != nil { writeError(c, taskcenter.NewAppError(http.StatusBadRequest, "bad_request", err.Error())) return } resp, err := service.ReceiveEvent(c.Request.Context(), req) if err != nil { writeError(c, err) return } writeOK(c, resp) }) adminGroup := engine.Group("/resident-activity/task-center") adminGroup.Use(consoleAuthMiddleware(javaClient)) adminGroup.GET("/config", func(c *gin.Context) { resp, err := service.GetConfig(c.Request.Context(), c.Query("sysOrigin"), c.Query("taskCategory")) if err != nil { writeError(c, err) return } writeOK(c, resp) }) adminGroup.POST("/config/save", func(c *gin.Context) { var req taskcenter.SaveConfigRequest if err := c.ShouldBindJSON(&req); err != nil { writeError(c, taskcenter.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) }) adminGroup.GET("/claim-record/page", func(c *gin.Context) { resp, err := service.PageClaimRecords( c.Request.Context(), c.Query("sysOrigin"), c.Query("taskCategory"), taskcenter.ParseInt64(c.Query("userId")), c.Query("taskCode"), c.Query("status"), c.Query("startTime"), c.Query("endTime"), int(taskcenter.ParseInt64(c.Query("cursor"))), int(taskcenter.ParseInt64(c.Query("limit"))), ) if err != nil { writeError(c, err) return } writeOK(c, resp) }) }