src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java
@@ -250,6 +250,9 @@ if (i > 0) { memberWalletContractDao.increaseWalletContractBalanceById(prePaymentAmount.negate(), openFeePrice.negate(), null, walletContract.getId()); // 全仓爆仓 ThreadPoolUtils.sendWholePrice(memberEntity.getId()); // 发送预估强平价 ThreadPoolUtils.sendWholeForceClosingPrice(submitOrderDto.getSymbol(), memberEntity); // 计算佣金 src/main/java/com/xcong/excoin/rabbit/pricequeue/OrderOperatePriceService.java
@@ -151,6 +151,7 @@ * @param memberId */ public static void wholePriceDataOperation(Long memberId) { Map<String, WholePriceDataModel> dataModelMap = WholeDataQueue.MAP; RedisUtils redisUtils = SpringContextHolder.getBean(RedisUtils.class); ContractHoldOrderDao contractHoldOrderDao = SpringContextHolder.getBean(ContractHoldOrderDao.class); @@ -160,6 +161,11 @@ List<ContractHoldOrderEntity> holdOrders = contractHoldOrderDao.selectHoldOrderListByMemberId(memberId); if (CollUtil.isEmpty(holdOrders)) { if (dataModelMap.get(memberId.toString()) != null) { dataModelMap.remove(memberId.toString()); redisUtils.set(AppContants.WHOLE_BOMB_MAP, JSONObject.toJSONString(dataModelMap)); } return; } @@ -187,10 +193,8 @@ wholePriceData.setBalance(wallet.getTotalBalance().subtract(totalAmount)); wholePriceData.setMemberId(memberId); Map<String, WholePriceDataModel> dataModelMap = WholeDataQueue.MAP; dataModelMap.put(wholePriceData.getMemberId().toString(), wholePriceData); redisUtils.set(AppContants.WHOLE_BOMB_MAP, JSONObject.toJSONString(dataModelMap)); } } src/test/java/com/xcong/excoin/WholeTest.java
@@ -177,10 +177,16 @@ @Test public void wholeForceTest() { // 3153.33181635 // System.out.println(new BigDecimal("9921.69458495").subtract(new BigDecimal("6768.36276860"))); // 8301.38608660 // System.out.println(new BigDecimal("9925.29996175").subtract(new BigDecimal("1623.91387515"))); // 33684.14725218 BigDecimal aa = new BigDecimal("1623.91387515").subtract(new BigDecimal("0.1").multiply(new BigDecimal(50)).multiply(new BigDecimal("32478.27750300"))); BigDecimal bb = new BigDecimal(50).multiply(new BigDecimal("0.1")); BigDecimal divide = aa.divide(bb, 8, BigDecimal.ROUND_DOWN); System.out.println(divide); // -(账户权益-委托保证金-全仓维持保证金-全仓未实现盈利-数量*面值*开仓价格)/(数量*面值) // 30818.00028568 // -32153.49472797 } }