diff --git a/internal/api/activity/app.go b/internal/api/activity/app.go index ea46465..7e03015 100755 --- a/internal/api/activity/app.go +++ b/internal/api/activity/app.go @@ -8,6 +8,7 @@ import ( tasksvc "bindbox-game/internal/service/task_center" titlesvc "bindbox-game/internal/service/title" usersvc "bindbox-game/internal/service/user" + welfaresvc "bindbox-game/internal/service/welfare_activity" "github.com/redis/go-redis/v9" ) @@ -23,6 +24,7 @@ type handler struct { task tasksvc.Service redis *redis.Client activityOrder activitysvc.ActivityOrderService // 活动订单服务 + welfare welfaresvc.Service } func New(logger logger.CustomLogger, db mysql.Repo, rdb *redis.Client, task tasksvc.Service) *handler { @@ -38,5 +40,6 @@ func New(logger logger.CustomLogger, db mysql.Repo, rdb *redis.Client, task task task: task, redis: rdb, activityOrder: activitysvc.NewActivityOrderService(logger, db), + welfare: welfaresvc.New(logger, db), } } diff --git a/internal/api/admin/admin.go b/internal/api/admin/admin.go index b090d02..1b4f49e 100755 --- a/internal/api/admin/admin.go +++ b/internal/api/admin/admin.go @@ -18,6 +18,7 @@ import ( syscfgsvc "bindbox-game/internal/service/sysconfig" titlesvc "bindbox-game/internal/service/title" usersvc "bindbox-game/internal/service/user" + welfaresvc "bindbox-game/internal/service/welfare_activity" "github.com/redis/go-redis/v9" ) @@ -41,6 +42,7 @@ type handler struct { livestream livestreamsvc.Service synthesis synthesissvc.Service financeSvc financesvc.Service // P&L service (read-only) + welfare welfaresvc.Service } func New(logger logger.CustomLogger, db mysql.Repo, rdb *redis.Client) *handler { @@ -69,5 +71,6 @@ func New(logger logger.CustomLogger, db mysql.Repo, rdb *redis.Client) *handler livestream: livestreamsvc.New(logger, db, ticketSvc), synthesis: synthesissvc.New(db), financeSvc: financesvc.New(logger, db), + welfare: welfaresvc.New(logger, db), } } diff --git a/internal/router/router.go b/internal/router/router.go index 8918af9..be7f35f 100755 --- a/internal/router/router.go +++ b/internal/router/router.go @@ -172,6 +172,17 @@ func NewHTTPMux(logger logger.CustomLogger, db mysql.Repo) (core.Mux, func(), er adminAuthApiRouter.GET("/dashboard/order_trend", adminHandler.DashboardOrderTrend()) adminAuthApiRouter.GET("/dashboard/activity_stats", adminHandler.DashboardActivityStats()) adminAuthApiRouter.GET("/dashboard/item_card_sales", adminHandler.DashboardItemCardSales()) + adminAuthApiRouter.GET("/welfare-activities", intc.RequireAdminAction("activity:view"), adminHandler.ListWelfareActivities()) + adminAuthApiRouter.POST("/welfare-activities", intc.RequireAdminAction("activity:create"), adminHandler.CreateWelfareActivity()) + adminAuthApiRouter.GET("/welfare-activities/cost-summary", intc.RequireAdminAction("activity:view"), adminHandler.GetWelfareCostSummary()) + adminAuthApiRouter.GET("/welfare-activities/:id", intc.RequireAdminAction("activity:view"), adminHandler.GetWelfareActivity()) + adminAuthApiRouter.PUT("/welfare-activities/:id", intc.RequireAdminAction("activity:modify"), adminHandler.UpdateWelfareActivity()) + adminAuthApiRouter.DELETE("/welfare-activities/:id", intc.RequireAdminAction("activity:delete"), adminHandler.DeleteWelfareActivity()) + adminAuthApiRouter.POST("/welfare-activities/:id/copy", intc.RequireAdminAction("activity:create"), adminHandler.CopyWelfareActivity()) + adminAuthApiRouter.GET("/welfare-activities/:id/participants", intc.RequireAdminAction("activity:view"), adminHandler.ListWelfareParticipants()) + adminAuthApiRouter.GET("/welfare-activities/:id/winners", intc.RequireAdminAction("activity:view"), adminHandler.ListWelfareWinners()) + adminAuthApiRouter.POST("/welfare-activities/:id/draw", intc.RequireAdminAction("activity:modify"), adminHandler.DrawWelfareActivity()) + adminAuthApiRouter.GET("/welfare-activities/:id/cost", intc.RequireAdminAction("activity:view"), adminHandler.GetWelfareCost()) adminAuthApiRouter.POST("/activities", intc.RequireAdminAction("activity:create"), adminHandler.CreateActivity()) adminAuthApiRouter.GET("/activities", intc.RequireAdminAction("activity:view"), adminHandler.ListActivities()) adminAuthApiRouter.PUT("/activities/:activity_id", intc.RequireAdminAction("activity:modify"), adminHandler.ModifyActivity()) @@ -444,6 +455,10 @@ func NewHTTPMux(logger logger.CustomLogger, db mysql.Repo) (core.Mux, func(), er appPublicApiRouter.GET("/activities/:activity_id/issues/:issue_id/rewards", activityHandler.ListIssueRewards()) appPublicApiRouter.GET("/activities/:activity_id/issues/:issue_id/draw_logs", activityHandler.ListDrawLogs()) appPublicApiRouter.GET("/activities/:activity_id/issues/:issue_id/draw_logs_grouped", activityHandler.ListDrawLogsByLevel()) + appPublicApiRouter.GET("/welfare-activities", activityHandler.ListWelfareActivities()) + appPublicApiRouter.GET("/welfare-activities/:id", activityHandler.GetWelfareActivity()) + appPublicApiRouter.GET("/welfare-activities/:id/participants", activityHandler.ListWelfareParticipants()) + appPublicApiRouter.GET("/welfare-activities/:id/winners", activityHandler.ListWelfareWinners()) // APP 端轮播图 appPublicApiRouter.GET("/banners", appapi.NewBanner(logger, db).ListBannersForApp()) @@ -511,6 +526,9 @@ func NewHTTPMux(logger logger.CustomLogger, db mysql.Repo) (core.Mux, func(), er appAuthApiRouter.PUT("/users/:user_id/addresses/:address_id", userHandler.UpdateUserAddress()) appAuthApiRouter.DELETE("/users/:user_id/addresses/:address_id", userHandler.DeleteUserAddress()) + appAuthApiRouter.GET("/welfare-activities/:id/my", activityHandler.GetWelfareActivity()) + appAuthApiRouter.POST("/welfare-activities/:id/join", activityHandler.JoinWelfareActivity()) + // 任务中心 APP 端 appAuthApiRouter.GET("/task-center/tasks", taskCenterHandler.ListTasksForApp()) appAuthApiRouter.GET("/task-center/tasks/:id/progress/:user_id", taskCenterHandler.GetTaskProgressForApp()) diff --git a/main.go b/main.go index a924377..8a5de3a 100755 --- a/main.go +++ b/main.go @@ -20,6 +20,7 @@ import ( syscfgsvc "bindbox-game/internal/service/sysconfig" titlesvc "bindbox-game/internal/service/title" usersvc "bindbox-game/internal/service/user" + welfaresvc "bindbox-game/internal/service/welfare_activity" "flag" @@ -99,6 +100,7 @@ func main() { }() activitysvc.StartScheduledSettlement(customLogger, dbRepo, redis.GetClient()) + welfaresvc.StartScheduledDraw(customLogger, dbRepo) usersvc.StartExpirationCheck(customLogger, dbRepo) usersvc.StartAutoCancelWorker(customLogger, dbRepo)