From 7892c9c9dd0952eaef3b813a1be033bece8f2e51 Mon Sep 17 00:00:00 2001 From: hucan <951870319@qq.com> Date: Fri, 14 Feb 2025 10:54:30 +0800 Subject: [PATCH] 1 --- app/jobs/jobs.go | 6 +++--- services/binanceservice/futuresrest.go | 12 +++++++++++- services/binanceservice/spotreset.go | 2 +- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/app/jobs/jobs.go b/app/jobs/jobs.go index 2b21de9..91a51e7 100644 --- a/app/jobs/jobs.go +++ b/app/jobs/jobs.go @@ -3,8 +3,6 @@ package jobs import ( "errors" "fmt" - "github.com/jinzhu/copier" - "github.com/shopspring/decimal" "go-admin/app/admin/models" "go-admin/app/admin/service" "go-admin/app/admin/service/dto" @@ -17,6 +15,9 @@ import ( "strings" "time" + "github.com/jinzhu/copier" + "github.com/shopspring/decimal" + "github.com/go-admin-team/go-admin-core/sdk" "gorm.io/gorm" @@ -174,7 +175,6 @@ func (t LimitOrderTimeoutDuration) Exec(arg interface{}) error { continue } } - } //合约 diff --git a/services/binanceservice/futuresrest.go b/services/binanceservice/futuresrest.go index ccb5a84..b332590 100644 --- a/services/binanceservice/futuresrest.go +++ b/services/binanceservice/futuresrest.go @@ -364,7 +364,7 @@ func handleTakeProfit(db *gorm.DB, preOrder *DbModels.LinePreOrder) { ids := []int{preOrder.Pid, preOrder.MainId} //主单止盈成交 - if err := db.Model(&DbModels.LinePreOrder{}).Where("id IN ?", ids).Update("status", 9).Error; err != nil { + if err := db.Model(&DbModels.LinePreOrder{}).Where("id IN ? AND order_type=0", ids).Update("status", 9).Error; err != nil { logger.Errorf("主单止盈成功修改主单状态失败 订单号:%s:", err) } } @@ -469,6 +469,16 @@ func handleFutMainOrderFilled(db *gorm.DB, preOrder *models.LinePreOrder) { num = num.Truncate(int32(tradeSet.AmountDigit)) order.Price = price.String() + if order.OrderType == 4 { + ext := DbModels.LinePreOrderExt{} + db.Model(&ext).Where("order_id=?", preOrder.Id).Find(&ext) + + if ext.ReduceNumRatio.Cmp(decimal.Zero) > 0 { + num = num.Mul(ext.ReduceNumRatio.Div(decimal.NewFromInt(100))).Truncate(int32(tradeSet.AmountDigit)) + order.Num = num.String() + } + } + if err := db.Model(&order).Update("num", num).Error; err != nil { logger.Errorf("修改止盈止损数量失败 订单号:%s err:%v", order.OrderSn, err) } diff --git a/services/binanceservice/spotreset.go b/services/binanceservice/spotreset.go index 2695fcf..31e82b2 100644 --- a/services/binanceservice/spotreset.go +++ b/services/binanceservice/spotreset.go @@ -434,7 +434,7 @@ func handleSpotTakeProfitFilled(db *gorm.DB, preOrder *DbModels.LinePreOrder) { db.Transaction(func(tx *gorm.DB) error { ids := []int{preOrder.Pid, preOrder.MainId} - if err := db.Model(&DbModels.LinePreOrder{}).Where("id IN ? AND status =6", ids).Update("status", 9).Error; err != nil { + if err := db.Model(&DbModels.LinePreOrder{}).Where("id IN ? AND status =6 AND order_type=0", ids).Update("status", 9).Error; err != nil { logger.Errorf("止盈订单回调失败, 回调订单号:%s 更新主单失败:%v", preOrder.OrderSn, err) return err