88 lines
3.1 KiB
Go
88 lines
3.1 KiB
Go
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()) // 上传图片
|
|
}
|
|
|
|
appNonAuthApiRouter := mux.Group("/app")
|
|
{
|
|
appNonAuthApiRouter.GET("/messages", messageHandler.AppMessagePageList()) // 消息列表
|
|
}
|
|
|
|
// 管理端认证接口路由组
|
|
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
|
|
}
|