From 85bcdeb42052f981d3a360a15e436f733018e32f Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Fri, 26 Mar 2021 10:07:19 +0800 Subject: [PATCH] modify --- src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java | 89 ++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 81 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java b/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java index c320ae7..f13702b 100644 --- a/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java +++ b/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java @@ -1,6 +1,8 @@ package com.xcong.excoin.modules.contract.service.impl; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; + import com.alibaba.druid.sql.visitor.functions.If; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -110,6 +112,14 @@ @Override 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) { @@ -539,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"); @@ -548,6 +558,15 @@ @Override public Result cancelHoldOrder(Long id) { 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(), id); if (holdOrderEntity == null) { // 订单不存在 @@ -572,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) { // 订单不存在 @@ -614,6 +640,14 @@ @Override public Result cancelHoldOrderBatch(SymbolDto symbolDto) { 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"); + } + List<ContractHoldOrderEntity> holdOrderEntities = contractHoldOrderDao.selectHoldOrderListByMemberIdAndSymbol(memberEntity.getId(), symbolDto.getSymbol(), 1); if (CollUtil.isEmpty(holdOrderEntities)) { return Result.fail("订单不存在"); @@ -631,6 +665,14 @@ @Override public Result setTargetProfitOrLess(ProfitOrLessDto profitOrLessDto) { 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(), profitOrLessDto.getId()); if (holdOrderEntity == null) { return Result.fail("订单不存在"); @@ -736,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("订单不存在"); @@ -875,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; + } } } @@ -1028,8 +1081,27 @@ List<ContractHoldOrderEntity> list = contractHoldOrderDao.selectHoldOrderListByMemberId(member.getId()); List<ContractEntrustOrderEntity> entrustList = contractEntrustOrderDao.selectEntrustOrderListByMemberId(member.getId()); - if (CollUtil.isNotEmpty(list) || CollUtil.isNotEmpty(entrustList)) { - return Result.fail("存在持仓/委托, 无法更改"); +// if (CollUtil.isNotEmpty(list) || CollUtil.isNotEmpty(entrustList)) { +// return Result.fail("存在持仓/委托, 无法更改"); +// } + + if(CollUtil.isNotEmpty(list)) { + for(ContractHoldOrderEntity contractHoldOrderEntity : list) { + String symbol = contractHoldOrderEntity.getSymbol(); + if(StrUtil.isEmpty(symbol)) { + return Result.fail("存在持仓/委托, 无法更改"); + } + return Result.fail("币种"+symbol+"存在持仓/委托, 无法更改"); + } + } + if(CollUtil.isNotEmpty(entrustList)) { + for(ContractEntrustOrderEntity contractEntrustOrderEntity : entrustList) { + String symbol = contractEntrustOrderEntity.getSymbol(); + if(StrUtil.isEmpty(symbol)) { + return Result.fail("存在持仓/委托, 无法更改"); + } + return Result.fail("币种"+symbol+"存在持仓/委托, 无法更改"); + } } /** @@ -1067,7 +1139,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()); @@ -1081,6 +1153,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()); -- Gitblit v1.9.1