From 95da7870f87ec42dbd572aba040492c881fe0b9c Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Fri, 05 Jun 2020 15:35:21 +0800 Subject: [PATCH] Merge branch 'master' of https://gitee.com/chonggaoxiao/new_excoin.git --- src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java | 87 ++++++++++++++++++++++++++++++++++--------- 1 files changed, 68 insertions(+), 19 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 f6c8e47..d1853f2 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 @@ -3,6 +3,8 @@ import cn.hutool.core.collection.CollUtil; import com.alibaba.druid.sql.visitor.functions.If; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.xcong.excoin.common.LoginUserUtils; import com.xcong.excoin.common.enumerates.CoinTypeEnum; @@ -16,12 +18,9 @@ import com.xcong.excoin.modules.contract.entity.ContractHoldOrderEntity; import com.xcong.excoin.modules.contract.entity.ContractOrderEntity; import com.xcong.excoin.modules.contract.mapper.ContractHoldOrderEntityMapper; -import com.xcong.excoin.modules.contract.parameter.dto.ChangeBondDto; -import com.xcong.excoin.modules.contract.parameter.dto.ProfitOrLessDto; -import com.xcong.excoin.modules.contract.parameter.dto.SubmitOrderDto; -import com.xcong.excoin.modules.contract.parameter.dto.SymbolDto; -import com.xcong.excoin.modules.contract.parameter.vo.ContractMoneyInfoVo; -import com.xcong.excoin.modules.contract.parameter.vo.HoldOrderListVo; +import com.xcong.excoin.modules.contract.mapper.ContractOrderEntityMapper; +import com.xcong.excoin.modules.contract.parameter.dto.*; +import com.xcong.excoin.modules.contract.parameter.vo.*; import com.xcong.excoin.modules.contract.service.ContractHoldOrderService; import com.xcong.excoin.modules.member.dao.MemberLevelRateDao; import com.xcong.excoin.modules.member.dao.MemberWalletContractDao; @@ -159,14 +158,13 @@ contractOrderEntity.setOpeningTime(new Date()); contractHoldOrderDao.insert(holdOrderEntity); int i = contractOrderDao.insert(contractOrderEntity); - memberWalletContractDao.increaseWalletContractBalanceById(prePaymentAmount.negate(), null, null, walletContract.getId()); - - // 计算佣金 - ThreadPoolUtils.calReturnMoney(memberEntity.getId(), contractOrderEntity.getOpeningFeeAmount(), contractOrderEntity, AgentReturnEntity.ORDER_TYPE_OPEN); if (i > 0) { - return Result.ok("success"); + memberWalletContractDao.increaseWalletContractBalanceById(prePaymentAmount.negate(), openFeePrice.negate(), null, walletContract.getId()); + // 计算佣金 + ThreadPoolUtils.calReturnMoney(memberEntity.getId(), contractOrderEntity.getOpeningFeeAmount(), contractOrderEntity, AgentReturnEntity.ORDER_TYPE_OPEN); + return Result.ok("提交成功"); } - return Result.fail("fail"); + return Result.fail("提交失败"); } @Override @@ -189,6 +187,7 @@ MemberEntity memberEntity = LoginUserUtils.getAppLoginUser(); List<ContractHoldOrderEntity> list = contractHoldOrderDao.selectHoldOrderListByMemberIdAndSymbol(memberEntity.getId(), symbol); + MemberWalletContractEntity walletContractEntity = memberWalletContractDao.findWalletContractByMemberIdAndSymbol(memberEntity.getId(), CoinTypeEnum.USDT.name()); if (CollUtil.isNotEmpty(list)) { BigDecimal totalProfitOrLoss = BigDecimal.ZERO; List<HoldOrderListVo> resultList = new ArrayList<>(); @@ -228,12 +227,17 @@ .divide(new BigDecimal(holdOrderEntity.getLeverRatio()), 8, BigDecimal.ROUND_DOWN); // 可增加最大保证金 - BigDecimal canAddMaxBond = holdOrderEntity.getBondAmount().subtract(holdOrderEntity.getOpeningFeeAmount()).subtract(costPrice); - if (canAddMaxBond.compareTo(BigDecimal.ZERO) < 0) { - canAddMaxBond = BigDecimal.ZERO; +// BigDecimal canAddMaxBond = holdOrderEntity.getBondAmount().subtract(holdOrderEntity.getOpeningFeeAmount()).subtract(costPrice); +// if (canAddMaxBond.compareTo(BigDecimal.ZERO) < 0) { +// canAddMaxBond = BigDecimal.ZERO; +// } + BigDecimal canReduceMaxBond = holdOrderEntity.getBondAmount().subtract(holdOrderEntity.getPrePaymentAmount()); + if (canReduceMaxBond.compareTo(BigDecimal.ZERO) < 0) { + canReduceMaxBond = BigDecimal.ZERO; } - holdOrderListVo.setCanAddMaxBond(canAddMaxBond); + holdOrderListVo.setCanReduceMaxBond(canReduceMaxBond); + holdOrderListVo.setCanAddMaxBond(walletContractEntity.getAvailableBalance()); holdOrderListVo.setReturnRate(returnRate); holdOrderListVo.setProfitOrLoss(rewardRatio); resultList.add(holdOrderListVo); @@ -335,11 +339,11 @@ if (stopProfitPrice != null) { if (newPrice.compareTo(openPrice) > 0) { if (stopProfitPrice.compareTo(openPrice) > 0) { - return Result.fail("止损价必须低于开仓价"); + return Result.fail("止盈价必须低于开仓价"); } } else { if (stopProfitPrice.compareTo(newPrice) > 0) { - return Result.fail("止损价必须低于当前价"); + return Result.fail("止盈价必须低于当前价"); } } } @@ -384,7 +388,6 @@ producer.sendPriceOperate(JSONObject.toJSONString(model)); return Result.ok("设置成功"); } - return Result.fail("设置失败"); } @@ -509,4 +512,50 @@ contractMoneyInfoVo.setLeverRate(rateEntity.getLevelRateUp()); return Result.ok(contractMoneyInfoVo); } + + @Override + public Result changeLeverRate(ChangeLeverRateDto changeLeverRateDto) { + MemberEntity memberEntity = LoginUserUtils.getAppLoginUser(); + MemberLevelRateEntity levelRateEntity = memberLevelRateDao.selectLeverRateByMemberIdAndSymbol(memberEntity.getId(), changeLeverRateDto.getSymbol()); + levelRateEntity.setLevelRateUp(changeLeverRateDto.getLeverRate()); + levelRateEntity.setLevelRateDown(changeLeverRateDto.getLeverRate()); + int i = memberLevelRateDao.updateById(levelRateEntity); + if (i > 0) { + return Result.ok("调整成功"); + } + return Result.fail("调整失败"); + } + + @Override + public Result findHoldOrderDetailById(Long id) { + MemberEntity memberEntity = LoginUserUtils.getAppLoginUser(); + ContractHoldOrderEntity holdOrderEntity = contractHoldOrderDao.selectHoldOrderByMemberIdAndId(memberEntity.getId(), id); + if (holdOrderEntity == null) { + return Result.fail("订单不存在"); + } + + HoldOrderDetailVo holdOrderDetailVo = ContractHoldOrderEntityMapper.INSTANCE.holdOrderToOrderDetailVo(holdOrderEntity); + return Result.ok(holdOrderDetailVo); + } + + @Override + public Result findOrderList(OrderListDto orderListDto) { + MemberEntity memberEntity = LoginUserUtils.getAppLoginUser(); + Page<ContractOrderEntity> page = new Page<>(orderListDto.getPageNum(), orderListDto.getPageSize()); + IPage<ContractOrderEntity> list = contractOrderDao.selectContractOrderInPage(page, memberEntity.getId()); + Page<OrderListVo> result = ContractOrderEntityMapper.INSTANCE.pageEntityToPageVo(list); + return Result.ok(result); + } + + @Override + public Result findOrderDetailById(Long id) { + MemberEntity memberEntity = LoginUserUtils.getAppLoginUser(); + ContractOrderEntity contractOrderEntity = contractOrderDao.selectOrderDetailByIdAndMemberId(id, memberEntity.getId()); + if (contractOrderEntity == null) { + return Result.fail("订单不存在"); + } + + OrderDetailVo orderDetailVo = ContractOrderEntityMapper.INSTANCE.entityToDetailVo(contractOrderEntity); + return Result.ok(orderDetailVo); + } } -- Gitblit v1.9.1