|  |  | 
 |  |  |                     canReduceMaxBond = BigDecimal.ZERO; | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |                 if (rewardRatio.compareTo(BigDecimal.ZERO) < 0) { | 
 |  |  |                     canReduceMaxBond = canReduceMaxBond.add(rewardRatio); | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |                 holdOrderListVo.setCanReduceMaxBond(canReduceMaxBond); | 
 |  |  |                 holdOrderListVo.setCanAddMaxBond(walletContractEntity.getAvailableBalance()); | 
 |  |  |                 holdOrderListVo.setReturnRate(returnRate); | 
 |  |  | 
 |  |  |         } | 
 |  |  |         return Result.fail(MessageSourceUtils.getString("member_service_0041")); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Transactional(rollbackFor = Exception.class) | 
 |  |  |     @Override | 
 |  |  |     public void calHoldFeeAmountForBondAmount() { | 
 |  |  |         List<ContractHoldOrderEntity> list = contractHoldOrderDao.selectAllHoldOrder(); | 
 |  |  |         PlatformTradeSettingEntity tradeSettingEntity = cacheSettingUtils.getTradeSetting(); | 
 |  |  |  | 
 |  |  |         if (CollUtil.isNotEmpty(list)) { | 
 |  |  |             for (ContractHoldOrderEntity holdOrderEntity : list) { | 
 |  |  |                 BigDecimal holdAmount = holdOrderEntity.getHoldAmount(); | 
 |  |  |                 if (holdAmount == null) { | 
 |  |  |                     holdAmount = BigDecimal.ZERO; | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |                 BigDecimal thisTimeHold = holdOrderEntity.getBondAmount().multiply(tradeSettingEntity.getDoingRatio()); | 
 |  |  |                 log.info("订单编号:{}, 持仓费:{}", holdOrderEntity.getOrderNo(), thisTimeHold); | 
 |  |  |  | 
 |  |  |                 MemberEntity memberEntity = memberDao.selectById(holdOrderEntity.getMemberId()); | 
 |  |  |                 BigDecimal subBond = holdOrderEntity.getBondAmount().subtract(thisTimeHold); | 
 |  |  |  | 
 |  |  |                 BigDecimal newForcePrice = CalculateUtil.getForceSetPrice(subBond.subtract(holdOrderEntity.getOpeningFeeAmount()), holdOrderEntity.getOpeningPrice(), holdOrderEntity.getSymbolCnt(), holdOrderEntity.getSymbolSku(), holdOrderEntity.getOpeningType(), memberEntity); | 
 |  |  |                 holdAmount = holdAmount.add(thisTimeHold); | 
 |  |  |                 holdOrderEntity.setBondAmount(subBond); | 
 |  |  |                 holdOrderEntity.setHoldAmount(holdAmount); | 
 |  |  |                 holdOrderEntity.setForceClosingPrice(newForcePrice); | 
 |  |  |                 holdOrderEntity.setOperateNo(holdOrderEntity.getOperateNo() + 1); | 
 |  |  |                 contractHoldOrderDao.updateById(holdOrderEntity); | 
 |  |  |  | 
 |  |  |                 // 发送爆仓消息 | 
 |  |  |                 sendOrderBombMsg(holdOrderEntity.getId(), holdOrderEntity.getOpeningType(), newForcePrice, holdOrderEntity.getSymbol(), holdOrderEntity.getOperateNo(), holdOrderEntity.getMemberId()); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  | } |