Enhance API and error handling for video services

- Updated .gitignore to exclude cache files.
- Refactored main.go to streamline route registration and improve code organization.
- Added detailed comments in auth_handler.go, video_handler.go, and service files for better clarity on request handling and service logic.
- Improved error messages in video_handler.go to provide clearer feedback to users in Chinese.
- Introduced context handling in service methods to manage request timeouts effectively.
This commit is contained in:
nepiedg
2025-12-31 02:30:20 +00:00
parent 97cadb033e
commit d23b253609
8 changed files with 98 additions and 27 deletions
+9 -16
View File
@@ -2,31 +2,35 @@ package main
import (
"log"
"net/http"
"github.com/gin-gonic/gin"
"wx_service/config"
"wx_service/internal/database"
"wx_service/internal/handler"
"wx_service/internal/middleware"
"wx_service/internal/model"
"wx_service/internal/routes"
"wx_service/internal/service"
)
func main() {
// 1) 加载配置(通常来自环境变量 / .env)
config.LoadConfig()
// 2) 初始化数据库连接
if err := database.InitDB(); err != nil {
log.Fatalf("init database failed: %v", err)
}
// 3) 自动建表/迁移(开发阶段很方便;生产环境可改为手动迁移)
if err := database.AutoMigrate(&model.MiniProgram{}, &model.User{}, &model.VideoParseLog{}, &model.VideoParseUnlock{}); err != nil {
log.Fatalf("auto migrate failed: %v", err)
}
// 4) 初始化 HTTP 框架(Gin
gin.SetMode(config.AppConfig.Server.Mode)
router := gin.Default()
// 5) 依赖注入:先创建 service,再创建 handlerhandler 只关心 HTTP 输入/输出)
miniProgramService := service.NewMiniProgramService(database.DB)
authService := service.NewAuthService(database.DB, miniProgramService)
authHandler := handler.NewAuthHandler(authService)
@@ -36,21 +40,10 @@ func main() {
}
videoHandler := handler.NewVideoHandler(videoService)
api := router.Group("/api/v1")
{
api.POST("/auth/login", authHandler.LoginWithWeChat)
protected := api.Group("")
protected.Use(middleware.AuthMiddleware(database.DB))
{
protected.POST("/video/remove_watermark", videoHandler.RemoveWatermark)
protected.POST("/video/remove_watermark/unlock", videoHandler.UnlockQuota)
}
}
router.GET("/healthz", func(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{"status": "ok"})
})
// 6) 注册路由:把 URL 映射到 handler
routes.Register(router, database.DB, authHandler, videoHandler)
// 7) 启动监听端口
addr := ":" + config.AppConfig.Server.Port
if err := router.Run(addr); err != nil {
log.Fatalf("server stopped: %v", err)