feat(marketing): add user logo management module

Users can now save uploaded logos to the backend (marketing_user_logos table),
avoiding repeated uploads. Includes CRUD endpoints: list, save, delete with
a per-user limit of 10 logos.

Made-with: Cursor
This commit is contained in:
nepiedg
2026-04-04 03:46:57 +08:00
parent 1eab1b99c1
commit b4170b4863
7 changed files with 223 additions and 1 deletions
+7
View File
@@ -13,6 +13,7 @@ func registerMarketingRoutes(
categoryHandler *marketinghandler.CategoryHandler,
templateHandler *marketinghandler.TemplateHandler,
downloadHandler *marketinghandler.DownloadHandler,
userLogoHandler *marketinghandler.UserLogoHandler,
) {
if categoryHandler == nil || templateHandler == nil || downloadHandler == nil {
return
@@ -30,6 +31,12 @@ func registerMarketingRoutes(
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")
+2 -1
View File
@@ -39,6 +39,7 @@ func Register(
marketingCategoryHandler *marketinghandler.CategoryHandler,
marketingTemplateHandler *marketinghandler.TemplateHandler,
marketingDownloadHandler *marketinghandler.DownloadHandler,
marketingUserLogoHandler *marketinghandler.UserLogoHandler,
quitCheckinHandler *quitcheckinhandler.Handler,
) {
// Register 用来集中注册所有 HTTP 路由,便于工程结构更清晰:
@@ -70,7 +71,7 @@ func Register(
registerSmokeRoutes(protected, smokeHandler, quitPlanHandler)
}
registerMarketingRoutes(api, protected, adminToken, marketingCategoryHandler, marketingTemplateHandler, marketingDownloadHandler)
registerMarketingRoutes(api, protected, adminToken, marketingCategoryHandler, marketingTemplateHandler, marketingDownloadHandler, marketingUserLogoHandler)
}
apiV2 := router.Group("/api/v2")