From 9bcf85f8d8f9b503e386a67924f5943cd77bd813 Mon Sep 17 00:00:00 2001
From: peternameyakj <908253177@qq.com>
Date: Wed, 14 Aug 2024 17:34:11 +0800
Subject: [PATCH] 2

---
 src/main/java/project/contract/job/ContractOrderCalculationServiceImpl.java |   39 +++++++++++++++++++++++++++++++--------
 1 files changed, 31 insertions(+), 8 deletions(-)

diff --git a/src/main/java/project/contract/job/ContractOrderCalculationServiceImpl.java b/src/main/java/project/contract/job/ContractOrderCalculationServiceImpl.java
index d9f7c91..5a8b9f9 100644
--- a/src/main/java/project/contract/job/ContractOrderCalculationServiceImpl.java
+++ b/src/main/java/project/contract/job/ContractOrderCalculationServiceImpl.java
@@ -10,7 +10,10 @@
 
 import kernel.util.Arith;
 import kernel.util.ThreadUtils;
+import org.springframework.beans.BeansException;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
 import org.springframework.util.ObjectUtils;
 import project.contract.ContractLock;
 import project.contract.ContractOrder;
@@ -26,12 +29,14 @@
 import project.wallet.WalletService;
 import project.wallet.consumer.WalletMessage;
 
-public class ContractOrderCalculationServiceImpl implements ContractOrderCalculationService {
+public class ContractOrderCalculationServiceImpl implements ContractOrderCalculationService, ApplicationContextAware {
+	private ApplicationContext applicationContext;
+
 	private static final Logger logger = LoggerFactory.getLogger(ContractOrderCalculationServiceImpl.class);
 	private ContractOrderService contractOrderService;
 	private DataService dataService;
 	private WalletService walletService;
-	private RedisHandler redisHandler;
+//	private RedisHandler redisHandler;
 	private AssetService assetService;
 	public final static String STATE_SUBMITTED = "submitted";
 	public final static String STATE_CREATED = "created";
@@ -106,11 +111,13 @@
 		double amount = Arith.mul(div, Arith.sub(currentPrice, order.getTrade_avg_price()));
 		logger.info("---------盈亏金额:"+amount);
 		logger.info("---------盈亏:"+profit_loss);
+		RedisHandler redisHandler = getRedisHandler();
 		if ("profit".equals(profit_loss)) {
 			/**
 			 * 盈 正数
 			 */
 			order.setProfit(Arith.add(0.0D, Math.abs(amount)));
+			redisHandler.setSync("MONEY_CONTRACT_PROFIT_"+order.getPartyId().toString(), 0);
 		} else if ("loss".equals(profit_loss)) {
 			order.setProfit(Arith.sub(0.0D,Math.abs(amount) ));
 
@@ -118,12 +125,22 @@
 			//定义一个 总浮动亏损的值
 			logger.info("----------fffffffffffffff-------"+redisHandler);
 			logger.info("----------ssssssssssss-------"+order.getPartyId().toString());
-			Double contractAssetsProfit = (Double) this.redisHandler.get(ContractRedisKeys.CONTRACT_ASSETS_PROFIT_PARTY_ID + order.getPartyId().toString());
+			Double contractAssetsProfit = (Double) redisHandler.get(ContractRedisKeys.CONTRACT_ASSETS_PROFIT_PARTY_ID + order.getPartyId().toString());
 			logger.info("----------bbbbbbbbbbbbbbbbbb-------"+contractAssetsProfit);
 			double contractProfit = null == contractAssetsProfit ? 0.000D : contractAssetsProfit;
 			logger.info("----------contractProfit-------"+contractProfit);
-			if(contractProfit <= 0){
-				redisHandler.setSync("MONEY_CONTRACT_PROFIT_"+order.getPartyId().toString(), contractProfit);
+			List<ContractOrder> list = contractOrderService.findSubmitted(order.getPartyId().toString(), null, null);
+			double deposit = 0;
+			for (int i = 0; i < list.size(); i++) {
+				ContractOrder close_line = list.get(i);
+				deposit = Arith.add(deposit, close_line.getDeposit());
+			}
+			double profitt = Arith.add(contractProfit,deposit);
+			logger.info("----------盈亏除去保证金之后的值-------"+profitt);
+			if(profitt <= 0){
+				redisHandler.setSync("MONEY_CONTRACT_PROFIT_"+order.getPartyId().toString(), profitt);
+			}else{
+				redisHandler.setSync("MONEY_CONTRACT_PROFIT_"+order.getPartyId().toString(), 0);
 			}
 			logger.info("----------1111111111111-------");
 			//修改余额,每次修改取平仓前余额减去浮动亏损
@@ -134,7 +151,7 @@
 			logger.info("----------money-------"+money);
 			logger.info("----------profit-------"+profit);
 			if(!ObjectUtils.isEmpty(money) && !ObjectUtils.isEmpty(profit)){
-				wallet.setMoney(Arith.sub(Double.parseDouble(money.toString()),Double.parseDouble(profit.toString())));
+				wallet.setMoney(Arith.add(Double.parseDouble(money.toString()),Double.parseDouble(profit.toString())));
 			}
 			logger.info("----------2222222222222-------");
 			redisHandler.setSync(WalletRedisKeys.WALLET_PARTY_ID + wallet.getPartyId().toString(), wallet);
@@ -291,13 +308,19 @@
 		this.order_close_line_type = order_close_line_type;
 	}
 
-	public void setRedisHandler(RedisHandler redisHandler) {
-		this.redisHandler = redisHandler;
+	public RedisHandler getRedisHandler() {
+		return applicationContext.getBean(RedisHandler.class);
 	}
+
 
 	public void setAssetService(AssetService assetService) {
 		this.assetService = assetService;
 	}
 
 
+	@Override
+	public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
+		this.applicationContext = applicationContext;
+	}
+
 }

--
Gitblit v1.9.3