| | |
| | | // 市价 |
| | | if (coinsCoinsOrder.getEntrustType() == 1) { |
| | | // 开多 |
| | | OrderModel model = new OrderModel(contractHoldOrderEntity.getId(), 6, contractHoldOrderEntity.getForceClosingPrice().setScale(8, RoundingMode.HALF_UP).toPlainString(), coinsCoinsOrder.getSymbol(), 1); |
| | | OrderModel model = new OrderModel(contractHoldOrderEntity.getId(), 6, contractHoldOrderEntity.getForceClosingPrice().setScale(8, RoundingMode.HALF_UP).toPlainString(), coinsCoinsOrder.getSymbol(), 1, coinsCoinsOrder.getMemberId()); |
| | | producer.sendPriceOperate(JSONObject.toJSONString(model)); |
| | | } else { |
| | | // 开空 |
| | | OrderModel model = new OrderModel(contractHoldOrderEntity.getId(), 7, contractHoldOrderEntity.getForceClosingPrice().setScale(8, RoundingMode.HALF_UP).toPlainString(), coinsCoinsOrder.getSymbol(), 1); |
| | | OrderModel model = new OrderModel(contractHoldOrderEntity.getId(), 7, contractHoldOrderEntity.getForceClosingPrice().setScale(8, RoundingMode.HALF_UP).toPlainString(), coinsCoinsOrder.getSymbol(), 1, coinsCoinsOrder.getMemberId()); |
| | | producer.sendPriceOperate(JSONObject.toJSONString(model)); |
| | | } |
| | | // 扣除手续费 |
| | |
| | | |
| | | private void wholeEntrustOrder(ContractEntrustOrderEntity entrustOrder) { |
| | | log.info("全仓委托逻辑处理:{}", entrustOrder.getOrderNo()); |
| | | |
| | | int i = 1; |
| | | while (true) { |
| | | List<Object> types = redisUtils.lGet(AppContants.MEMBER_TYPE + entrustOrder.getMemberId(), 0, -1); |
| | | if (CollUtil.isEmpty(types)) { |
| | | break; |
| | | } |
| | | log.info("存在止盈/止损/爆仓/委托平仓,等待 -- {}", i); |
| | | try { |
| | | Thread.sleep(1000); |
| | | } catch (InterruptedException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | i++; |
| | | } |
| | | MemberWalletContractEntity wallet = memberWalletContractService.findWalletContractByMemberIdAndSymbol(entrustOrder.getMemberId(), CoinTypeConvert.convertContractTypeToCoin(entrustOrder.getSymbol())); |
| | | |
| | | PlatformTradeSettingEntity tradeSettingEntity = cacheSettingUtils.getTradeSetting(); |
| | |
| | | rewardRatio = coinsOrder.getOpeningPrice().subtract(nowPrice).multiply(coinsOrder.getSymbolSku()).multiply(new BigDecimal(coinsOrder.getSymbolCntSale())); |
| | | } |
| | | |
| | | contractOrderEntity.setRewardAmount(rewardRatio); |
| | | contractOrderEntity.setRewardAmount(wallet.getTotalBalance().subtract(contractOrderEntity.getOpeningFeeAmount()).negate()); |
| | | contractOrderService.save(contractOrderEntity); |
| | | |
| | | memberWalletContractService.increaseWalletContractBalanceById(wallet.getAvailableBalance().negate(), wallet.getTotalBalance().negate(), null, wallet.getId()); |