From 396f03964aabea1699bc5d9c7148a7054236e6fa Mon Sep 17 00:00:00 2001 From: vipg Date: Sat, 15 Nov 2025 17:50:35 +0800 Subject: [PATCH] add --- backend/futures_trade_record/dev-test.sh | 4 ++- .../futures_trade_record/src/db/postgres.go | 12 +++---- .../futures_trade_record/src/logger/logger.go | 32 ++++++++--------- .../exchange_create.go | 6 ++-- .../variety_create.go | 0 backend/futures_trade_record/src/main.go | 34 ++++++++++++------- 6 files changed, 50 insertions(+), 38 deletions(-) rename backend/futures_trade_record/src/{logic/exchange => logic4exchange}/exchange_create.go (98%) rename backend/futures_trade_record/src/{logic/variety => logic4variety}/variety_create.go (100%) diff --git a/backend/futures_trade_record/dev-test.sh b/backend/futures_trade_record/dev-test.sh index b65ab5a..3410fc2 100644 --- a/backend/futures_trade_record/dev-test.sh +++ b/backend/futures_trade_record/dev-test.sh @@ -1 +1,3 @@ -docker run -itd --name go_futures_trade_record_dev -v $(pwd)/src:/app -p 20010:80 golang:1.25.0-alpine3.22 \ No newline at end of file +docker stop go_futures_trade_record_dev +docker rm go_futures_trade_record_dev +docker run -itd --name go_futures_trade_record_dev -v $(pwd)/src:/app -p 20110:80 golang:1.25.0-alpine3.22 \ No newline at end of file diff --git a/backend/futures_trade_record/src/db/postgres.go b/backend/futures_trade_record/src/db/postgres.go index 04b8563..6753a5e 100644 --- a/backend/futures_trade_record/src/db/postgres.go +++ b/backend/futures_trade_record/src/db/postgres.go @@ -5,7 +5,7 @@ import ( "fmt" "os" "time" - + _ "github.com/lib/pq" "go.uber.org/zap" ) @@ -39,11 +39,11 @@ func Init() { if err != nil { zap.L().Panic("❌ 无法连接数据库", zap.Error(err)) } - + // 设置连接池参数 - DB.SetMaxOpenConns(100) // 最大打开连接数 - DB.SetMaxIdleConns(20) // 最大空闲连接数 - DB.SetConnMaxLifetime(time.Hour) // 连接最大存活时间 + DB.SetMaxOpenConns(100) // 最大打开连接数 + DB.SetMaxIdleConns(20) // 最大空闲连接数 + DB.SetConnMaxLifetime(time.Hour) // 连接最大存活时间 // 验证数据库连接 if err := DB.Ping(); err != nil { @@ -51,4 +51,4 @@ func Init() { } zap.L().Info("✅ 数据库连接验证成功") -} \ No newline at end of file +} diff --git a/backend/futures_trade_record/src/logger/logger.go b/backend/futures_trade_record/src/logger/logger.go index 8021baa..d7eee0b 100644 --- a/backend/futures_trade_record/src/logger/logger.go +++ b/backend/futures_trade_record/src/logger/logger.go @@ -14,17 +14,17 @@ import ( var shanghaiLoc *time.Location func init() { - var err error - shanghaiLoc, err = time.LoadLocation("Asia/Shanghai") - if err != nil { - // 尝试备选时区名称 - shanghaiLoc, err = time.LoadLocation("PRC") - if err != nil { - // 若仍失败,手动设置东八区偏移 - shanghaiLoc = time.FixedZone("CST", 8*3600) - log.Printf("警告:加载时区失败,使用手动东八区偏移: %v", err) - } - } + var err error + shanghaiLoc, err = time.LoadLocation("Asia/Shanghai") + if err != nil { + // 尝试备选时区名称 + shanghaiLoc, err = time.LoadLocation("PRC") + if err != nil { + // 若仍失败,手动设置东八区偏移 + shanghaiLoc = time.FixedZone("CST", 8*3600) + log.Printf("警告:加载时区失败,使用手动东八区偏移: %v", err) + } + } } // Init 初始化日志(依赖配置文件已加载) @@ -43,10 +43,10 @@ func Init() { // 日志轮转配置(lumberjack) hook := lumberjack.Logger{ Filename: viper.GetString("logger.path") + "logs/app.log", // 日志文件路径 - MaxSize: viper.GetInt("logger.max_size"), // 单个文件最大大小(MB) - MaxBackups: viper.GetInt("logger.max_backup"), // 最大备份数 - MaxAge: viper.GetInt("logger.max_age"), // 最大保留天数 - Compress: true, // 是否压缩 + MaxSize: viper.GetInt("logger.max_size"), // 单个文件最大大小(MB) + MaxBackups: viper.GetInt("logger.max_backup"), // 最大备份数 + MaxAge: viper.GetInt("logger.max_age"), // 最大保留天数 + Compress: true, // 是否压缩 } // 编码器配置 @@ -83,4 +83,4 @@ func customTimeEncoder(t time.Time, enc zapcore.PrimitiveArrayEncoder) { beijingTime := t.In(shanghaiLoc) // 格式化输出 enc.AppendString(beijingTime.Format("2006-01-02 15:04:05.000")) -} \ No newline at end of file +} diff --git a/backend/futures_trade_record/src/logic/exchange/exchange_create.go b/backend/futures_trade_record/src/logic4exchange/exchange_create.go similarity index 98% rename from backend/futures_trade_record/src/logic/exchange/exchange_create.go rename to backend/futures_trade_record/src/logic4exchange/exchange_create.go index 415ef84..5e52df8 100644 --- a/backend/futures_trade_record/src/logic/exchange/exchange_create.go +++ b/backend/futures_trade_record/src/logic4exchange/exchange_create.go @@ -18,8 +18,8 @@ type CreateExchangeRequest struct { // CreateExchangeResponse 响应结构 type CreateExchangeResponse struct { - Success bool `json:"success"` - Message string `json:"message"` + Success bool `json:"success"` + Message string `json:"message"` Data CreateExchangeData `json:"data"` } @@ -174,4 +174,4 @@ func CreateExchangeHandler(c *gin.Context) { ExchangeID: exchangeID, }, }) -} \ No newline at end of file +} diff --git a/backend/futures_trade_record/src/logic/variety/variety_create.go b/backend/futures_trade_record/src/logic4variety/variety_create.go similarity index 100% rename from backend/futures_trade_record/src/logic/variety/variety_create.go rename to backend/futures_trade_record/src/logic4variety/variety_create.go diff --git a/backend/futures_trade_record/src/main.go b/backend/futures_trade_record/src/main.go index ae247cc..7b9684b 100644 --- a/backend/futures_trade_record/src/main.go +++ b/backend/futures_trade_record/src/main.go @@ -1,11 +1,14 @@ package main import ( - "futures_trade_record/db" // 数据库相关操作包 - "futures_trade_record/logger" // 日志工具包 - "futures_trade_record/logic/variety" // 业务逻辑处理包 - + "futures_trade_record/db" // 数据库相关操作包 + "futures_trade_record/logger" // 日志工具包 + "futures_trade_record/logic4exchange" + "futures_trade_record/logic4variety" + + // 业务逻辑处理包 "time" + "github.com/gin-contrib/cors" "github.com/gin-gonic/gin" // Gin框架,用于构建HTTP服务 _ "github.com/lib/pq" // PostgreSQL数据库驱动(下划线表示仅初始化不直接使用) @@ -18,7 +21,7 @@ func main() { logger.Init() // 记录服务初始化日志 zap.L().Info("🟢 用户服务初始化") - + // 记录数据库初始化开始日志 zap.L().Info("🟢 数据库初始化开始") // 初始化数据库连接 @@ -36,28 +39,35 @@ func main() { // 配置跨域中间件 r.Use(cors.New(cors.Config{ // 允许所有来源(生产环境建议指定具体域名) - AllowOrigins: []string{"*"}, + AllowOrigins: []string{"*"}, // 允许的请求方法 - AllowMethods: []string{"GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"}, + AllowMethods: []string{"GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"}, // 允许的请求头 - AllowHeaders: []string{"Origin", "Content-Type", "Content-Length", "Accept-Encoding", "X-CSRF-Token", "Authorization", "X-LoginRequest-ID"}, + AllowHeaders: []string{"Origin", "Content-Type", "Content-Length", "Accept-Encoding", "X-CSRF-Token", "Authorization", "X-LoginRequest-ID"}, // 允许前端读取的响应头 - ExposeHeaders: []string{"Content-Length"}, + ExposeHeaders: []string{"Content-Length"}, // 是否允许携带cookie AllowCredentials: true, // 预检请求的缓存时间 - MaxAge: 12 * time.Hour, + MaxAge: 12 * time.Hour, })) zap.L().Info("✅ 配置跨域中间件完成") // 注册品种接口 variety := r.Group("/api/variety") { - variety.POST("/create", logic.CreateVarietyHandler) // 创建品种 + variety.POST("/create", logic4variety.CreateVarietyHandler) } zap.L().Info("✅ 品种接口注册完成") + // 注册交易所接口 + exchangeGroup := r.Group("/api/exchange") + { + exchangeGroup.POST("/create", logic4exchange.CreateExchangeHandler) + } + zap.L().Info("✅ 交易所接口注册完成") + // 记录服务启动日志,监听80端口 zap.L().Info("✅ 服务启动在80端口") r.Run(":80") -} \ No newline at end of file +}