mirror of
https://git.oceanpay.cc/danial/kami_scripts.git
synced 2025-12-18 21:12:33 +00:00
- 在 main.go 中集成文件锁,确保应用程序只能有一个实例运行 - 新增 lock.go 文件,提供锁定和解锁文件的功能 - 更新 go.mod 和 go.sum 文件,引入 gofrs/flock 依赖 - 修改 submit_order.go 中的日志记录,优化订单发送信息
83 lines
1.7 KiB
Go
83 lines
1.7 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"log"
|
|
|
|
"order/internal/client"
|
|
"order/internal/config"
|
|
"order/internal/interfaces"
|
|
"order/internal/repositories"
|
|
"order/internal/services"
|
|
"order/internal/utils"
|
|
|
|
"gorm.io/driver/mysql"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
var (
|
|
appLogger interfaces.Logger
|
|
db *gorm.DB
|
|
)
|
|
|
|
func init() {
|
|
// 加载配置
|
|
cfg := config.GetConfig()
|
|
|
|
// 初始化日志
|
|
zapLogger, err := utils.NewLogger(cfg)
|
|
if err != nil {
|
|
log.Fatalf("初始化日志失败: %v", err)
|
|
}
|
|
defer func() {
|
|
_ = zapLogger.Sync()
|
|
}()
|
|
|
|
// 创建日志适配器
|
|
appLogger = utils.NewZapLoggerAdapter(zapLogger)
|
|
|
|
// 初始化数据库连接
|
|
dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=True&loc=Local",
|
|
cfg.Database.Username,
|
|
cfg.Database.Password,
|
|
cfg.Database.Host,
|
|
cfg.Database.Port,
|
|
cfg.Database.DBName,
|
|
)
|
|
|
|
db, err = gorm.Open(mysql.Open(dsn), &gorm.Config{
|
|
Logger: utils.NewGormLogger(appLogger),
|
|
})
|
|
if err != nil {
|
|
appLogger.Fatal("连接数据库失败", "error", err)
|
|
}
|
|
}
|
|
|
|
func main() {
|
|
// 文件锁,防止多实例
|
|
if err := LockFile("app.lock"); err != nil {
|
|
log.Fatalf("已有其他实例在运行: %v", err)
|
|
}
|
|
defer UnlockFile()
|
|
// 加载配置
|
|
cfg := config.GetConfig()
|
|
|
|
// 创建仓储实例
|
|
orderRepo := repositories.NewOrderRepository(db)
|
|
|
|
// 创建订单发送器(这里需要实现具体的发送逻辑)
|
|
orderSender := client.NewMockOrderSender(appLogger)
|
|
|
|
// // 创建订单服务
|
|
orderService := services.NewOrderService(orderRepo, orderSender, appLogger, cfg)
|
|
|
|
// 创建上下文
|
|
ctx, cancel := context.WithCancel(context.Background())
|
|
defer cancel()
|
|
|
|
if err := orderService.ProcessOrders(ctx); err != nil {
|
|
appLogger.Error("处理订单失败", "error", err)
|
|
}
|
|
}
|