1、合仓
This commit is contained in:
@ -7,6 +7,7 @@ import (
|
||||
"go-admin/common/global"
|
||||
"go-admin/common/helper"
|
||||
models2 "go-admin/models"
|
||||
"go-admin/models/positiondto"
|
||||
"go-admin/pkg/utility"
|
||||
"go-admin/pkg/utility/snowflakehelper"
|
||||
"go-admin/services/binanceservice"
|
||||
@ -225,11 +226,7 @@ func (e *LinePreOrder) Remove(d *dto.LinePreOrderDeleteReq, p *actions.DataPermi
|
||||
var data models.LinePreOrder
|
||||
var list []models.LinePreOrder
|
||||
e.Orm.Model(&models.LinePreOrder{}).Where("id in ?", d.GetId()).Find(&list)
|
||||
//for _, order := range list {
|
||||
//if order.Status != "0" {
|
||||
// return errors.New(fmt.Sprintf("订单id %d 已被触发 无法被删除", order.Id))
|
||||
//}
|
||||
//}
|
||||
|
||||
db := e.Orm.Model(&data).
|
||||
Scopes(
|
||||
actions.Permission(data.TableName(), p),
|
||||
@ -245,6 +242,8 @@ func (e *LinePreOrder) Remove(d *dto.LinePreOrderDeleteReq, p *actions.DataPermi
|
||||
return errors.New("无权删除该数据")
|
||||
}
|
||||
|
||||
positions := map[string]positiondto.LinePreOrderPositioinDelReq{}
|
||||
|
||||
//删除的缓存
|
||||
for _, order := range list {
|
||||
redisList := dto.PreOrderRedisList{
|
||||
@ -272,6 +271,19 @@ func (e *LinePreOrder) Remove(d *dto.LinePreOrderDeleteReq, p *actions.DataPermi
|
||||
helper.DefaultRedis.LRem(listKey, string(marshal))
|
||||
}
|
||||
|
||||
//会影响持仓的
|
||||
removeSymbolKey := fmt.Sprintf("%v_%s_%s_%s_%v", order.ApiId, order.ExchangeType, order.Symbol, order.Site, order.SymbolType)
|
||||
|
||||
if _, ok := positions[removeSymbolKey]; !ok {
|
||||
positions[removeSymbolKey] = positiondto.LinePreOrderPositioinDelReq{
|
||||
ApiId: order.ApiId,
|
||||
Symbol: order.Symbol,
|
||||
ExchangeType: order.ExchangeType,
|
||||
Side: order.Site,
|
||||
SymbolType: order.SymbolType,
|
||||
}
|
||||
}
|
||||
|
||||
binanceservice.MainClosePositionClearCache(order.Id, order.SymbolType)
|
||||
|
||||
ints = append(ints, order.Id)
|
||||
@ -280,6 +292,27 @@ func (e *LinePreOrder) Remove(d *dto.LinePreOrderDeleteReq, p *actions.DataPermi
|
||||
if len(ints) > 0 {
|
||||
e.Orm.Model(&models.LinePreOrder{}).Where("main_id >0 AND main_id in ?", ints).Unscoped().Delete(&models.LinePreOrder{})
|
||||
}
|
||||
|
||||
//清理仓位缓存
|
||||
for _, v := range positions {
|
||||
var count int64
|
||||
e.Orm.Model(&models.LinePreOrder{}).
|
||||
Where("api_id =? AND site=? AND symbol=? AND symbol_type =? AND exchange_type =? AND status =6",
|
||||
v.ApiId, v.Side, v.Symbol, v.SymbolType, v.ExchangeType).Count(&count)
|
||||
|
||||
//没有已开仓的订单 直接清理仓位
|
||||
if count == 0 {
|
||||
var key string
|
||||
|
||||
if v.SymbolType == 1 {
|
||||
key = fmt.Sprintf(rediskey.SpotPosition, v.ExchangeType, v.ApiId, v.Symbol, v.Side)
|
||||
} else {
|
||||
key = fmt.Sprintf(rediskey.FuturePosition, v.ExchangeType, v.ApiId, v.Symbol, v.Side)
|
||||
}
|
||||
|
||||
helper.DefaultRedis.DeleteString(key)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -323,11 +356,11 @@ func (e *LinePreOrder) AddPreOrder(req *dto.LineAddPreOrderReq, p *actions.DataP
|
||||
|
||||
//获取交易对
|
||||
tradeSet, _ := helper.GetObjString[models2.TradeSet](helper.DefaultRedis, key)
|
||||
orderCount := e.CheckRepeatOrder(req.SymbolType, id, req.Site, tradeSet.Coin)
|
||||
if orderCount > 0 {
|
||||
*errs = append(*errs, fmt.Errorf("api_id:%s 获取交易对:%s 该交易对已存在,请勿重复下单", id, req.Symbol))
|
||||
continue
|
||||
}
|
||||
// orderCount := e.CheckRepeatOrder(req.SymbolType, id, req.Site, tradeSet.Coin)
|
||||
// if orderCount > 0 {
|
||||
// *errs = append(*errs, fmt.Errorf("api_id:%s 获取交易对:%s 该交易对已存在,请勿重复下单", id, req.Symbol))
|
||||
// continue
|
||||
// }
|
||||
tickerPrice := utility.StrToDecimal(tradeSet.LastPrice)
|
||||
if tickerPrice.Equal(decimal.Zero) { //redis 没有这个值
|
||||
*errs = append(*errs, fmt.Errorf("api_id:%s 获取交易对:%s 交易行情出错", id, req.Symbol))
|
||||
|
||||
Reference in New Issue
Block a user