164 lines
9.2 KiB
Go
164 lines
9.2 KiB
Go
package router
|
||
|
||
import (
|
||
"github.com/flipped-aurora/gin-vue-admin/server/plugin/wechat-integration/api"
|
||
"github.com/gin-gonic/gin"
|
||
)
|
||
|
||
type Router struct{}
|
||
|
||
// InitRouter 初始化微信路由
|
||
func (w *Router) InitRouter(Router *gin.RouterGroup) {
|
||
wechatRouter := Router.Group("wechat")
|
||
|
||
// 初始化API实例
|
||
miniApi := api.MiniApi{}
|
||
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", miniApi.Login) // 小程序登录
|
||
miniGroup.GET("userinfo", miniApi.GetUserInfo) // 获取用户信息
|
||
miniGroup.PUT("userinfo", miniApi.UpdateUserInfo) // 更新用户信息
|
||
miniGroup.POST("bind-phone", miniApi.BindPhone) // 绑定手机号
|
||
miniGroup.GET("users", miniApi.GetUserList) // 获取用户列表(管理)
|
||
miniGroup.GET("check-unionid", miniApi.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/list", mpTagApi.GetTags) // 获取所有标签
|
||
mpGroup.GET("tag/list-all-simple", mpTagApi.GetSimpleTags) // 获取简单标签列表
|
||
mpGroup.GET("tag/users", mpTagApi.GetTagUsers) // 获取标签下的用户列表(query参数)
|
||
mpGroup.GET("tag/user-tags", mpTagApi.GetUserTags) // 获取用户的标签列表
|
||
mpGroup.POST("tag", mpTagApi.CreateTag) // 创建标签
|
||
mpGroup.PUT("tag", mpTagApi.UpdateTag) // 更新标签
|
||
mpGroup.DELETE("tag", mpTagApi.DeleteTag) // 删除标签(通过query参数id)
|
||
mpGroup.POST("tag/batch-tag", mpTagApi.BatchTagUsers) // 批量为用户打标签
|
||
mpGroup.POST("tag/batch-untag", mpTagApi.BatchUntagUsers) // 批量为用户取消标签
|
||
mpGroup.POST("tag/remove-tag", mpTagApi.RemoveUserTag) // 移除用户标签(单个)
|
||
mpGroup.POST("tag/sync", mpTagApi.SyncTag) // 同步标签
|
||
mpGroup.GET("tag/:id/users", mpTagApi.GetTagUsersByPath) // 获取标签下的用户列表(路径参数)
|
||
mpGroup.GET("tag/:id", mpTagApi.GetTagInfo) // 获取标签详情
|
||
mpGroup.DELETE("tag/:id", mpTagApi.DeleteTagByPath) // 删除标签(通过路径参数)
|
||
|
||
// 统计数据
|
||
mpGroup.GET("statistics", mpStatisticsApi.GetStatistics) // 获取基础统计数据
|
||
mpGroup.GET("statistics/user-growth", mpStatisticsApi.GetUserGrowthData) // 获取用户增长数据
|
||
mpGroup.GET("statistics/message-type", mpStatisticsApi.GetMessageTypeData) // 获取消息类型分布数据
|
||
mpGroup.GET("statistics/message-trend", mpStatisticsApi.GetMessageTrendData) // 获取消息趋势数据
|
||
mpGroup.GET("statistics/region", mpStatisticsApi.GetRegionData) // 获取地区分布数据
|
||
|
||
// 图文发表记录
|
||
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 *Router) InitWechatPublicRouter(Router *gin.RouterGroup) {
|
||
wechatPublicRouter := Router.Group("wechat")
|
||
|
||
webhookApi := api.WebhookApi{}
|
||
|
||
{
|
||
// 微信公众号Webhook(公开接口,微信服务器调用)
|
||
wechatPublicRouter.Any("official/webhook", webhookApi.OfficialAccountWebhook)
|
||
}
|
||
}
|