package router import ( "mini-chat/internal/alert" "mini-chat/internal/api/admin" "mini-chat/internal/api/app" "mini-chat/internal/api/keyword" "mini-chat/internal/api/message" "mini-chat/internal/api/upload" "mini-chat/internal/cron" "mini-chat/internal/dblogger" "mini-chat/internal/pkg/core" "mini-chat/internal/pkg/logger" "mini-chat/internal/pkg/startup" "mini-chat/internal/repository/mysql" "mini-chat/internal/router/interceptor" "github.com/pkg/errors" ) func NewHTTPMux(logger logger.CustomLogger, db mysql.Repo, cron cron.Server) (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) } // 实例化拦截器 interceptorHandler := interceptor.New(logger, db) adminHandler := admin.New(logger, db) appHandler := app.New(logger, db) uploadHandler := upload.New(logger, db) keywordHandler := keyword.New(logger, db) messageHandler := message.New(logger, db) // 管理端非认证接口路由组 adminNonAuthApiRouter := mux.Group("/admin") { adminNonAuthApiRouter.GET("/license/status", func(ctx core.Context) { ctx.Payload(startup.Info()) }) adminNonAuthApiRouter.POST("/login", adminHandler.Login()) // 登录 adminNonAuthApiRouter.POST("/upload/image", uploadHandler.UploadImage()) // 上传图片 } // 管理端认证接口路由组 adminAuthApiRouter := mux.Group("/admin", core.WrapAuthHandler(interceptorHandler.AdminTokenAuthVerify)) { adminAuthApiRouter.POST("/app/create", appHandler.CreateApp()) // 关联小程序 adminAuthApiRouter.POST("/app/delete", appHandler.DeleteApp()) // 删除小程序 adminAuthApiRouter.PUT("/app/:id", appHandler.ModifyApp()) // 修改小程序 adminAuthApiRouter.GET("/apps", appHandler.PageList()) // 小程序列表 adminAuthApiRouter.POST("/app/keyword", keywordHandler.CreateKeyword()) // 添加意图关键字 adminAuthApiRouter.PUT("/app/keyword/:id", keywordHandler.ModifyKeyword()) // 修改意图关键字 adminAuthApiRouter.DELETE("/app/keyword/:id", keywordHandler.DeleteKeyword()) // 删除意图关键字 adminAuthApiRouter.GET("/app/keywords", keywordHandler.KeywordPageList()) // 获取意图关键字列表 adminAuthApiRouter.POST("/app/keyword/material/:id", keywordHandler.CreateKeywordMaterial()) // 配置意图关键字素材 adminAuthApiRouter.PUT("/app/keyword/material/:id", keywordHandler.ModifyKeywordMaterial()) // 修改意图关键字素材 adminAuthApiRouter.GET("/app/keyword/materials", keywordHandler.KeywordMaterialPageList()) // 获取意图关键字素材列表 adminAuthApiRouter.POST("/send_message", messageHandler.AdminSendMessage()) // 发送消息 } return mux, nil }