package main import ( "country/db" // 数据库相关操作包 "country/logger" // 日志工具包 "country/logic" // 业务逻辑处理包 "time" "github.com/gin-contrib/cors" "github.com/gin-gonic/gin" // Gin框架,用于构建HTTP服务 _ "github.com/lib/pq" // PostgreSQL数据库驱动(下划线表示仅初始化不直接使用) "go.uber.org/zap" // Zap日志库,用于结构化日志输出 ) // main函数是程序的入口点 func main() { // 初始化日志配置 logger.Init() // 记录服务初始化日志 zap.L().Info("🚀 用户服务初始化") // 记录数据库初始化开始日志 zap.L().Info("⌛️ 数据库初始化开始") // 初始化数据库连接 db.Init() // 程序退出时关闭数据库连接(defer确保在函数退出前执行) defer db.DB.Close() // 记录数据库初始化成功日志 zap.L().Info("✅ 数据库初始化成功") // 设置Gin框架为发布模式(关闭调试信息) gin.SetMode(gin.ReleaseMode) // 创建Gin默认路由器 r := gin.Default() // 配置跨域中间件 r.Use(cors.New(cors.Config{ // 允许所有来源(生产环境建议指定具体域名) AllowOrigins: []string{"*"}, // 允许的请求方法 AllowMethods: []string{"GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"}, // 允许的请求头 AllowHeaders: []string{"Origin", "Content-Type", "Content-Length", "Accept-Encoding", "X-CSRF-Token", "Authorization", "X-LoginRequest-ID"}, // 允许前端读取的响应头 ExposeHeaders: []string{"Content-Length"}, // 是否允许携带cookie AllowCredentials: true, // 预检请求的缓存时间 MaxAge: 12 * time.Hour, })) zap.L().Info("✅ 配置跨域中间件完成") // 注册创建国家的接口,POST请求,由logic.CreateHandler处理 r.POST("/country/create", logic.CreateHandler) zap.L().Info("✅ 创建接口注册完成: POST /country/create") // 注册读取国家的接口,POST请求,由logic.ReadHandler r.POST("/country/read", logic.ReadHandler) zap.L().Info("✅ 读取接口注册完成: POST /country/read") // 注册更新国家的接口,POST请求,由logic.UpdateHandler r.POST("/country/update", logic.UpdateHandler) zap.L().Info("✅ 更新接口注册完成: POST /country/update") // 注册删除国家的接口,POST请求,由logic.DeleteHandler处理 r.POST("/country/delete", logic.DeleteHandler) zap.L().Info("✅ 删除接口注册完成: POST /country/delete") // 记录服务启动日志,监听80端口 zap.L().Info("✅ 服务启动在80端口") r.Run(":80") }