mirror of
https://git.oceanpay.cc/danial/kami_scripts.git
synced 2025-12-18 22:49:25 +00:00
- 更新 .gitignore 文件,添加日志和IDE相关目录 - 修改 config.yaml,更新提交URL和商户配置- 在 interfaces.go 中添加新方法并修改现有方法 - 优化 logger_adapter.go 中的日志记录功能 - 调整 main.go 中的定时任务间隔 - 在 order.go 中实现新的 FindRandomFailedOrders 方法 - 更新 order_service.go,添加 CSV 文件处理逻辑 - 新增 road.go 文件,实现 FindRoadByRoadUid 方法 - 修改 submit_order.go,更新订单提交逻辑
103 lines
2.0 KiB
Go
103 lines
2.0 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
"os/signal"
|
|
"syscall"
|
|
"time"
|
|
|
|
"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() {
|
|
// 加载配置
|
|
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()
|
|
|
|
// 处理信号
|
|
sigChan := make(chan os.Signal, 1)
|
|
signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM)
|
|
|
|
// 启动定时任务
|
|
ticker := time.NewTicker(time.Duration(cfg.Schedule.Interval) * time.Second)
|
|
defer ticker.Stop()
|
|
|
|
go func() {
|
|
for {
|
|
select {
|
|
case <-ticker.C:
|
|
if err := orderService.ProcessOrders(ctx); err != nil {
|
|
appLogger.Error("处理订单失败", "error", err)
|
|
}
|
|
case <-ctx.Done():
|
|
return
|
|
}
|
|
}
|
|
}()
|
|
|
|
// 等待信号
|
|
<-sigChan
|
|
appLogger.Info("正在关闭服务...")
|
|
}
|