package binanceservice import ( "context" "fmt" "go-admin/common/const/rediskey" "go-admin/common/helper" "time" "github.com/bytedance/sonic" "github.com/go-admin-team/go-admin-core/logger" ) /* 修改订单信息 */ func ChangeFutureOrder(mapData map[string]interface{}) { // 检查订单号是否存在 orderSn, ok := mapData["c"] if !ok { logger.Error("合约订单回调失败,没有订单号") return } // 获取数据库连接 db := GetDBConnection() if db == nil { logger.Error("合约订单回调失败,无法获取数据库连接") return } // 获取 Redis 锁 lock := helper.NewRedisLock(fmt.Sprintf(rediskey.SpotCallBack, orderSn), 10, 5, 500*time.Millisecond) acquired, err := lock.AcquireWait(context.Background()) if err != nil { logger.Error("合约订单回调失败,获取锁失败:", orderSn, " err:", err) return } if !acquired { logger.Error("合约订单回调失败,获取锁失败:", orderSn) return } defer lock.Release() // 查询订单 preOrder, err := getPreOrder(db, orderSn) if err != nil { logger.Error("合约订单回调失败,查询订单失败:", orderSn, " err:", err) return } // 解析订单状态 status, ok := mapData["X"].(string) if !ok { mapStr, _ := sonic.Marshal(&mapData) logger.Error("订单回调失败,没有状态:", string(mapStr)) return } //todo }