邹方成 4a40520a80 refactor(消息): 重构消息已读状态处理
将消息已读状态从单独的表迁移到消息表,简化架构
移除标记消息已读的独立接口,改为直接更新消息表
更新相关模型、路由和文档以反映架构变更
2025-10-18 19:41:08 +08:00

108 lines
4.4 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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/api/wechat"
"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)
wechatHandler := wechat.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.POST("/user/create", appHandler.CreateAppUser()) // 新增小程序用户
appNonAuthApiRouter.GET("/messages", messageHandler.AppMessagePageList()) // 消息列表
appNonAuthApiRouter.POST("/send_message", messageHandler.UserSendMessage()) // 发送消息
}
// 微信 API 路由组
wechatApiRouter := mux.Group("/api/wechat")
{
wechatApiRouter.POST("/qrcode", wechatHandler.GenerateQRCode()) // 生成微信小程序二维码(返回 Base64
wechatApiRouter.POST("/miniprogram/login", wechatHandler.MiniprogramLogin()) // 小程序登录
}
// 管理端认证接口路由组
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("/create", adminHandler.CreateAdmin()) // 新增客服
adminAuthApiRouter.POST("/delete", adminHandler.DeleteAdmin()) // 删除客服
adminAuthApiRouter.PUT("/:id", adminHandler.ModifyAdmin()) // 编辑客服
adminAuthApiRouter.GET("/list", adminHandler.PageList()) // 客服列表
adminAuthApiRouter.PUT("/rel_app/:id", adminHandler.RelApp()) // 关联小程序
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.GET("/app/users", appHandler.UserPageList()) // 获取小程序用户列表
adminAuthApiRouter.POST("/send_message", appHandler.AdminSendMessage()) // 发送消息
adminAuthApiRouter.GET("/messages", appHandler.AppMessagePageList()) // 获取小程序用户消息列表
adminAuthApiRouter.GET("/messages/latest", appHandler.LatestMessageByAppId()) // 根据appid获取最新消息记录
}
return mux, nil
}