| | |
| | | if (i > 0) { |
| | | memberWalletContractDao.increaseWalletContractBalanceById(prePaymentAmount.negate(), openFeePrice.negate(), null, walletContract.getId()); |
| | | |
| | | // 全仓爆仓 |
| | | ThreadPoolUtils.sendWholePrice(memberEntity.getId()); |
| | | |
| | | // 发送预估强平价 |
| | | ThreadPoolUtils.sendWholeForceClosingPrice(submitOrderDto.getSymbol(), memberEntity); |
| | | // 计算佣金 |
| | |
| | | } else { |
| | | LogRecordUtils.insertMemberAccountFlow(memberEntity.getId(), prePaymentAmount, walletContract.getAvailableBalance().subtract(prePaymentAmount), submitOrderDto.getSymbol(), "买跌持仓", "买跌:" + submitOrderDto.getSymbol()); |
| | | } |
| | | |
| | | // 全仓爆仓 |
| | | ThreadPoolUtils.sendWholePrice(memberEntity.getId()); |
| | | |
| | | // 提交成功 |
| | | return Result.ok(MessageSourceUtils.getString("member_service_0024")); |
| | |
| | | holdOrderEntity.setOpeningPrice(openingPrice); |
| | | holdOrderEntity.setOpeningType(submitOrderDto.getOrderType()); |
| | | holdOrderEntity.setMarkPrice(newPrice); |
| | | holdOrderEntity.setIsCanClosing(ContractHoldOrderEntity.ORDER_CAN_CLOSING_N); |
| | | holdOrderEntity.setIsCanClosing(ContractHoldOrderEntity.ORDER_CAN_CLOSING_Y); |
| | | holdOrderEntity.setPrePaymentAmount(prePaymentAmount); |
| | | holdOrderEntity.setBondAmount(bondAmount.add(openFeePrice)); |
| | | holdOrderEntity.setOperateNo(1); |
| | |
| | | } else { |
| | | LogRecordUtils.insertMemberAccountFlow(memberEntity.getId(), prePaymentAmount, walletContract.getAvailableBalance().subtract(prePaymentAmount), submitOrderDto.getSymbol(), "买跌持仓", "买跌:" + submitOrderDto.getSymbol()); |
| | | } |
| | | |
| | | // 全仓爆仓 |
| | | ThreadPoolUtils.sendWholePrice(memberEntity.getId()); |
| | | |
| | | // 提交成功 |
| | | return Result.ok(MessageSourceUtils.getString("member_service_0024")); |
| | |
| | | @Override |
| | | public Result findHoldOrderList(String symbol, int type) { |
| | | MemberEntity memberEntity = LoginUserUtils.getAppLoginUser(); |
| | | List<ContractHoldOrderEntity> list = null; |
| | | |
| | | List<ContractHoldOrderEntity> list = contractHoldOrderDao.selectHoldOrderListByMemberIdAndSymbol(memberEntity.getId(), symbol, type); |
| | | if (ContractEntrustOrderEntity.POSITION_TYPE_ALL == memberEntity.getContractPositionType()) { |
| | | list = contractHoldOrderDao.selectHoldOrderListByMemberIdAndSymbolTest(memberEntity.getId(), type); |
| | | } else { |
| | | list = contractHoldOrderDao.selectHoldOrderListByMemberIdAndSymbol(memberEntity.getId(), symbol, type); |
| | | } |
| | | |
| | | MemberWalletContractEntity walletContractEntity = memberWalletContractDao.findWalletContractByMemberIdAndSymbol(memberEntity.getId(), CoinTypeEnum.USDT.name()); |
| | | if (CollUtil.isNotEmpty(list)) { |
| | | BigDecimal totalProfitOrLoss = BigDecimal.ZERO; |
| | | BigDecimal totalHoldBond = BigDecimal.ZERO; |
| | | List<HoldOrderListVo> resultList = new ArrayList<>(); |
| | | for (ContractHoldOrderEntity holdOrderEntity : list) { |
| | | HoldOrderListVo holdOrderListVo = ContractHoldOrderEntityMapper.INSTANCE.holdOrderToDto(holdOrderEntity); |
| | |
| | | } |
| | | resultList.add(holdOrderListVo); |
| | | totalProfitOrLoss = totalProfitOrLoss.add(rewardRatio); |
| | | totalHoldBond = totalHoldBond.add(holdOrderEntity.getHoldBond() == null ? BigDecimal.ZERO : holdOrderEntity.getHoldBond()); |
| | | } |
| | | |
| | | Map<String, Object> result = new HashMap<>(); |
| | | if (ContractEntrustOrderEntity.POSITION_TYPE_ALL == memberEntity.getContractPositionType()) { |
| | | List<ContractEntrustOrderEntity> entrustOrder = contractEntrustOrderDao.selectEntrustOrderListByMemberId(memberEntity.getId()); |
| | | BigDecimal totalEntrustAmount = BigDecimal.ZERO; |
| | | if (CollUtil.isNotEmpty(entrustOrder)) { |
| | | for (ContractEntrustOrderEntity contractEntrustOrderEntity : entrustOrder) { |
| | | totalEntrustAmount = totalEntrustAmount.add(contractEntrustOrderEntity.getEntrustAmount()); |
| | | } |
| | | } |
| | | BigDecimal riskRatio = totalHoldBond.divide(walletContractEntity.getTotalBalance().add(totalProfitOrLoss).subtract(totalEntrustAmount), 4, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(100)); |
| | | result.put("riskRatio", riskRatio); |
| | | } |
| | | |
| | | result.put("hold", resultList); |
| | | result.put("totalProfitOrLoss", totalProfitOrLoss.setScale(4, BigDecimal.ROUND_DOWN).toPlainString()); |
| | | return Result.ok(result); |
| | |
| | | equity = BigDecimal.ZERO; |
| | | } |
| | | |
| | | BigDecimal available = walletContractEntity.getAvailableBalance(); |
| | | if (totalProfitOrLess.compareTo(BigDecimal.ZERO) <= 0) { |
| | | available = available.add(totalProfitOrLess); |
| | | if (available.compareTo(BigDecimal.ZERO) <= 0) { |
| | | available = BigDecimal.ZERO; |
| | | } |
| | | } |
| | | |
| | | // 获取当日k线的开盘价 |
| | | Candlestick symbolObject = (Candlestick) redisUtils.get(symbol); |
| | | BigDecimal openPrice = symbolObject.getOpen(); |
| | |
| | | contractMoneyInfoVo.setBeUsedBondAmount(beUsedBondAmount); |
| | | contractMoneyInfoVo.setFrozenBondAmount(frozenBondAmount); |
| | | contractMoneyInfoVo.setEquity(equity); |
| | | contractMoneyInfoVo.setAvailableBalance(walletContractEntity.getAvailableBalance()); |
| | | contractMoneyInfoVo.setAvailableBalance(available); |
| | | contractMoneyInfoVo.setFeeRatio(tradeSetting.getFeeRatio()); |
| | | contractMoneyInfoVo.setLeverAgeRatio(tradeSetting.getLeverageRatio()); |
| | | contractMoneyInfoVo.setNewPrice(newPriceSymbol); |