Some checks failed
Build docker and publish / linux (1.24.5) (push) Failing after 39s
- 新增系统称号模板与效果配置表及相关CRUD接口 - 实现用户称号分配与抽奖效果应用逻辑 - 优化抽奖接口支持用户ID参数以应用称号效果 - 新增称号管理前端页面与分配功能 - 修复Windows时区错误与JSON字段初始化问题 - 移除无用管理接口代码并更新文档说明
218 lines
13 KiB
Go
218 lines
13 KiB
Go
package router
|
||
|
||
import (
|
||
"bindbox-game/internal/alert"
|
||
activityapi "bindbox-game/internal/api/activity"
|
||
"bindbox-game/internal/api/admin"
|
||
commonapi "bindbox-game/internal/api/common"
|
||
appapi "bindbox-game/internal/api/app"
|
||
guildapi "bindbox-game/internal/api/guild"
|
||
userapi "bindbox-game/internal/api/user"
|
||
"bindbox-game/internal/dblogger"
|
||
"bindbox-game/internal/pkg/core"
|
||
"bindbox-game/internal/pkg/logger"
|
||
"bindbox-game/internal/repository/mysql"
|
||
"bindbox-game/internal/router/interceptor"
|
||
|
||
"github.com/pkg/errors"
|
||
)
|
||
|
||
func NewHTTPMux(logger logger.CustomLogger, db mysql.Repo) (core.Mux, error) {
|
||
if logger == nil {
|
||
return nil, errors.New("logger required")
|
||
}
|
||
|
||
if db == nil {
|
||
return nil, errors.New("db required")
|
||
}
|
||
|
||
mux, err := core.New(logger,
|
||
core.WithEnableCors(),
|
||
core.WithEnableSwagger(),
|
||
core.WithEnablePProf(),
|
||
core.WithAlertNotify(alert.NotifyHandler()),
|
||
core.WithRequestLogger(dblogger.LoggerHandler(db)),
|
||
)
|
||
|
||
if err != nil {
|
||
panic(err)
|
||
}
|
||
|
||
// 实例化拦截器
|
||
adminHandler := admin.New(logger, db)
|
||
activityHandler := activityapi.New(logger, db)
|
||
guildHandler := guildapi.New(logger, db)
|
||
userHandler := userapi.New(logger, db)
|
||
commonHandler := commonapi.New(logger, db)
|
||
intc := interceptor.New(logger, db)
|
||
|
||
// 管理端非认证接口路由组
|
||
adminNonAuthApiRouter := mux.Group("/api/admin")
|
||
{
|
||
adminNonAuthApiRouter.POST("/login", adminHandler.Login()) // 登录
|
||
// 开发便捷:无认证的初始化接口(仅用于快速配置,生产环境请关闭或加权限)
|
||
adminNonAuthApiRouter.POST("/system_titles/seed_default", adminHandler.SeedDefaultTitles())
|
||
adminNonAuthApiRouter.POST("/menu/ensure_titles", adminHandler.EnsureTitlesMenu())
|
||
}
|
||
|
||
// 管理端认证接口路由组
|
||
adminAuthApiRouter := mux.Group("/api/admin", core.WrapAuthHandler(intc.AdminTokenAuthVerify))
|
||
|
||
// 系统管理接口(为前端模板路径兼容,挂载到 /api)
|
||
systemApiRouter := mux.Group("/api", core.WrapAuthHandler(intc.AdminTokenAuthVerify))
|
||
{
|
||
// 管理员账号维护接口移除(未被前端使用)
|
||
|
||
adminAuthApiRouter.GET("/activity_categories", adminHandler.ListActivityCategories())
|
||
adminAuthApiRouter.POST("/activities", adminHandler.CreateActivity())
|
||
adminAuthApiRouter.PUT("/activities/:activity_id", adminHandler.ModifyActivity())
|
||
adminAuthApiRouter.DELETE("/activities/:activity_id", adminHandler.DeleteActivity())
|
||
adminAuthApiRouter.GET("/activities/:activity_id", adminHandler.GetActivityDetail())
|
||
adminAuthApiRouter.GET("/activities/:activity_id/issues", adminHandler.ListActivityIssues())
|
||
adminAuthApiRouter.POST("/activities/:activity_id/issues", adminHandler.CreateActivityIssue())
|
||
adminAuthApiRouter.PUT("/activities/:activity_id/issues/:issue_id", adminHandler.ModifyActivityIssue())
|
||
adminAuthApiRouter.DELETE("/activities/:activity_id/issues/:issue_id", adminHandler.DeleteActivityIssue())
|
||
adminAuthApiRouter.POST("/activities/:activity_id/issues/:issue_id/rewards", adminHandler.CreateIssueRewards())
|
||
adminAuthApiRouter.GET("/activities/:activity_id/issues/:issue_id/rewards", adminHandler.ListIssueRewards())
|
||
adminAuthApiRouter.PUT("/activities/:activity_id/issues/:issue_id/rewards/:reward_id", adminHandler.ModifyIssueReward())
|
||
adminAuthApiRouter.DELETE("/activities/:activity_id/issues/:issue_id/rewards/:reward_id", adminHandler.DeleteIssueReward())
|
||
|
||
adminAuthApiRouter.POST("/activities/:activity_id/issues/:issue_id/commit_random", adminHandler.CommitIssueRandom())
|
||
adminAuthApiRouter.GET("/activities/:activity_id/issues/:issue_id/commit_random", adminHandler.GetIssueRandomCommit())
|
||
adminAuthApiRouter.GET("/activities/:activity_id/issues/:issue_id/commit_random/history", adminHandler.GetIssueRandomCommitHistory())
|
||
adminAuthApiRouter.POST("/activities/:activity_id/issues/:issue_id/simulate_draw", adminHandler.SimulateIssueDraw())
|
||
adminAuthApiRouter.POST("/activities/:activity_id/issues/:issue_id/batch_draw", adminHandler.BatchDrawForUsers())
|
||
adminAuthApiRouter.POST("/activities/:activity_id/issues/:issue_id/verify_draw", adminHandler.VerifyDrawReceipt())
|
||
adminAuthApiRouter.GET("/draw_receipts/:draw_id", adminHandler.GetDrawReceipt())
|
||
adminAuthApiRouter.GET("/draw_receipts/log/:log_id", adminHandler.GetDrawReceiptByLogID())
|
||
adminAuthApiRouter.POST("/batch_users", adminHandler.BatchCreateUsers())
|
||
adminAuthApiRouter.DELETE("/batch_users", adminHandler.BatchDeleteUsers())
|
||
|
||
adminAuthApiRouter.POST("/guilds", adminHandler.CreateGuild())
|
||
adminAuthApiRouter.PUT("/guilds/:guild_id", adminHandler.ModifyGuild())
|
||
adminAuthApiRouter.DELETE("/guilds/:guild_id", adminHandler.DeleteGuild())
|
||
adminAuthApiRouter.GET("/guilds/:guild_id", adminHandler.GetGuildDetail())
|
||
adminAuthApiRouter.GET("/guilds/:guild_id/members", adminHandler.ListGuildMembers())
|
||
|
||
// 商品管理:分类与商品
|
||
adminAuthApiRouter.POST("/product_categories", adminHandler.CreateProductCategory())
|
||
adminAuthApiRouter.PUT("/product_categories/:category_id", adminHandler.ModifyProductCategory())
|
||
adminAuthApiRouter.DELETE("/product_categories/:category_id", adminHandler.DeleteProductCategory())
|
||
adminAuthApiRouter.GET("/product_categories", adminHandler.ListProductCategories())
|
||
adminAuthApiRouter.POST("/products", adminHandler.CreateProduct())
|
||
adminAuthApiRouter.PUT("/products/:product_id", adminHandler.ModifyProduct())
|
||
adminAuthApiRouter.DELETE("/products/:product_id", adminHandler.DeleteProduct())
|
||
adminAuthApiRouter.GET("/products", adminHandler.ListProducts())
|
||
|
||
// 轮播图管理
|
||
adminAuthApiRouter.POST("/banners", adminHandler.CreateBanner())
|
||
adminAuthApiRouter.PUT("/banners/:banner_id", adminHandler.ModifyBanner())
|
||
adminAuthApiRouter.DELETE("/banners/:banner_id", adminHandler.DeleteBanner())
|
||
adminAuthApiRouter.GET("/banners", adminHandler.ListBanners())
|
||
|
||
// 用户管理
|
||
adminAuthApiRouter.GET("/users", adminHandler.ListAppUsers())
|
||
adminAuthApiRouter.GET("/users/:user_id/invites", adminHandler.ListUserInvites())
|
||
adminAuthApiRouter.GET("/users/:user_id/orders", adminHandler.ListUserOrders())
|
||
adminAuthApiRouter.GET("/users/:user_id/coupons", adminHandler.ListUserCoupons())
|
||
adminAuthApiRouter.GET("/users/:user_id/points", adminHandler.ListUserPoints())
|
||
adminAuthApiRouter.GET("/users/:user_id/points/balance", adminHandler.GetUserPointsBalance())
|
||
adminAuthApiRouter.POST("/users/:user_id/points/add", adminHandler.AddUserPoints())
|
||
adminAuthApiRouter.POST("/users/:user_id/coupons/add", adminHandler.AddUserCoupon())
|
||
adminAuthApiRouter.POST("/users/:user_id/rewards/grant", adminHandler.GrantReward())
|
||
adminAuthApiRouter.GET("/users/:user_id/inventory", adminHandler.ListUserInventory())
|
||
adminAuthApiRouter.GET("/users/:user_id/item_cards", adminHandler.ListUserItemCards())
|
||
// 系统称号与分配
|
||
adminAuthApiRouter.GET("/system_titles", adminHandler.ListSystemTitles())
|
||
adminAuthApiRouter.POST("/users/:user_id/titles", adminHandler.AssignUserTitle())
|
||
adminAuthApiRouter.POST("/system_titles", adminHandler.CreateSystemTitle())
|
||
adminAuthApiRouter.PUT("/system_titles/:title_id", adminHandler.ModifySystemTitle())
|
||
adminAuthApiRouter.DELETE("/system_titles/:title_id", adminHandler.DeleteSystemTitle())
|
||
adminAuthApiRouter.GET("/system_titles/:title_id/effects", adminHandler.ListSystemTitleEffects())
|
||
adminAuthApiRouter.POST("/system_titles/:title_id/effects", adminHandler.CreateSystemTitleEffect())
|
||
adminAuthApiRouter.PUT("/system_titles/:title_id/effects/:effect_id", adminHandler.ModifySystemTitleEffect())
|
||
adminAuthApiRouter.DELETE("/system_titles/:title_id/effects/:effect_id", adminHandler.DeleteSystemTitleEffect())
|
||
|
||
// 道具卡管理
|
||
adminAuthApiRouter.POST("/system_item_cards", adminHandler.CreateSystemItemCard())
|
||
adminAuthApiRouter.PUT("/system_item_cards/:item_card_id", adminHandler.ModifySystemItemCard())
|
||
adminAuthApiRouter.DELETE("/system_item_cards/:item_card_id", adminHandler.DeleteSystemItemCard())
|
||
adminAuthApiRouter.GET("/system_item_cards", adminHandler.ListSystemItemCards())
|
||
// 优惠券管理
|
||
adminAuthApiRouter.POST("/system_coupons", adminHandler.CreateSystemCoupon())
|
||
adminAuthApiRouter.PUT("/system_coupons/:coupon_id", adminHandler.ModifySystemCoupon())
|
||
adminAuthApiRouter.DELETE("/system_coupons/:coupon_id", adminHandler.DeleteSystemCoupon())
|
||
adminAuthApiRouter.GET("/system_coupons", adminHandler.ListSystemCoupons())
|
||
adminAuthApiRouter.POST("/users/:user_id/item_cards", adminHandler.AssignUserItemCard())
|
||
// 通用上传
|
||
systemApiRouter.POST("/common/upload/wangeditor", commonHandler.UploadWangEditorImage())
|
||
systemApiRouter.POST("/menu/ensure_titles", adminHandler.EnsureTitlesMenu())
|
||
}
|
||
|
||
// 系统管理:用户/角色/菜单
|
||
{
|
||
systemApiRouter.GET("/user/list", adminHandler.ListUsers())
|
||
systemApiRouter.GET("/role/list", adminHandler.ListRoles())
|
||
systemApiRouter.GET("/v3/system/menus/simple", adminHandler.ListSimpleMenus())
|
||
systemApiRouter.POST("/role", adminHandler.CreateRole())
|
||
systemApiRouter.PUT("/role/:role_id", adminHandler.ModifyRole())
|
||
systemApiRouter.DELETE("/role/:role_id", adminHandler.DeleteRole())
|
||
systemApiRouter.POST("/role/:role_id/users", adminHandler.AssignRoleUsers())
|
||
systemApiRouter.GET("/role/:role_id/users", adminHandler.ListRoleUsers())
|
||
systemApiRouter.DELETE("/role/:role_id/users/:admin_id", adminHandler.RemoveRoleUser())
|
||
systemApiRouter.POST("/menu", adminHandler.CreateMenu())
|
||
systemApiRouter.PUT("/menu/:menu_id", adminHandler.ModifyMenu())
|
||
systemApiRouter.DELETE("/menu/:menu_id", adminHandler.DeleteMenu())
|
||
systemApiRouter.GET("/menu/:menu_id/actions", adminHandler.ListMenuActions())
|
||
systemApiRouter.POST("/menu/:menu_id/actions", adminHandler.CreateMenuActions())
|
||
systemApiRouter.DELETE("/menu/:menu_id/actions/:action_id", adminHandler.DeleteMenuAction())
|
||
systemApiRouter.POST("/role/:role_id/menus", adminHandler.AssignRoleMenus())
|
||
systemApiRouter.POST("/role/:role_id/actions", adminHandler.AssignRoleActions())
|
||
}
|
||
|
||
// APP 端公开接口路由组
|
||
appPublicApiRouter := mux.Group("/api/app")
|
||
{
|
||
appPublicApiRouter.GET("/activities", activityHandler.ListActivities())
|
||
appPublicApiRouter.GET("/activities/:activity_id", activityHandler.GetActivityDetail())
|
||
appPublicApiRouter.GET("/activities/:activity_id/issues", activityHandler.ListActivityIssues())
|
||
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("/guilds", guildHandler.ListGuilds())
|
||
appPublicApiRouter.GET("/guilds/:guild_id", guildHandler.GetGuildDetail())
|
||
appPublicApiRouter.POST("/guilds/:guild_id/members", guildHandler.JoinGuild())
|
||
appPublicApiRouter.DELETE("/guilds/:guild_id/members/:user_id", guildHandler.LeaveGuild())
|
||
appPublicApiRouter.GET("/guilds/:guild_id/members", guildHandler.ListGuildMembers())
|
||
|
||
// APP 端轮播图
|
||
appPublicApiRouter.GET("/banners", appapi.NewBanner(logger, db).ListBannersForApp())
|
||
|
||
// 登录保持公开
|
||
appPublicApiRouter.POST("/users/weixin/login", userHandler.WeixinLogin())
|
||
}
|
||
|
||
// APP 端认证接口路由组
|
||
appAuthApiRouter := mux.Group("/api/app", core.WrapAuthHandler(intc.AppTokenAuthVerify))
|
||
{
|
||
appAuthApiRouter.PUT("/users/:user_id", userHandler.ModifyUser())
|
||
appAuthApiRouter.GET("/users/:user_id/orders", userHandler.ListUserOrders())
|
||
appAuthApiRouter.GET("/users/:user_id/coupons", userHandler.ListUserCoupons())
|
||
appAuthApiRouter.GET("/users/:user_id/points", userHandler.ListUserPoints())
|
||
appAuthApiRouter.GET("/users/:user_id/points/balance", userHandler.GetUserPointsBalance())
|
||
appAuthApiRouter.GET("/users/:user_id/stats", userHandler.GetUserStats())
|
||
appAuthApiRouter.POST("/users/:user_id/phone/bind", userHandler.BindPhone())
|
||
appAuthApiRouter.GET("/users/:user_id/invites", userHandler.ListUserInvites())
|
||
appAuthApiRouter.GET("/users/:user_id/item_cards", userHandler.ListUserItemCards())
|
||
appAuthApiRouter.GET("/users/:user_id/item_cards/uses", userHandler.ListUserItemCardUses())
|
||
appAuthApiRouter.POST("/users/:user_id/addresses", userHandler.AddUserAddress())
|
||
appAuthApiRouter.GET("/users/:user_id/addresses", userHandler.ListUserAddresses())
|
||
appAuthApiRouter.PUT("/users/:user_id/addresses/:address_id/default", userHandler.SetDefaultUserAddress())
|
||
appAuthApiRouter.DELETE("/users/:user_id/addresses/:address_id", userHandler.DeleteUserAddress())
|
||
|
||
appAuthApiRouter.POST("/activities/:activity_id/issues/:issue_id/draw", activityHandler.ExecuteDraw())
|
||
}
|
||
|
||
return mux, nil
|
||
}
|