package main import ( "fmt" "log" "os" "os/signal" "syscall" "github.com/goccy/go-yaml" handler "getErpSendPublishing/controller" "getErpSendPublishing/utils" "getErpSendPublishing/utils/dbConnectUtil" "github.com/gin-gonic/gin" ) var config Config type Config struct { RedisDb struct { Addr string `yaml:"addr"` Password string `yaml:"password"` db int `yaml:"db"` } `yaml:"redis-db"` RedisDbTwo struct { Addr string `yaml:"addr"` Password string `yaml:"password"` db int `yaml:"db"` } `yaml:"redis-dbTwo"` } // 加载配置文件 func loadConfig() error { configFile, err := os.ReadFile("config.yaml") if err != nil { return fmt.Errorf("读取配置文件失败: %v", err) } if err := yaml.Unmarshal(configFile, &config); err != nil { return fmt.Errorf("解析配置文件失败: %v", err) } return nil } func main() { // 加载配置 if err := loadConfig(); err != nil { log.Fatalf("加载配置失败: %v", err) } log.Printf("config.RedisDb%v", config.RedisDb) // 初始化默认Redis(用于任务存储)- 本地Redis utils.InitRedis(config.RedisDb.Addr, config.RedisDb.Password, config.RedisDb.db) // 初始化缓存Redis(用于商品图片缓存)- 远程Redis utils.InitCacheRedis(config.RedisDbTwo.Addr, config.RedisDbTwo.Password, config.RedisDbTwo.db) //// 初始化第二个Redis连接(库7,用于Header数据查询) if err := utils.InitRedisTwo(); err != nil { log.Fatalf("RedisTwo初始化失败: %v", err) } //log.Println("RedisTwo初始化成功(连接到103.236.74.207:6379,库7)") // 初始化专门用于ParseFormData函数的Redis连接(库13,用于查重) if err := utils.InitRedisTwoForParseFormData(); err != nil { log.Fatalf("RedisTwoForParseFormData初始化失败: %v", err) } log.Println("RedisTwoForParseFormData初始化成功(连接到36.212.1.63:6379,库13)") // 初始化全局MySQL连接池(单例,被所有查重接口复用,防止大量连接同时创建) if _, err := dbConnectUtil.InitDB("zhishu", "XsRR4K3ATizyc5BK", "146.56.227.42", 3306); err != nil { log.Fatalf("全局MySQL连接初始化失败: %v", err) } log.Println("全局MySQL连接池初始化成功(zhishu@146.56.227.42:3306),最大连接数=20") // 初始化Gin router := gin.Default() // 注册路由 //查重 router.POST("/api/goods/simple", handler.ParseFormData) //批量查重 router.POST("/api/goods/batchDeduplication", handler.BatchProcessCenterBooks) //新 - 单挑查重 router.POST("/api/goods/newParseFormData", handler.NewParseFormData) //新 - 闲鱼多店铺去重 router.POST("/api/goods/goofish/multipleStores", handler.MultipleStores) //新 - 闲鱼多店去重,本地确认多店铺 router.POST("/api/goods/goofish/singleShopMultipleStores", handler.SingleShopMultipleStores) // 启动HTTP服务器 go func() { log.Println("HTTP服务器启动在 :8182") if err := router.Run(":8182"); err != nil { log.Fatal("HTTP服务器启动失败:", err) } }() // 等待中断信号 sigChan := make(chan os.Signal, 1) signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM) <-sigChan log.Println("接收到中断信号,正在关闭服务...") log.Println("服务已关闭") }