Helius
2020-08-29 ff3b5b9f78334cdf2ab7b17913b80447424b86dd
modify
2 files modified
31 ■■■■■ changed files
src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java 2 ●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/utils/CalculateUtil.java 29 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java
@@ -184,7 +184,7 @@
            wholeHoldOrder.setSymbolCnt(wholeHoldOrder.getSymbolCnt() + submitOrderDto.getSymbolCnt());
            wholeHoldOrder.setSymbolCntSale(wholeHoldOrder.getSymbolCntSale() + submitOrderDto.getSymbolCnt());
            wholeHoldOrder.setPrePaymentAmount(prePaymentAmount.add(wholeHoldOrder.getPrePaymentAmount()));
            wholeHoldOrder.setOperateNo(wholeHoldOrder.getOperateNo() + 1);
            wholeHoldOrder.setOperateNo(wholeHoldOrder.getOperateNo());
            int i = contractHoldOrderDao.updateById(wholeHoldOrder);
            if (i > 0) {
                memberWalletContractDao.increaseWalletContractBalanceById(prePaymentAmount.negate(), openFeePrice.negate(), null, walletContract.getId());
src/main/java/com/xcong/excoin/utils/CalculateUtil.java
@@ -86,27 +86,24 @@
    /**
     * 全仓模式 -- 预估强平价
     * 面值*(多单张数*多单开仓价-空单张数*空单开仓价)-余额-已实现盈亏 / 面值*(多单张数-空单张数)-(维持保证金率+TAKER手续费)*面值*(开多张数+开空张数)
     *
     */
    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);
        Long memberId = memberEntity.getId();
        BigDecimal lotNumber = cacheSettingUtils.getSymbolSku(symbol);
        PlatformTradeSettingEntity tradeSettingEntity = cacheSettingUtils.getTradeSetting();
        MemberWalletContractEntity walletContract = walletContractDao.findWalletContractByMemberIdAndSymbol(memberId, CoinTypeConvert.convertContractTypeToCoin(symbol));
        List<ContractHoldOrderEntity> holdOrderEntities = holdOrderDao.selectHoldOrderListForWholeByMemberIdAndSymbol(memberId, symbol);
        if (CollUtil.isNotEmpty(holdOrderEntities)) {
            int maxCnt = 0;
            int subCnt = 0;
            int index = 0;
            BigDecimal openPrice = BigDecimal.ZERO;
            int type = 1;
            BigDecimal feeAmount = BigDecimal.ZERO;
            BigDecimal sku = BigDecimal.ZERO;
            Long id = 0L;
            int operateNo = 0;
            for (ContractHoldOrderEntity holdOrderEntity : holdOrderEntities) {
                if (holdOrderEntity.getSymbolCntSale() >= maxCnt) {
                    int temp = maxCnt;
@@ -114,18 +111,14 @@
                    subCnt = holdOrderEntity.getSymbolCntSale() - temp;
                    openPrice = holdOrderEntity.getOpeningPrice();
                    type = holdOrderEntity.getOpeningType();
                    index++;
                    log.info("--{}, {}, {}, {}, {}", maxCnt, subCnt, openPrice, type, index);
                    id = holdOrderEntity.getId();
                    operateNo = holdOrderEntity.getOperateNo() + 1;
                } else {
                    subCnt = maxCnt - holdOrderEntity.getSymbolCntSale();
                }
                if (index == 0) {
                    index ++;
                    maxCnt = holdOrderEntity.getSymbolCntSale();
                    subCnt = holdOrderEntity.getSymbolCntSale();
                    type = holdOrderEntity.getOpeningType();
                    openPrice = holdOrderEntity.getOpeningPrice();
                    log.info("---{}, {}, {}, {}, {}", maxCnt, subCnt, type, openPrice, index);
                }
                log.info("--{}, {}, {}, {}", maxCnt, subCnt, openPrice, type);
                feeAmount = feeAmount.add(holdOrderEntity.getOpeningFeeAmount());
                sku = holdOrderEntity.getSymbolSku();
            }
@@ -139,11 +132,13 @@
            for (ContractHoldOrderEntity updateHoldOrder : holdOrderEntities) {
                updateHoldOrder.setForceClosingPrice(forceSetPrice);
                updateHoldOrder.setIsCanClosing(ContractHoldOrderEntity.ORDER_CAN_CLOSING_Y);
                updateHoldOrder.setOperateNo(operateNo);
                holdOrderDao.updateById(updateHoldOrder);
            }
                if (forceSetPrice.compareTo(BigDecimal.ZERO) > 0) {
//                    sendOrderBombMsg(updateHoldOrder.getId(), updateHoldOrder.getOpeningType(), forceSetPrice, updateHoldOrder.getSymbol(), updateHoldOrder.getOperateNo());
                }
                sendOrderBombMsg(id, type, forceSetPrice, symbol, operateNo);
            }
        }
    }