From 7769ddd6342f763fd8995acd72ba53974336b378 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Fri, 11 Sep 2020 11:54:00 +0800
Subject: [PATCH] modify

---
 src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java |   33 +++++++++++++++++++++++++++++++++
 src/main/java/com/xcong/excoin/quartz/job/LoopExecutorJob.java                                 |    2 +-
 src/main/java/com/xcong/excoin/modules/contract/service/ContractHoldOrderService.java          |    2 ++
 3 files changed, 36 insertions(+), 1 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/modules/contract/service/ContractHoldOrderService.java b/src/main/java/com/xcong/excoin/modules/contract/service/ContractHoldOrderService.java
index c480514..eb2d903 100644
--- a/src/main/java/com/xcong/excoin/modules/contract/service/ContractHoldOrderService.java
+++ b/src/main/java/com/xcong/excoin/modules/contract/service/ContractHoldOrderService.java
@@ -44,4 +44,6 @@
 
     public void calHoldOrderHoldFeeAmount();
 
+    public void calHoldFeeAmountForBondAmount();
+
 }
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 2707afa..09dcbf1 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
@@ -642,4 +642,37 @@
         }
         producer.sendPriceOperate(JSONObject.toJSONString(model));
     }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void calHoldFeeAmountForBondAmount() {
+        List<ContractHoldOrderEntity> list = contractHoldOrderDao.selectAllHoldOrder();
+        PlatformTradeSettingEntity tradeSettingEntity = cacheSettingUtils.getTradeSetting();
+
+        if (CollUtil.isNotEmpty(list)) {
+            for (ContractHoldOrderEntity holdOrderEntity : list) {
+                BigDecimal holdAmount = holdOrderEntity.getHoldAmount();
+                if (holdAmount == null) {
+                    holdAmount = BigDecimal.ZERO;
+                }
+
+                BigDecimal thisTimeHold = holdOrderEntity.getBondAmount().multiply(tradeSettingEntity.getDoingRatio());
+                log.info("订单编号:{}, 持仓费:{}", holdOrderEntity.getOrderNo(), thisTimeHold);
+
+                MemberEntity memberEntity = memberDao.selectById(holdOrderEntity.getMemberId());
+                BigDecimal subBond = holdOrderEntity.getBondAmount().subtract(thisTimeHold);
+
+                BigDecimal newForcePrice = CalculateUtil.getForceSetPrice(subBond.subtract(holdOrderEntity.getOpeningFeeAmount()), holdOrderEntity.getOpeningPrice(), holdOrderEntity.getSymbolCnt(), holdOrderEntity.getSymbolSku(), holdOrderEntity.getOpeningType(), memberEntity);
+                holdAmount = holdAmount.add(thisTimeHold);
+                holdOrderEntity.setBondAmount(subBond);
+                holdOrderEntity.setHoldAmount(holdAmount);
+                holdOrderEntity.setForceClosingPrice(newForcePrice);
+                holdOrderEntity.setOperateNo(holdOrderEntity.getOperateNo() + 1);
+                contractHoldOrderDao.updateById(holdOrderEntity);
+
+                // 发送爆仓消息
+                sendOrderBombMsg(holdOrderEntity.getId(), holdOrderEntity.getOpeningType(), newForcePrice, holdOrderEntity.getSymbol(), holdOrderEntity.getOperateNo());
+            }
+        }
+    }
 }
diff --git a/src/main/java/com/xcong/excoin/quartz/job/LoopExecutorJob.java b/src/main/java/com/xcong/excoin/quartz/job/LoopExecutorJob.java
index fe7e702..01e89d2 100644
--- a/src/main/java/com/xcong/excoin/quartz/job/LoopExecutorJob.java
+++ b/src/main/java/com/xcong/excoin/quartz/job/LoopExecutorJob.java
@@ -50,7 +50,7 @@
     public void updateDoingPrice() {
         log.info("#持仓费计算#");
         try {
-            contractHoldOrderService.calHoldOrderHoldFeeAmount();
+            contractHoldOrderService.calHoldFeeAmountForBondAmount();
         } catch (Exception e) {
             log.error("#持仓费计算错误#", e);
         }

--
Gitblit v1.9.1