63 lines
1.3 KiB
Go
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
|
|
|
|
}
|