From 13b233dc38eb68ca5318f0f7a555245b129390cf Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Fri, 26 Mar 2021 18:11:33 +0800
Subject: [PATCH] modify

---
 src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java |   75 +++++++++++++++++++++++++++++++++----
 1 files changed, 67 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 1b99171..7a9967d 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
@@ -39,11 +39,13 @@
 import com.xcong.excoin.modules.member.entity.*;
 import com.xcong.excoin.modules.platform.dao.TradeSettingDao;
 import com.xcong.excoin.modules.platform.entity.PlatformTradeSettingEntity;
+import com.xcong.excoin.rabbit.producer.FollowProducer;
 import com.xcong.excoin.rabbit.producer.OrderProducer;
 import com.xcong.excoin.utils.*;
 import com.xcong.excoin.rabbit.pricequeue.OrderModel;
 import jnr.a64asm.Mem;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import sun.rmi.runtime.Log;
@@ -103,10 +105,21 @@
     @Resource
     private FollowFollowerOrderRelationDao followFollowerOrderRelationDao;
 
+    @Autowired
+    private FollowProducer followProducer;
+
     @Transactional(rollbackFor = Exception.class)
     @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) {
@@ -382,7 +395,8 @@
                 relationEntity.setTradeOrderNo(holdOrderEntity.getOrderNo());
                 followFollowerOrderRelationDao.insert(relationEntity);
 
-                ThreadPoolUtils.sendFollowOrderTask(holdOrderEntity.getId());
+                followProducer.sendAddFollowOrder(holdOrderEntity.getId());
+//                ThreadPoolUtils.sendFollowOrderTask(holdOrderEntity.getId());
             }
             // 提交成功
             return Result.ok(MessageSourceUtils.getString("member_service_0024"));
@@ -535,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");
@@ -544,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) {
             // 订单不存在
@@ -568,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) {
             // 订单不存在
@@ -610,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("订单不存在");
@@ -627,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("订单不存在");
@@ -732,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("订单不存在");
@@ -804,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)) {
 //            // 当前合约委托单
@@ -871,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;
+                }
             }
         }
         
@@ -894,6 +951,7 @@
         contractMoneyInfoVo.setLeverRate(rateEntity.getLevelRateUp());
         contractMoneyInfoVo.setMoreBondAmount(moreBondAmount);
         contractMoneyInfoVo.setLessBondAmount(lessBondAmount);
+        contractMoneyInfoVo.setProfitOrLess(totalProfitOrLess);
         return Result.ok(contractMoneyInfoVo);
     }
 
@@ -1082,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());
@@ -1096,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());

--
Gitblit v1.9.1