Files
exchange_go/services/binanceservice/futuresrest.go
2025-02-06 11:14:33 +08:00

63 lines
1.3 KiB
Go

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
}