xiaoyong931011
2021-03-26 9f6842c70812fa3e2ccf96ccb73b7aa3a2518f34
src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java
@@ -113,6 +113,14 @@
    public Result submitOrder(SubmitOrderDto submitOrderDto) {
        MemberEntity memberEntity = LoginUserUtils.getAppLoginUser();
        //查询是否可以点击平仓按钮
        Long memberIdLong = memberEntity.getId();
        MemberEntity selectById = memberDao.selectById(memberIdLong);
        Integer pcState = selectById.getPcState();
        if(MemberEntity.PCSTATE_N == pcState) {
           return Result.loading("loading_type");
        }
        // 判断当前对应的持仓/委托
        if (memberEntity.getContractPositionType() == ContractEntrustOrderEntity.POSITION_TYPE_ADD) {
            List<ContractHoldOrderEntity> holdList = contractHoldOrderDao.selectMemberHoldOrderByPositionType(ContractEntrustOrderEntity.POSITION_TYPE_ALL, memberEntity.getId());
@@ -541,7 +549,7 @@
            }
            result.put("hold", resultList);
            result.put("totalProfitOrLoss", totalProfitOrLoss.setScale(4, BigDecimal.ROUND_DOWN).toPlainString());
            result.put("totalProfitOrLoss", totalProfitOrLoss.setScale(2, BigDecimal.ROUND_DOWN).toPlainString());
            return Result.ok(result);
        }
        return Result.ok("success");
@@ -555,7 +563,7 @@
        Long memberIdLong = memberEntity.getId();
        MemberEntity selectById = memberDao.selectById(memberIdLong);
        Integer pcState = selectById.getPcState();
        if(memberEntity.PCSTATE_N == pcState) {
        if(MemberEntity.PCSTATE_N == pcState) {
           return Result.loading("loading_type");
        }
        
@@ -583,6 +591,13 @@
    @Override
    public Result cancelHoldOrder(WholeCloseOrderDto wholeCloseOrderDto) {
        MemberEntity memberEntity = LoginUserUtils.getAppLoginUser();
        //查询是否可以点击平仓按钮
        Long memberIdLong = memberEntity.getId();
        MemberEntity selectById = memberDao.selectById(memberIdLong);
        Integer pcState = selectById.getPcState();
        if(MemberEntity.PCSTATE_N == pcState) {
           return Result.loading("loading_type");
        }
        ContractHoldOrderEntity holdOrderEntity = contractHoldOrderDao.selectHoldOrderByMemberIdAndId(memberEntity.getId(), wholeCloseOrderDto.getId());
        if (holdOrderEntity == null) {
            // 订单不存在
@@ -629,7 +644,7 @@
        Long memberIdLong = memberEntity.getId();
        MemberEntity selectById = memberDao.selectById(memberIdLong);
        Integer pcState = selectById.getPcState();
        if(memberEntity.PCSTATE_N == pcState) {
        if(MemberEntity.PCSTATE_N == pcState) {
           return Result.loading("loading_type");
        }
        
@@ -654,7 +669,7 @@
        Long memberIdLong = memberEntity.getId();
        MemberEntity selectById = memberDao.selectById(memberIdLong);
        Integer pcState = selectById.getPcState();
        if(memberEntity.PCSTATE_N == pcState) {
        if(MemberEntity.PCSTATE_N == pcState) {
           return Result.loading("loading_type");
        }
        
@@ -763,6 +778,15 @@
    @Override
    public Result changeBond(ChangeBondDto changeBondDto) {
        MemberEntity memberEntity = LoginUserUtils.getAppLoginUser();
        //查询是否可以点击平仓按钮
        Long memberIdLong = memberEntity.getId();
        MemberEntity selectById = memberDao.selectById(memberIdLong);
        Integer pcState = selectById.getPcState();
        if(MemberEntity.PCSTATE_N == pcState) {
           return Result.loading("loading_type");
        }
        ContractHoldOrderEntity holdOrderEntity = contractHoldOrderDao.selectHoldOrderByMemberIdAndId(memberEntity.getId(), changeBondDto.getId());
        if (holdOrderEntity == null) {
            return Result.fail("订单不存在");
@@ -835,7 +859,7 @@
        BigDecimal newPriceSymbol = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey(symbol)));
        List<ContractEntrustOrderEntity> entrustOrderEntities = contractEntrustOrderDao.selectEntrustOrderListByMemberId(memberEntity.getId());
        List<ContractHoldOrderEntity> holdOrderEntities = contractHoldOrderDao.selectHoldOrderListByMemberId(memberEntity.getId());
        List<ContractHoldOrderEntity> holdOrderEntities = contractHoldOrderDao.selectHoldOrderListByMemberIdAndSymbolTest(memberEntity.getId(), ContractOrderEntity.CONTRACTTYPE_NORMAL);
        MemberWalletContractEntity walletContractEntity = memberWalletContractDao.findWalletContractByMemberIdAndSymbol(memberEntity.getId(), CoinTypeEnum.USDT.name());
//        if (memberEntity.getContractPositionType().equals(ContractEntrustOrderEntity.POSITION_TYPE_ADD)) {
//            // 当前合约委托单
@@ -902,10 +926,12 @@
        }
        
        BigDecimal available = walletContractEntity.getAvailableBalance();
        if (totalProfitOrLess.compareTo(BigDecimal.ZERO) <= 0) {
            available = available.add(totalProfitOrLess);
            if (available.compareTo(BigDecimal.ZERO) <= 0) {
                available = BigDecimal.ZERO;
        if (ContractEntrustOrderEntity.POSITION_TYPE_ALL == memberEntity.getContractPositionType()) {
            if (totalProfitOrLess.compareTo(BigDecimal.ZERO) <= 0) {
                available = available.add(totalProfitOrLess);
                if (available.compareTo(BigDecimal.ZERO) <= 0) {
                    available = BigDecimal.ZERO;
                }
            }
        }
        
@@ -925,6 +951,7 @@
        contractMoneyInfoVo.setLeverRate(rateEntity.getLevelRateUp());
        contractMoneyInfoVo.setMoreBondAmount(moreBondAmount);
        contractMoneyInfoVo.setLessBondAmount(lessBondAmount);
        contractMoneyInfoVo.setProfitOrLess(totalProfitOrLess);
        return Result.ok(contractMoneyInfoVo);
    }
@@ -1113,7 +1140,7 @@
                    holdAmount = BigDecimal.ZERO;
                }
                BigDecimal thisTimeHold = holdOrderEntity.getBondAmount().multiply(tradeSettingEntity.getDoingRatio());
                BigDecimal thisTimeHold = holdOrderEntity.getBondAmount().subtract(holdOrderEntity.getOpeningFeeAmount()).multiply(tradeSettingEntity.getDoingRatio());
                log.info("订单编号:{}, 持仓费:{}", holdOrderEntity.getOrderNo(), thisTimeHold);
                MemberEntity memberEntity = memberDao.selectById(holdOrderEntity.getMemberId());
@@ -1127,6 +1154,7 @@
                holdOrderEntity.setOperateNo(holdOrderEntity.getOperateNo() + 1);
                contractHoldOrderDao.updateById(holdOrderEntity);
                memberWalletContractDao.increaseWalletContractBalanceById(null, thisTimeHold.negate(), null, holdOrderEntity.getMemberId());
                if (ContractEntrustOrderEntity.POSITION_TYPE_ADD == holdOrderEntity.getPositionType()) {
                    // 发送爆仓消息
                    sendOrderBombMsg(holdOrderEntity.getId(), holdOrderEntity.getOpeningType(), newForcePrice, holdOrderEntity.getSymbol(), holdOrderEntity.getOperateNo(), holdOrderEntity.getMemberId());