feat(marketing): 新增营销图管理模块
- 新增 marketing 模块:model/repository/service/handler 四层架构 - 数据模型:marketing_categories、marketing_templates、marketing_user_downloads - 小程序端接口:分类列表、模板列表/详情、下载记录、广告回调 - 管理后台接口:分类/模板 CRUD、下载统计(X-Admin-Token 鉴权) - 路由注册:接入现有 AuthMiddleware,新增 AdminTokenMiddleware - Web 管理后台:单页面 Vue3 + Element Plus(分类管理、模板管理、数据概览) Closes #37, #38, #39, #40 Made-with: Cursor
This commit is contained in:
+18
-1
@@ -19,6 +19,10 @@ import (
|
||||
expiry "wx_service/internal/expiry"
|
||||
lawyerhandler "wx_service/internal/lawyer/handler"
|
||||
lawyerservice "wx_service/internal/lawyer/service"
|
||||
marketinghandler "wx_service/internal/marketing/handler"
|
||||
marketingmodel "wx_service/internal/marketing/model"
|
||||
marketingrepo "wx_service/internal/marketing/repository"
|
||||
marketingservice "wx_service/internal/marketing/service"
|
||||
membershiphandler "wx_service/internal/membership/handler"
|
||||
membershipmodel "wx_service/internal/membership/model"
|
||||
membershipservice "wx_service/internal/membership/service"
|
||||
@@ -65,6 +69,9 @@ func main() {
|
||||
&smokemodel.SmokeAIAdviceUnlock{},
|
||||
&smokemodel.SmokeAINextSmoke{},
|
||||
&smokemodel.SmokeMotivationQuote{},
|
||||
&marketingmodel.MarketingCategory{},
|
||||
&marketingmodel.MarketingTemplate{},
|
||||
&marketingmodel.MarketingDownload{},
|
||||
); err != nil {
|
||||
log.Fatalf("auto migrate failed: %v", err)
|
||||
}
|
||||
@@ -127,8 +134,18 @@ func main() {
|
||||
}
|
||||
expiryHandler := expiry.NewHandler(expiryService)
|
||||
|
||||
categoryRepo := marketingrepo.NewCategoryRepository(database.DB)
|
||||
templateRepo := marketingrepo.NewTemplateRepository(database.DB)
|
||||
downloadRepo := marketingrepo.NewDownloadRepository(database.DB)
|
||||
categorySvc := marketingservice.NewCategoryService(categoryRepo)
|
||||
templateSvc := marketingservice.NewTemplateService(templateRepo)
|
||||
downloadSvc := marketingservice.NewDownloadService(downloadRepo, templateRepo)
|
||||
marketingCategoryHandler := marketinghandler.NewCategoryHandler(categorySvc)
|
||||
marketingTemplateHandler := marketinghandler.NewTemplateHandler(templateSvc)
|
||||
marketingDownloadHandler := marketinghandler.NewDownloadHandler(downloadSvc)
|
||||
|
||||
// 6) 注册路由:把 URL 映射到 handler
|
||||
routes.Register(router, database.DB, authHandler, videoHandler, smokeHandler, redeemCodeHandler, uploadHandler, oaOAuthHandler, sessionCache, lawyerHandler, expiryHandler)
|
||||
routes.Register(router, database.DB, authHandler, videoHandler, smokeHandler, redeemCodeHandler, uploadHandler, oaOAuthHandler, sessionCache, lawyerHandler, expiryHandler, config.AppConfig.Admin.Token, marketingCategoryHandler, marketingTemplateHandler, marketingDownloadHandler)
|
||||
|
||||
// 7) 启动监听端口
|
||||
addr := ":" + config.AppConfig.Server.Port
|
||||
|
||||
Reference in New Issue
Block a user