1、删除过期订单修改
2、增加触发时间
This commit is contained in:
		| @ -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:"->"` | ||||
|  | ||||
| @ -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 | ||||
| 	} | ||||
|  | ||||
| @ -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 | ||||
|  | ||||
| @ -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) | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| @ -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 | ||||
|  | ||||
| @ -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) | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
		Reference in New Issue
	
	Block a user