Files
wx_service/internal/routes/marketing_routes.go
nepiedg 1c0aeb152a feat(marketing): user profile update, ad placement management, logo limits
- Add PUT /auth/profile endpoint for nickname and avatar updates
- Add ad_placements table and CRUD admin API for managing ad units
- Add GET /marketing/ad-config public API for mini-program to fetch ad config
- Reduce logo limit from 10 to 3 per user, add 2MB file size validation

Made-with: Cursor
2026-04-04 04:02:06 +08:00

65 lines
2.1 KiB
Go

package routes
import (
"github.com/gin-gonic/gin"
marketinghandler "wx_service/internal/marketing/handler"
)
func registerMarketingRoutes(
api *gin.RouterGroup,
protected *gin.RouterGroup,
adminToken string,
categoryHandler *marketinghandler.CategoryHandler,
templateHandler *marketinghandler.TemplateHandler,
downloadHandler *marketinghandler.DownloadHandler,
userLogoHandler *marketinghandler.UserLogoHandler,
adPlacementHandler *marketinghandler.AdPlacementHandler,
) {
if categoryHandler == nil || templateHandler == nil || downloadHandler == nil {
return
}
marketing := api.Group("/marketing")
{
marketing.GET("/categories", categoryHandler.ListEnabled)
marketing.GET("/templates", templateHandler.ListEnabled)
marketing.GET("/templates/:id", templateHandler.GetDetail)
if adPlacementHandler != nil {
marketing.GET("/ad-config", adPlacementHandler.GetAdConfig)
}
}
protectedMarketing := protected.Group("/marketing")
{
protectedMarketing.POST("/downloads", downloadHandler.Create)
protectedMarketing.POST("/ad_callback", downloadHandler.AdCallback)
protectedMarketing.GET("/downloads", downloadHandler.ListByUser)
if userLogoHandler != nil {
protectedMarketing.GET("/logos", userLogoHandler.List)
protectedMarketing.POST("/logos", userLogoHandler.Save)
protectedMarketing.DELETE("/logos/:id", userLogoHandler.Delete)
}
}
admin := api.Group("/admin/marketing")
admin.Use(marketinghandler.AdminTokenMiddleware(adminToken))
{
admin.GET("/categories", categoryHandler.AdminList)
admin.POST("/categories", categoryHandler.AdminCreate)
admin.PUT("/categories/:id", categoryHandler.AdminUpdate)
admin.DELETE("/categories/:id", categoryHandler.AdminDelete)
admin.GET("/templates", templateHandler.AdminList)
admin.POST("/templates", templateHandler.AdminCreate)
admin.PUT("/templates/:id", templateHandler.AdminUpdate)
admin.DELETE("/templates/:id", templateHandler.AdminDelete)
admin.GET("/stats", downloadHandler.AdminStats)
admin.POST("/upload/oss/token", downloadHandler.AdminUploadToken)
admin.POST("/upload", downloadHandler.AdminUploadFile)
}
}