2025-12-19 22:36:48 +08:00
|
|
|
|
package router
|
|
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
|
"ai_xhs/controller"
|
|
|
|
|
|
"ai_xhs/middleware"
|
2026-01-06 19:36:42 +08:00
|
|
|
|
"ai_xhs/service"
|
2025-12-19 22:36:48 +08:00
|
|
|
|
|
|
|
|
|
|
"github.com/gin-gonic/gin"
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
func SetupRouter(r *gin.Engine) {
|
|
|
|
|
|
// 跨域中间件
|
|
|
|
|
|
r.Use(middleware.CORS())
|
|
|
|
|
|
|
|
|
|
|
|
// 健康检查
|
|
|
|
|
|
r.GET("/health", func(c *gin.Context) {
|
|
|
|
|
|
c.JSON(200, gin.H{
|
|
|
|
|
|
"status": "ok",
|
|
|
|
|
|
})
|
|
|
|
|
|
})
|
|
|
|
|
|
|
2026-01-06 19:36:42 +08:00
|
|
|
|
// 静态文件服务(上传的图片)
|
|
|
|
|
|
r.Static("/uploads", "./uploads")
|
|
|
|
|
|
|
2025-12-19 22:36:48 +08:00
|
|
|
|
// API路由组
|
|
|
|
|
|
api := r.Group("/api")
|
|
|
|
|
|
{
|
|
|
|
|
|
// 公开接口(不需要认证)
|
|
|
|
|
|
authCtrl := controller.NewAuthController()
|
2026-01-06 19:36:42 +08:00
|
|
|
|
api.POST("/login/wechat", authCtrl.WechatLogin) // 微信登录
|
|
|
|
|
|
api.POST("/login/phone", authCtrl.PhoneLogin) // 手机号登录(测试用)
|
|
|
|
|
|
api.POST("/login/phone-password", authCtrl.PhonePasswordLogin) // 手机号密码登录
|
|
|
|
|
|
api.POST("/login/xhs-phone-code", authCtrl.XHSPhoneCodeLogin) // 小红书手机号验证码登录
|
2026-01-08 13:10:15 +08:00
|
|
|
|
api.POST("/login/send-sms-code", authCtrl.SendSmsCode) // 发送阿里云短信验证码
|
2026-01-06 19:36:42 +08:00
|
|
|
|
api.POST("/xhs/send-verification-code", authCtrl.SendXHSVerificationCode) // 发送小红书验证码
|
|
|
|
|
|
api.POST("/logout", middleware.AuthMiddleware(), authCtrl.Logout) // 退出登录(需要认证)
|
|
|
|
|
|
|
|
|
|
|
|
// 小红书相关接口
|
2025-12-19 22:36:48 +08:00
|
|
|
|
employeeCtrlPublic := controller.NewEmployeeController()
|
2026-01-06 19:36:42 +08:00
|
|
|
|
api.POST("/xhs/send-code", employeeCtrlPublic.SendXHSCode) // 发送小红书验证码
|
|
|
|
|
|
api.GET("/products", middleware.AuthMiddleware(), employeeCtrlPublic.GetProducts) // 获取产品列表
|
2025-12-19 22:36:48 +08:00
|
|
|
|
|
|
|
|
|
|
// 员工路由(需要认证)
|
|
|
|
|
|
employee := api.Group("/employee")
|
|
|
|
|
|
employee.Use(middleware.AuthMiddleware())
|
|
|
|
|
|
{
|
|
|
|
|
|
employeeCtrl := controller.NewEmployeeController()
|
|
|
|
|
|
|
|
|
|
|
|
// 10.1 获取员工个人信息
|
|
|
|
|
|
employee.GET("/profile", employeeCtrl.GetProfile)
|
2026-01-06 19:36:42 +08:00
|
|
|
|
// 10.1.1 更新个人信息
|
|
|
|
|
|
employee.PUT("/profile", employeeCtrl.UpdateProfile)
|
|
|
|
|
|
// 10.1.2 上传头像
|
|
|
|
|
|
employee.POST("/upload-avatar", employeeCtrl.UploadAvatar)
|
2025-12-19 22:36:48 +08:00
|
|
|
|
|
|
|
|
|
|
// 10.2 绑定小红书账号
|
|
|
|
|
|
employee.POST("/bind-xhs", employeeCtrl.BindXHS)
|
|
|
|
|
|
|
2026-01-06 19:36:42 +08:00
|
|
|
|
// 10.2.1 获取绑定状态
|
|
|
|
|
|
employee.GET("/bind-xhs-status", employeeCtrl.GetBindXHSStatus)
|
|
|
|
|
|
|
2025-12-19 22:36:48 +08:00
|
|
|
|
// 10.3 解绑小红书账号
|
|
|
|
|
|
employee.POST("/unbind-xhs", employeeCtrl.UnbindXHS)
|
|
|
|
|
|
|
|
|
|
|
|
// 10.4 获取可领取文案列表
|
|
|
|
|
|
employee.GET("/available-copies", employeeCtrl.GetAvailableCopies)
|
|
|
|
|
|
|
|
|
|
|
|
// 10.5 领取文案
|
|
|
|
|
|
employee.POST("/claim-copy", employeeCtrl.ClaimCopy)
|
|
|
|
|
|
|
|
|
|
|
|
// 10.6 随机领取文案
|
|
|
|
|
|
employee.POST("/claim-random-copy", employeeCtrl.ClaimRandomCopy)
|
|
|
|
|
|
|
|
|
|
|
|
// 10.7 发布内容
|
|
|
|
|
|
employee.POST("/publish", employeeCtrl.Publish)
|
|
|
|
|
|
|
|
|
|
|
|
// 10.8 获取我的发布记录
|
|
|
|
|
|
employee.GET("/my-publish-records", employeeCtrl.GetMyPublishRecords)
|
|
|
|
|
|
|
|
|
|
|
|
// 10.8.1 获取发布记录详情
|
|
|
|
|
|
employee.GET("/publish-record/:id", employeeCtrl.GetPublishRecordDetail)
|
|
|
|
|
|
|
|
|
|
|
|
// 10.9 检查小红书绑定与Cookie状态
|
|
|
|
|
|
employee.GET("/xhs/status", employeeCtrl.CheckXHSStatus)
|
2025-12-20 01:05:46 +08:00
|
|
|
|
|
|
|
|
|
|
// 10.10 更新文案状态(通过/拒绝)
|
|
|
|
|
|
employee.POST("/article/:id/status", employeeCtrl.UpdateArticleStatus)
|
2026-01-06 19:36:42 +08:00
|
|
|
|
|
|
|
|
|
|
// 10.10.1 更新文案内容(标题、正文)
|
|
|
|
|
|
employee.PUT("/article/:id", employeeCtrl.UpdateArticleContent)
|
|
|
|
|
|
|
|
|
|
|
|
// 10.10.2 添加文案图片
|
|
|
|
|
|
employee.POST("/article/:id/image", employeeCtrl.AddArticleImage)
|
|
|
|
|
|
|
|
|
|
|
|
// 10.10.3 删除文案图片
|
|
|
|
|
|
employee.DELETE("/article/image/:imageId", employeeCtrl.DeleteArticleImage)
|
|
|
|
|
|
|
|
|
|
|
|
// 10.10.4 更新文案图片排序
|
|
|
|
|
|
employee.PUT("/article/:id/images/order", employeeCtrl.UpdateArticleImagesOrder)
|
|
|
|
|
|
|
|
|
|
|
|
// 10.10.5 上传图片
|
|
|
|
|
|
employee.POST("/upload/image", employeeCtrl.UploadImage)
|
|
|
|
|
|
|
|
|
|
|
|
// 10.11 编辑发布记录
|
|
|
|
|
|
employee.PUT("/publish-record/:id", employeeCtrl.UpdatePublishRecord)
|
|
|
|
|
|
|
|
|
|
|
|
// 10.12 重新发布种草内容
|
|
|
|
|
|
employee.POST("/publish-record/:id/republish", employeeCtrl.RepublishRecord)
|
|
|
|
|
|
|
|
|
|
|
|
// 10.13 禁用用户(撤销Token)
|
|
|
|
|
|
employee.POST("/revoke-token", employeeCtrl.RevokeUserToken)
|
|
|
|
|
|
|
|
|
|
|
|
// 反馈相关接口
|
|
|
|
|
|
feedbackCtrl := controller.NewFeedbackController(service.NewFeedbackService())
|
|
|
|
|
|
employee.POST("/feedback", feedbackCtrl.CreateFeedback) // 创建反馈
|
|
|
|
|
|
employee.GET("/feedback", feedbackCtrl.GetFeedbackList) // 获取反馈列表
|
|
|
|
|
|
employee.GET("/feedback/:id", feedbackCtrl.GetFeedbackDetail) // 获取反馈详情
|
2025-12-19 22:36:48 +08:00
|
|
|
|
}
|
2026-01-07 22:55:12 +08:00
|
|
|
|
|
|
|
|
|
|
// 小红书相关接口(不需要认证,由Python后端或小程序调用)
|
|
|
|
|
|
xhs := api.Group("/xhs")
|
|
|
|
|
|
{
|
|
|
|
|
|
xhsCtrl := controller.NewEmployeeController()
|
|
|
|
|
|
|
|
|
|
|
|
// 扫码登录相关接口(需要token,但不在employee路由下)
|
|
|
|
|
|
xhs.POST("/qrcode/start", middleware.AuthMiddleware(), xhsCtrl.StartQRCodeLogin) // 启动扫码登录
|
|
|
|
|
|
xhs.POST("/qrcode/status", middleware.AuthMiddleware(), xhsCtrl.GetQRCodeStatus) // 轮询扫码状态
|
|
|
|
|
|
xhs.POST("/qrcode/refresh", middleware.AuthMiddleware(), xhsCtrl.RefreshQRCode) // 刷新二维码
|
|
|
|
|
|
xhs.POST("/qrcode/cancel", middleware.AuthMiddleware(), xhsCtrl.CancelQRCodeLogin) // 取消扫码登录
|
|
|
|
|
|
|
|
|
|
|
|
// 保存扫码登录的绑定信息
|
|
|
|
|
|
xhs.POST("/save-qrcode-login", xhsCtrl.SaveQRCodeLogin)
|
2026-01-10 21:46:50 +08:00
|
|
|
|
// 保存验证码登录的绑定信息
|
|
|
|
|
|
xhs.POST("/save-login", xhsCtrl.SaveLogin)
|
2026-01-07 22:55:12 +08:00
|
|
|
|
}
|
2025-12-19 22:36:48 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|