Files
pet-ai/server/plugin/wechat-integration/router/wechat_router.go
T
2025-08-05 17:46:15 +08:00

156 lines
8.4 KiB
Go

package router
import (
"github.com/flipped-aurora/gin-vue-admin/server/plugin/wechat-integration/api"
"github.com/gin-gonic/gin"
)
type WechatRouter struct{}
// InitWechatRouter 初始化微信路由
func (w *WechatRouter) InitWechatRouter(Router *gin.RouterGroup) {
wechatRouter := Router.Group("wechat")
// 初始化API实例
wechatMiniApi := api.WechatMiniApi{}
mpUserApi := api.MpUserApi{}
mpMessageApi := api.MpMessageApi{}
mpMenuApi := api.MpMenuApi{}
mpAutoReplyApi := api.MpAutoReplyApi{}
mpMaterialApi := api.MpMaterialApi{}
mpStatisticsApi := api.MpStatisticsApi{}
mpTagApi := api.MpTagApi{}
mpNewsApi := api.MpNewsApi{}
miniStatisticsApi := api.MiniStatisticsApi{}
mpConfigApi := api.MpConfigApi{}
mpDraftApi := api.MpDraftApi{}
{
// 微信小程序路由
miniGroup := wechatRouter.Group("mini")
{
miniGroup.POST("login", wechatMiniApi.Login) // 小程序登录
miniGroup.GET("userinfo", wechatMiniApi.GetUserInfo) // 获取用户信息
miniGroup.PUT("userinfo", wechatMiniApi.UpdateUserInfo) // 更新用户信息
miniGroup.POST("bind-phone", wechatMiniApi.BindPhone) // 绑定手机号
miniGroup.GET("users", wechatMiniApi.GetUserList) // 获取用户列表(管理)
miniGroup.GET("check-unionid", wechatMiniApi.CheckUnionID) // 检查UnionID
// 小程序统计
miniGroup.GET("statistics", miniStatisticsApi.GetMiniStatistics) // 获取基础统计数据
miniGroup.GET("statistics/visit-trend", miniStatisticsApi.GetVisitTrendData) // 获取访问趋势数据
miniGroup.GET("statistics/source", miniStatisticsApi.GetSourceData) // 获取用户来源分布数据
miniGroup.GET("statistics/page", miniStatisticsApi.GetPageData) // 获取页面访问数据
miniGroup.GET("statistics/retention", miniStatisticsApi.GetRetentionData) // 获取用户留存数据
miniGroup.GET("statistics/device", miniStatisticsApi.GetDeviceData) // 获取设备分布数据
}
// 微信公众号路由
mpGroup := wechatRouter.Group("mp")
{
// 用户管理
mpGroup.GET("users", mpUserApi.GetUserList) // 获取用户列表
mpGroup.GET("user", mpUserApi.GetUserInfo) // 获取用户信息
mpGroup.POST("user/sync", mpUserApi.SyncUser) // 同步用户信息
mpGroup.PUT("user/remark", mpUserApi.UpdateUserRemark) // 更新用户备注
// 消息管理
mpGroup.GET("messages", mpMessageApi.GetMessageList) // 获取消息列表
mpGroup.POST("message/text", mpMessageApi.SendTextMessage) // 发送文本消息
mpGroup.POST("message/image", mpMessageApi.SendImageMessage) // 发送图片消息
mpGroup.GET("message/:id", mpMessageApi.GetMessageByID) // 获取消息详情
mpGroup.DELETE("message/:id", mpMessageApi.DeleteMessage) // 删除消息
// 菜单管理
mpGroup.GET("menu", mpMenuApi.GetMenuList) // 获取菜单列表
mpGroup.POST("menu", mpMenuApi.CreateMenu) // 创建菜单
mpGroup.PUT("menu", mpMenuApi.UpdateMenu) // 更新菜单
mpGroup.GET("menu/:id", mpMenuApi.GetMenuByID) // 获取菜单详情
mpGroup.DELETE("menu/:id", mpMenuApi.DeleteMenu) // 删除菜单
mpGroup.POST("menu/publish", mpMenuApi.PublishMenu) // 发布菜单
mpGroup.DELETE("menu/wechat", mpMenuApi.DeleteWechatMenu) // 删除微信菜单
// 自动回复管理
mpGroup.GET("auto-reply", mpAutoReplyApi.GetAutoReplyList) // 获取自动回复列表
mpGroup.POST("auto-reply", mpAutoReplyApi.CreateAutoReply) // 创建自动回复
mpGroup.PUT("auto-reply", mpAutoReplyApi.UpdateAutoReply) // 更新自动回复
mpGroup.GET("auto-reply/:id", mpAutoReplyApi.GetAutoReplyByID) // 获取自动回复详情
mpGroup.DELETE("auto-reply/:id", mpAutoReplyApi.DeleteAutoReply) // 删除自动回复
mpGroup.POST("auto-reply/test", mpAutoReplyApi.TestAutoReply) // 测试自动回复
// 素材管理
mpGroup.GET("material", mpMaterialApi.GetMaterialList) // 获取素材列表
mpGroup.GET("material/:id", mpMaterialApi.GetMaterialByID) // 获取素材详情
mpGroup.POST("material/temp", mpMaterialApi.UploadTempMaterial) // 上传临时素材
mpGroup.POST("material/permanent", mpMaterialApi.UploadPermanentMaterial) // 上传永久素材
mpGroup.DELETE("material/:id", mpMaterialApi.DeleteMaterial) // 删除素材
mpGroup.GET("material/download", mpMaterialApi.DownloadMaterial) // 下载素材
mpGroup.POST("material/sync", mpMaterialApi.SyncMaterials) // 同步素材
// 标签管理
mpGroup.GET("tag", mpTagApi.GetTagPage) // 获取标签列表
mpGroup.GET("tag/:id", mpTagApi.GetTag) // 获取标签详情
mpGroup.POST("tag", mpTagApi.CreateTag) // 创建标签
mpGroup.PUT("tag", mpTagApi.UpdateTag) // 更新标签
mpGroup.DELETE("tag/:id", mpTagApi.DeleteTag) // 删除标签
mpGroup.POST("tag/sync", mpTagApi.SyncTag) // 同步标签
mpGroup.GET("tag/list-all-simple", mpTagApi.GetSimpleTags) // 获取简单标签列表
// 统计数据
mpGroup.GET("statistics", mpStatisticsApi.GetUserSummary) // 获取基础统计数据
mpGroup.GET("statistics/user-growth", mpStatisticsApi.GetUserSummary) // 获取用户增长数据
mpGroup.GET("statistics/message-type", mpStatisticsApi.GetUpstreamMessage) // 获取消息类型分布数据
mpGroup.GET("statistics/message-trend", mpStatisticsApi.GetUpstreamMessage) // 获取消息趋势数据
mpGroup.GET("statistics/region", mpStatisticsApi.GetInterfaceSummary) // 获取地区分布数据
// 图文发表记录
mpGroup.GET("news", mpNewsApi.GetNewsList) // 获取图文发表记录列表
mpGroup.GET("news/:id", mpNewsApi.GetNewsInfo) // 获取图文详情
mpGroup.POST("news", mpNewsApi.CreateNews) // 创建图文记录
mpGroup.PUT("news", mpNewsApi.UpdateNews) // 更新图文记录
mpGroup.DELETE("news/:id", mpNewsApi.DeleteNews) // 删除图文记录
mpGroup.GET("news/:id/statistics", mpNewsApi.GetNewsStatistics) // 获取图文数据统计
mpGroup.POST("news/sync", mpNewsApi.SyncNews) // 同步图文发表记录
// 配置管理
mpGroup.GET("config", mpConfigApi.GetWechatConfig) // 获取微信配置
mpGroup.POST("config", mpConfigApi.SaveWechatConfig) // 保存微信配置
mpGroup.POST("config/test", mpConfigApi.TestWechatConfig) // 测试微信配置
mpGroup.POST("config/validate", mpConfigApi.ValidateConfig) // 验证微信配置
mpGroup.GET("config/list", mpConfigApi.GetConfigList) // 获取配置列表
mpGroup.DELETE("config/:id", mpConfigApi.DeleteConfig) // 删除配置
// 公众号功能
mpGroup.POST("qrcode/generate", mpConfigApi.GenerateQrCode) // 生成公众号二维码
mpGroup.POST("quota/clear", mpConfigApi.ClearQuota) // 清空API配额
// Webhook日志
mpGroup.GET("webhook/logs", mpConfigApi.GetWebhookLogs) // 获取Webhook日志
mpGroup.GET("webhook/logs/:id", mpConfigApi.GetWebhookLogDetail) // 获取Webhook日志详情
mpGroup.POST("webhook/logs/clear", mpConfigApi.ClearWebhookLogs) // 清空Webhook日志
// 草稿管理
mpGroup.GET("draft", mpDraftApi.GetDraftList) // 获取草稿列表
mpGroup.GET("draft/:id", mpDraftApi.GetDraftInfo) // 获取草稿详情
mpGroup.POST("draft", mpDraftApi.CreateDraft) // 创建草稿
mpGroup.PUT("draft", mpDraftApi.UpdateDraft) // 更新草稿
mpGroup.DELETE("draft/:id", mpDraftApi.DeleteDraft) // 删除草稿
mpGroup.POST("draft/:id/publish", mpDraftApi.PublishDraft) // 发布草稿
mpGroup.POST("draft/sync", mpDraftApi.SyncDrafts) // 同步草稿
mpGroup.GET("draft/count", mpDraftApi.GetDraftCount) // 获取草稿数量统计
}
}
}
// InitWechatPublicRouter 初始化微信公开路由(不需要认证)
func (w *WechatRouter) InitWechatPublicRouter(Router *gin.RouterGroup) {
wechatPublicRouter := Router.Group("wechat")
webhookApi := api.WechatWebhookApi{}
{
// 微信公众号Webhook(公开接口,微信服务器调用)
wechatPublicRouter.Any("official/webhook", webhookApi.OfficialAccountWebhook)
}
}