1、删除过期订单修改

2、增加触发时间
This commit is contained in:
2025-02-22 09:51:45 +08:00
parent ed4456cd06
commit 184e699195
6 changed files with 30 additions and 9 deletions

View File

@ -34,6 +34,7 @@ type LinePreOrder struct {
ExpireTime time.Time `json:"expireTime" gorm:"comment:过期时间"`
MainOrderType string `json:"mainOrderType" gorm:"type:enum;comment:第一笔(主单类型) 限价LIMIT市价(MARKET)"`
LossAmount decimal.Decimal `json:"lossAmount" gorm:"type:decimal(18,8);comment:亏损金额U"`
TriggerTime *time.Time `json:"triggerTime" gorm:"type:datetime;comment:触发时间"`
Child []LinePreOrder `json:"child" gorm:"-"`
ApiName string `json:"api_name" gorm:"->"`
ChildNum int64 `json:"child_num" gorm:"->"`

View File

@ -71,7 +71,7 @@ func (receiver DeleteExpireOrder) Exec(arg interface{}) error {
break
}
orders := make([]models.LinePreOrder, 0)
err := db.Model(&models.LinePreOrder{}).Where("status = '0' AND expire_time <= ? AND (order_type = 1 or order_type = 2)", time.Now()).Find(&orders).Error
err := db.Model(&models.LinePreOrder{}).Where("status = '0' AND expire_time <= ? AND order_type = 0 AND pid=0", time.Now()).Find(&orders).Error
if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
return err
}

View File

@ -137,7 +137,7 @@ func futTriggerOrder(db *gorm.DB, v *dto.PreOrderRedisList, item string, futApi
}
}
if err := db.Model(&DbModels.LinePreOrder{}).Where("id =? AND status ='0'", preOrder.Id).Update("status", "1").Error; err != nil {
if err := db.Model(&DbModels.LinePreOrder{}).Where("id =? AND status ='0'", preOrder.Id).Updates(map[string]interface{}{"status": "1", "trigger_time": time.Now()}).Error; err != nil {
log.Error("更新预下单状态失败 ordersn:", v.OrderSn, " status:1")
}
@ -260,6 +260,11 @@ func FuturesReduceTrigger(db *gorm.DB, reduceOrder ReduceListItem, futApi FutRes
Updates(map[string]interface{}{"status": 2, "desc": err.Error()}).Error; err2 != nil {
log.Errorf("合约减仓更新状态失败 id%s err:%v", reduceOrder.Id, err2)
}
} else {
if err := db.Model(&DbModels.LinePreOrder{}).
Where("id = ? AND status =0", reduceOrder.Id).Updates(map[string]interface{}{"status": 1, "trigger_time": time.Now()}).Error; err != nil {
log.Errorf("合约减仓更新状态失败 id%s err:%v", reduceOrder.Id, err)
}
}
if _, err := helper.DefaultRedis.LRem(key, item); err != nil {
@ -270,7 +275,7 @@ func FuturesReduceTrigger(db *gorm.DB, reduceOrder ReduceListItem, futApi FutRes
}
}
// 判断现货加仓
// 判断合约加仓
func JudgeFutAddPosition(trade models.TradeSet) {
key := fmt.Sprintf(rediskey.FuturesAddPositionList, global.EXCHANGE_BINANCE)
preOrderVal, _ := helper.DefaultRedis.GetAllList(key)
@ -384,7 +389,7 @@ func FutAddPositionTrigger(db *gorm.DB, v *AddPositionList, item string, futApi
}
}
if err := db.Model(&DbModels.LinePreOrder{}).Where("id =? AND status ='0'", preOrder.Id).Update("status", "1").Error; err != nil {
if err := db.Model(&DbModels.LinePreOrder{}).Where("id =? AND status ='0'", preOrder.Id).Updates(map[string]interface{}{"status": "1", "trigger_time": time.Now()}).Error; err != nil {
log.Error("更新预下单状态失败 ordersn:", v.OrderSn, " status:1")
}
return

View File

@ -511,7 +511,7 @@ func processFutTakeProfitOrder(db *gorm.DB, futApi FutRestApi, order models.Line
}
} else {
if err := db.Model(&DbModels.LinePreOrder{}).Where("id = ? and status =0", order.Id).
Updates(map[string]interface{}{"status": "1", "num": num.String()}).Error; err != nil {
Updates(map[string]interface{}{"status": "1", "num": num.String(), "trigger_time": time.Now()}).Error; err != nil {
logger.Error("合约止盈下单成功,更新状态失败:", order.OrderSn, " err:", err)
}
}
@ -541,7 +541,7 @@ func processFutStopLossOrder(db *gorm.DB, order models.LinePreOrder, price, num
}
} else {
if err := db.Model(&order).Where("status =0").
Updates(map[string]interface{}{"status": "1"}).Error; err != nil {
Updates(map[string]interface{}{"status": "1", "trigger_time": time.Now()}).Error; err != nil {
logger.Error("合约止损下单成功,更新状态失败:", order.OrderSn, " err:", err)
}
}

View File

@ -127,7 +127,7 @@ func SpotOrderLock(db *gorm.DB, v *dto.PreOrderRedisList, item string, spotApi S
}
}
if err := db.Model(&DbModels.LinePreOrder{}).Where("id =? AND status ='0'", preOrder.Id).Update("status", "1").Error; err != nil {
if err := db.Model(&DbModels.LinePreOrder{}).Where("id =? AND status ='0'", preOrder.Id).Updates(map[string]interface{}{"status": "1", "trigger_time": time.Now()}).Error; err != nil {
log.Error("更新预下单状态失败 ordersn:", v.OrderSn, " status:1")
}
return
@ -244,11 +244,16 @@ func SpotStopLossTrigger(db *gorm.DB, stopOrder dto.StopLossRedisList, spotApi S
if err := spotApi.OrderPlaceLoop(db, params, 3); err != nil {
log.Errorf("现货止损挂单失败 id%s err:%v", stopOrder.Id, err)
} else {
if err := db.Model(&DbModels.LinePreOrder{}).Where("id = ? AND status =0", stopOrder.Id).Updates(map[string]interface{}{"status": 1, "trigger_time": time.Now()}).Error; err != nil {
log.Errorf("现货止损更新状态失败 id%s err:%v", stopOrder.Id, err)
}
}
if _, err := helper.DefaultRedis.LRem(key, item); err != nil {
log.Errorf("现货止损 删除缓存失败 id:%v err:%v", stopOrder.Id, err)
}
} else {
log.Error("获取锁失败")
}
@ -356,6 +361,12 @@ func SpotReduceTrigger(db *gorm.DB, reduceOrder ReduceListItem, spotApi SpotRest
Updates(map[string]interface{}{"status": 2, "desc": err.Error()}).Error; err2 != nil {
log.Errorf("修改现货减仓状态失败 id%s err:%v", reduceOrder.Id, err2)
}
} else {
if err := db.Model(&DbModels.LinePreOrder{}).
Where("id =? AND status =0", reduceOrder.Id).
Updates(map[string]interface{}{"status": 1, "trigger_time": time.Now()}).Error; err != nil {
log.Errorf("修改现货减仓状态失败 id%s err:%v", reduceOrder.Id, err)
}
}
if _, err := helper.DefaultRedis.LRem(key, item); err != nil {
@ -474,7 +485,11 @@ func SpotAddPositionTrigger(db *gorm.DB, v *AddPositionList, item string, spotAp
}
}
if err := db.Model(&DbModels.LinePreOrder{}).Where("id =? AND status ='0'", preOrder.Id).Update("status", "1").Error; err != nil {
if err := db.Model(&DbModels.LinePreOrder{}).Where("id =?", preOrder.Id).Updates(map[string]interface{}{"trigger_time": time.Now()}).Error; err != nil {
log.Error("更新预下单触发事件失败 ordersn:", v.OrderSn)
}
if err := db.Model(&DbModels.LinePreOrder{}).Where("id =? AND status ='0'", preOrder.Id).Updates(map[string]interface{}{"status": "1"}).Error; err != nil {
log.Error("更新预下单状态失败 ordersn:", v.OrderSn, " status:1")
}
return

View File

@ -687,7 +687,7 @@ func processTakeProfitOrder(db *gorm.DB, spotApi SpotRestApi, order models.LineP
}
} else {
if err := db.Model(&DbModels.LinePreOrder{}).Where("id = ? and status ='0'", order.Id).
Updates(map[string]interface{}{"status": "1", "num": order.Num}).Error; err != nil {
Updates(map[string]interface{}{"status": "1", "num": order.Num, "trigger_time": time.Now()}).Error; err != nil {
logger.Error("现货止盈下单成功,更新状态失败:", order.OrderSn, " err:", err)
}
}