From 49064737e243beff4fa6b26e76e05d14471d3f43 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Mon, 10 Aug 2020 15:05:55 +0800
Subject: [PATCH] modify

---
 src/main/java/com/xcong/excoin/modules/documentary/service/impl/FollowOrderOperationServiceImpl.java |   18 ++++++++++++++----
 1 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/modules/documentary/service/impl/FollowOrderOperationServiceImpl.java b/src/main/java/com/xcong/excoin/modules/documentary/service/impl/FollowOrderOperationServiceImpl.java
index 0173007..61476c1 100644
--- a/src/main/java/com/xcong/excoin/modules/documentary/service/impl/FollowOrderOperationServiceImpl.java
+++ b/src/main/java/com/xcong/excoin/modules/documentary/service/impl/FollowOrderOperationServiceImpl.java
@@ -25,9 +25,11 @@
 import com.xcong.excoin.modules.documentary.entity.FollowTraderInfoEntity;
 import com.xcong.excoin.modules.documentary.service.FollowOrderOperationService;
 import com.xcong.excoin.modules.member.dao.MemberDao;
+import com.xcong.excoin.modules.member.dao.MemberLevelRateDao;
 import com.xcong.excoin.modules.member.dao.MemberWalletContractDao;
 import com.xcong.excoin.modules.member.entity.AgentReturnEntity;
 import com.xcong.excoin.modules.member.entity.MemberEntity;
+import com.xcong.excoin.modules.member.entity.MemberLevelRateEntity;
 import com.xcong.excoin.modules.member.entity.MemberWalletContractEntity;
 import com.xcong.excoin.modules.platform.entity.PlatformTradeSettingEntity;
 import com.xcong.excoin.rabbit.pricequeue.OrderModel;
@@ -73,9 +75,10 @@
     private OrderProducer producer;
     @Resource
     private FollowTraderInfoDao followTraderInfoDao;
-
     @Resource
     private RabbitOrderService rabbitOrderService;
+    @Resource
+    private MemberLevelRateDao memberLevelRateDao;
 
 
     @Override
@@ -97,6 +100,12 @@
         Long tradeMemberId = holdOrderEntity.getMemberId();
         if (CollUtil.isNotEmpty(followerSettings)) {
             for (FollowFollowerSettingEntity followerSetting : followerSettings) {
+
+                if (!followerSetting.getSymbols().contains(holdOrderEntity.getSymbol().replace("/USDT", ""))) {
+                    log.info("不在跟单币种内,不跟单:{},{}", followerSetting.getSymbols(), holdOrderEntity.getSymbol());
+                    continue;
+                }
+
                 // 当前持仓张数
                 Integer holdingCnt = followFollowerOrderRelationDao.selectFollowerHoldingSymbolCnt(tradeMemberId, followerSetting.getMemberId());
 
@@ -125,6 +134,7 @@
                     log.info("钱包地址不存在:{}", followerSetting.getMemberId());
                     continue;
                 }
+                MemberLevelRateEntity levelRateEntity = memberLevelRateDao.selectLeverRateByMemberIdAndSymbol(followerSetting.getMemberId(), holdOrderEntity.getSymbol());
 
                 // 开仓手续费 建仓价*规格*手数*手续费率
                 BigDecimal openFeePrice = openPrice.multiply(lotNumber)
@@ -134,20 +144,20 @@
 
                 // 保证金
                 BigDecimal bondAmount = openPrice.multiply(lotNumber).multiply(new BigDecimal(symbolCnt))
-                        .multiply(BigDecimal.ONE.divide(new BigDecimal(holdOrderEntity.getLeverRatio())))
+                        .multiply(BigDecimal.ONE.divide(new BigDecimal(levelRateEntity.getLevelRateUp())))
                         .setScale(8, BigDecimal.ROUND_DOWN);
 
                 // 预付款
                 BigDecimal prePaymentAmount = bondAmount.add(openFeePrice).add(openFeePrice);
                 if (prePaymentAmount.compareTo(walletContract.getAvailableBalance()) > -1) {
                     log.info("可用金额不足");
+                    LogRecordUtils.insertFollowerNotice(followerSetting.getMemberId(), NoticeConstant.MONEY_NOT_ENOUGH_TITLE, StrUtil.format(NoticeConstant.MONEY_NOT_ENOUGH_CONTENT, followTraderInfoEntity.getNickname()));
                     continue;
                 }
 
                 MemberEntity memberEntity = memberDao.selectById(followerSetting.getMemberId());
                 // 强平价
                 BigDecimal forceClosingPrice = CalculateUtil.getForceSetPrice(bondAmount, openPrice, symbolCnt, lotNumber, holdOrderEntity.getOpeningType(), memberEntity);
-
                 ContractHoldOrderEntity followHoldOrder = new ContractHoldOrderEntity();
                 followHoldOrder.setMemberId(memberEntity.getId());
                 followHoldOrder.setOrderNo(commonService.generateOrderNo(memberEntity.getId()));
@@ -156,7 +166,7 @@
                 followHoldOrder.setSymbol(holdOrderEntity.getSymbol());
                 followHoldOrder.setSymbolCnt(symbolCnt);
                 followHoldOrder.setSymbolSku(lotNumber);
-                followHoldOrder.setLeverRatio(holdOrderEntity.getLeverRatio());
+                followHoldOrder.setLeverRatio(levelRateEntity.getLevelRateUp());
                 followHoldOrder.setForceClosingPrice(forceClosingPrice);
                 followHoldOrder.setOpeningFeeAmount(openFeePrice);
                 followHoldOrder.setOpeningPrice(openPrice);

--
Gitblit v1.9.1