feat: move marketing admin to /api/admin and remove built-in page
This commit is contained in:
@@ -4,9 +4,16 @@ import (
|
||||
"github.com/gin-gonic/gin"
|
||||
|
||||
adminhandler "wx_service/internal/admin"
|
||||
marketinghandler "wx_service/internal/marketing/handler"
|
||||
)
|
||||
|
||||
func registerAdminRoutes(router *gin.Engine, handler *adminhandler.Handler) {
|
||||
func registerAdminRoutes(
|
||||
router *gin.Engine,
|
||||
handler *adminhandler.Handler,
|
||||
categoryHandler *marketinghandler.CategoryHandler,
|
||||
templateHandler *marketinghandler.TemplateHandler,
|
||||
downloadHandler *marketinghandler.DownloadHandler,
|
||||
) {
|
||||
if handler == nil {
|
||||
return
|
||||
}
|
||||
@@ -39,6 +46,24 @@ func registerAdminRoutes(router *gin.Engine, handler *adminhandler.Handler) {
|
||||
protected.GET("/memberships/redeem-codes", handler.ListMembershipRedeemCodes)
|
||||
protected.POST("/memberships/redeem-codes", handler.CreateMembershipRedeemCodes)
|
||||
protected.POST("/memberships/redeem-codes/:id/status", handler.UpdateMembershipRedeemCodeStatus)
|
||||
|
||||
if categoryHandler != nil && templateHandler != nil && downloadHandler != nil {
|
||||
marketing := protected.Group("/marketing")
|
||||
{
|
||||
marketing.GET("/categories", categoryHandler.AdminList)
|
||||
marketing.POST("/categories", categoryHandler.AdminCreate)
|
||||
marketing.PUT("/categories/:id", categoryHandler.AdminUpdate)
|
||||
marketing.DELETE("/categories/:id", categoryHandler.AdminDelete)
|
||||
|
||||
marketing.GET("/templates", templateHandler.AdminList)
|
||||
marketing.POST("/templates", templateHandler.AdminCreate)
|
||||
marketing.PUT("/templates/:id", templateHandler.AdminUpdate)
|
||||
marketing.DELETE("/templates/:id", templateHandler.AdminDelete)
|
||||
|
||||
marketing.GET("/stats", downloadHandler.AdminStats)
|
||||
marketing.POST("/upload/qiniu/token", downloadHandler.AdminQiniuToken)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,8 +2,6 @@ package routes
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"os"
|
||||
"path/filepath"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"gorm.io/gorm"
|
||||
@@ -22,29 +20,6 @@ import (
|
||||
smokehandler "wx_service/internal/smoke/handler"
|
||||
)
|
||||
|
||||
func resolveMarketingPage() string {
|
||||
candidates := []string{
|
||||
filepath.Join("web", "marketing", "index.html"),
|
||||
filepath.Join("..", "web", "marketing", "index.html"),
|
||||
}
|
||||
|
||||
if executable, err := os.Executable(); err == nil {
|
||||
exeDir := filepath.Dir(executable)
|
||||
candidates = append(candidates,
|
||||
filepath.Join(exeDir, "web", "marketing", "index.html"),
|
||||
filepath.Join(exeDir, "..", "web", "marketing", "index.html"),
|
||||
)
|
||||
}
|
||||
|
||||
for _, path := range candidates {
|
||||
if _, err := os.Stat(path); err == nil {
|
||||
return path
|
||||
}
|
||||
}
|
||||
|
||||
return filepath.Join("web", "marketing", "index.html")
|
||||
}
|
||||
|
||||
func Register(
|
||||
router *gin.Engine,
|
||||
db *gorm.DB,
|
||||
@@ -93,7 +68,7 @@ func Register(
|
||||
registerMarketingRoutes(api, protected, adminToken, marketingCategoryHandler, marketingTemplateHandler, marketingDownloadHandler)
|
||||
}
|
||||
|
||||
registerAdminRoutes(router, adminHandler)
|
||||
registerAdminRoutes(router, adminHandler, marketingCategoryHandler, marketingTemplateHandler, marketingDownloadHandler)
|
||||
|
||||
// 保质期提醒模块使用独立前缀 /api/expiry,与现有 /api/v1 并存。
|
||||
expiryAPI := router.Group("/api/expiry")
|
||||
@@ -108,11 +83,6 @@ func Register(
|
||||
}
|
||||
}
|
||||
|
||||
// Web 管理后台静态文件
|
||||
marketingPage := resolveMarketingPage()
|
||||
router.StaticFile("/admin/marketing", marketingPage)
|
||||
router.StaticFile("/admin/marketing/", marketingPage)
|
||||
|
||||
// 健康检查:用于容器/负载均衡探活
|
||||
router.GET("/healthz", func(c *gin.Context) {
|
||||
c.JSON(http.StatusOK, gin.H{"status": "ok"})
|
||||
|
||||
Reference in New Issue
Block a user