| | |
| | | package com.xcong.excoin.modules.contract.service.impl; |
| | | |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.xcong.excoin.common.contants.AppContants; |
| | | import com.xcong.excoin.modules.coin.dao.MemberAccountFlowEntityDao; |
| | | import com.xcong.excoin.modules.coin.entity.MemberAccountFlowEntity; |
| | | import com.xcong.excoin.modules.contract.dao.ContractEntrustOrderDao; |
| | | import com.xcong.excoin.modules.contract.dao.ContractHoldOrderDao; |
| | | import com.xcong.excoin.modules.contract.entity.ContractEntrustOrderEntity; |
| | | import com.xcong.excoin.modules.contract.entity.ContractHoldOrderEntity; |
| | |
| | | import com.xcong.excoin.modules.platform.entity.PlatformTradeSettingEntity; |
| | | import com.xcong.excoin.rabbit.pricequeue.OrderModel; |
| | | import com.xcong.excoin.rabbit.producer.OrderProducer; |
| | | import com.xcong.excoin.utils.CacheSettingUtils; |
| | | import com.xcong.excoin.utils.CalculateUtil; |
| | | import com.xcong.excoin.utils.CoinTypeConvert; |
| | | import com.xcong.excoin.utils.ThreadPoolUtils; |
| | | import com.xcong.excoin.utils.*; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.collections.CollectionUtils; |
| | | import org.springframework.stereotype.Service; |
| | |
| | | private MemberSettingDao memberSettingDao; |
| | | @Resource |
| | | private ContractHoldOrderDao contractHoldOrderDao; |
| | | @Resource |
| | | private ContractEntrustOrderDao contractEntrustOrderDao; |
| | | @Resource |
| | | private RedisUtils redisUtils; |
| | | |
| | | |
| | | public void dealOrderFromMq(List<OrderModel> list, Integer type) { |
| | |
| | | |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 止盈/止损后删除全仓委托平仓单 |
| | | * |
| | | * @param orderNo |
| | | */ |
| | | private void deleteEntrustCloseOrder(String orderNo) { |
| | | // 若平掉所有张数,若存在委托平仓,则删除委托平仓记录 |
| | | List<ContractEntrustOrderEntity> entrustOrders = contractEntrustOrderDao.selectEntrustOrderByOrderNo(orderNo); |
| | | if (CollUtil.isNotEmpty(entrustOrders)) { |
| | | for (ContractEntrustOrderEntity entrustOrder : entrustOrders) { |
| | | contractEntrustOrderDao.deleteById(entrustOrder.getId()); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 开多止盈 |
| | |
| | | |
| | | //返佣 |
| | | ThreadPoolUtils.calReturnMoney(order.getMemberId(), order.getOpeningFeeAmount(), contractOrderEntity, AgentReturnEntity.ORDER_TYPE_CLOSE); |
| | | |
| | | // 全仓模式,止盈/止损 删除委托平仓 |
| | | if (ContractEntrustOrderEntity.POSITION_TYPE_ALL == order.getPositionType()) { |
| | | deleteEntrustCloseOrder(order.getOrderNo()); |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | /** |
| | | * 开空止盈 |
| | | */ |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void dealForLessStopPro(List<ContractHoldOrderEntity> orderList, List<OrderModel> list) { |
| | | //List<CoinsCoinsOrder> orderList = orderMapper.selectOrderByBatchNo(batchno); |
| | | //System.out.println("开空止盈订单batchno:" + batchno); |
| | |
| | | |
| | | //返佣 |
| | | ThreadPoolUtils.calReturnMoney(order.getMemberId(), order.getOpeningFeeAmount(), contractOrderEntity, AgentReturnEntity.ORDER_TYPE_CLOSE); |
| | | |
| | | // 全仓模式,止盈/止损 删除委托平仓 |
| | | if (ContractEntrustOrderEntity.POSITION_TYPE_ALL == order.getPositionType()) { |
| | | deleteEntrustCloseOrder(order.getOrderNo()); |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | * |
| | | * @param |
| | | */ |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void dealForMoreLoss(List<ContractHoldOrderEntity> orderList, List<OrderModel> list) { |
| | | //List<CoinsCoinsOrder> orderList = orderMapper.selectOrderByBatchNo(batchno); |
| | | //System.out.println("开多止损批次号batchno:" + batchno); |
| | |
| | | |
| | | //返佣 |
| | | ThreadPoolUtils.calReturnMoney(order.getMemberId(), order.getOpeningFeeAmount(), contractOrderEntity, AgentReturnEntity.ORDER_TYPE_CLOSE); |
| | | |
| | | // 全仓模式,止盈/止损 删除委托平仓 |
| | | if (ContractEntrustOrderEntity.POSITION_TYPE_ALL == order.getPositionType()) { |
| | | deleteEntrustCloseOrder(order.getOrderNo()); |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | * |
| | | * @param |
| | | */ |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void dealForLessLoss(List<ContractHoldOrderEntity> orderList, List<OrderModel> list) { |
| | | // List<CoinsCoinsOrder> orderList = orderMapper.selectOrderByBatchNo(batchno); |
| | | //System.out.println("开空止损批次号batchno:" + batchno); |
| | |
| | | |
| | | //返佣 |
| | | ThreadPoolUtils.calReturnMoney(order.getMemberId(), order.getOpeningFeeAmount(), contractOrderEntity, AgentReturnEntity.ORDER_TYPE_CLOSE); |
| | | |
| | | // 全仓模式,止盈/止损 删除委托平仓 |
| | | if (ContractEntrustOrderEntity.POSITION_TYPE_ALL == order.getPositionType()) { |
| | | deleteEntrustCloseOrder(order.getOrderNo()); |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | modelMap.put(model.getOrderId(), model.getOperateNo()); |
| | | } |
| | | for (ContractHoldOrderEntity coinsOrder : orderList) { |
| | | List<Object> types = redisUtils.lGet(AppContants.RABBIT_TYPE + coinsOrder.getId(), 0, -1); |
| | | if(types.contains(9) || types.contains(10) || types.contains(11) || types.contains(12)) { |
| | | log.info("存在止盈/止损 orderId : {}, types : {}", coinsOrder.getId(), JSONObject.toJSONString(types)); |
| | | continue; |
| | | } |
| | | Long orderId = coinsOrder.getId(); |
| | | Integer operateNo = coinsOrder.getOperateNo(); |
| | | //判断当前订单是否是最新的爆仓价 不相等时直接进入下一个订单 |