From eee4a9fdb1e87d25b39d9c08a7b43b09642df5ad Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Wed, 19 Aug 2020 15:19:20 +0800 Subject: [PATCH] finish closing order --- src/main/java/com/xcong/excoin/utils/CalculateUtil.java | 26 ++++++++++---------------- 1 files changed, 10 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/xcong/excoin/utils/CalculateUtil.java b/src/main/java/com/xcong/excoin/utils/CalculateUtil.java index 258355a..841beee 100644 --- a/src/main/java/com/xcong/excoin/utils/CalculateUtil.java +++ b/src/main/java/com/xcong/excoin/utils/CalculateUtil.java @@ -3,6 +3,7 @@ import cn.hutool.core.collection.CollUtil; import com.alibaba.fastjson.JSONObject; +import com.xcong.excoin.common.enumerates.CoinTypeEnum; import com.xcong.excoin.common.enumerates.RabbitPriceTypeEnum; import com.xcong.excoin.common.exception.GlobalException; import com.xcong.excoin.common.response.Result; @@ -88,7 +89,7 @@ * * @return */ - public static BigDecimal getForceSetPriceForWhole(@NotNull String symbol, @NotNull MemberEntity memberEntity) { + public static void getForceSetPriceForWhole(@NotNull String symbol, @NotNull MemberEntity memberEntity) { ContractHoldOrderDao holdOrderDao = SpringContextHolder.getBean(ContractHoldOrderDao.class); MemberWalletContractDao walletContractDao = SpringContextHolder.getBean(MemberWalletContractDao.class); CacheSettingUtils cacheSettingUtils = SpringContextHolder.getBean(CacheSettingUtils.class); @@ -96,8 +97,8 @@ Long memberId = memberEntity.getId(); BigDecimal lotNumber = cacheSettingUtils.getSymbolSku(symbol); PlatformTradeSettingEntity tradeSettingEntity = cacheSettingUtils.getTradeSetting(); - MemberWalletContractEntity walletContract = walletContractDao.findWalletContractByMemberIdAndSymbol(memberId, symbol); - List<ContractHoldOrderEntity> holdOrderEntities = holdOrderDao.selectHoldOrderListByMemberIdAndSymbol(memberId, symbol, 2); + MemberWalletContractEntity walletContract = walletContractDao.findWalletContractByMemberIdAndSymbol(memberId, CoinTypeEnum.USDT.name()); + List<ContractHoldOrderEntity> holdOrderEntities = holdOrderDao.selectHoldOrderListForWholeByMemberIdAndSymbol(memberId, symbol); if (CollUtil.isNotEmpty(holdOrderEntities)) { // 多单开仓价 BigDecimal moreOpenPrice = BigDecimal.ZERO; @@ -109,7 +110,6 @@ int lessCnt = 0; // 已实现盈亏 BigDecimal rewardAmount = BigDecimal.ZERO; - List<ContractHoldOrderEntity> updateHoldOrders = new ArrayList<>(); for (ContractHoldOrderEntity holdOrderEntity : holdOrderEntities) { if (holdOrderEntity.getOpeningType() == ContractHoldOrderEntity.OPENING_TYPE_MORE) { moreOpenPrice = holdOrderEntity.getOpeningPrice(); @@ -118,14 +118,8 @@ lessOpenPrice = holdOrderEntity.getOpeningPrice(); lessCnt = holdOrderEntity.getSymbolCntSale(); } - ContractHoldOrderEntity updateHoldOrder = new ContractHoldOrderEntity(); - updateHoldOrder.setOperateNo(holdOrderEntity.getOperateNo() + 1); - updateHoldOrder.setId(holdOrderEntity.getId()); - updateHoldOrder.setOpeningType(holdOrderEntity.getOpeningType()); - updateHoldOrder.setSymbol(holdOrderEntity.getSymbol()); - updateHoldOrders.add(updateHoldOrder); - rewardAmount = rewardAmount.add(holdOrderEntity.getRewardAmount()); + rewardAmount = rewardAmount.add(holdOrderEntity.getRewardAmount() == null ? BigDecimal.ZERO : holdOrderEntity.getRewardAmount()); log.info("rewardAmount : {}", rewardAmount); } @@ -146,18 +140,18 @@ BigDecimal forceSetPrice = divisor.divide(dividendOne.subtract(dividendTwo), 8, BigDecimal.ROUND_DOWN); log.info("forceSetPrice : {}", forceSetPrice); - for (ContractHoldOrderEntity updateHoldOrder : updateHoldOrders) { + for (ContractHoldOrderEntity updateHoldOrder : holdOrderEntities) { updateHoldOrder.setForceClosingPrice(forceSetPrice); + updateHoldOrder.setIsCanClosing(ContractHoldOrderEntity.ORDER_CAN_CLOSING_Y); holdOrderDao.updateById(updateHoldOrder); - sendOrderBombMsg(updateHoldOrder.getId(), updateHoldOrder.getOpeningType(), forceSetPrice, updateHoldOrder.getSymbol(), updateHoldOrder.getOperateNo()); + if (forceSetPrice.compareTo(BigDecimal.ZERO) >= 0) { + sendOrderBombMsg(updateHoldOrder.getId(), updateHoldOrder.getOpeningType(), forceSetPrice, updateHoldOrder.getSymbol(), updateHoldOrder.getOperateNo()); + } } - } else { throw new GlobalException("强平价异常"); } - - return null; } private static void sendOrderBombMsg(Long id, int type, BigDecimal forceClosingPrice, String symbol, int operateNo) { -- Gitblit v1.9.1