From 6218567c12a73ff51188c05de34faaf198e75bc2 Mon Sep 17 00:00:00 2001
From: shanj <18996038927@163.com>
Date: Sat, 21 May 2022 03:49:12 +0800
Subject: [PATCH] =?UTF-8?q?=E7=9B=88=E5=88=A9=E5=A4=8D=E6=8A=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../OrderPublishBusiness/Spot/D21OrderPublishBusiness.cs    | 6 ++++++
 .../Order/Spot/BinanceSpotOrderWebSocketClient.cs           | 2 +-
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/Binance.TradeRobot.Business/Business/OrderPublishBusiness/Spot/D21OrderPublishBusiness.cs b/Binance.TradeRobot.Business/Business/OrderPublishBusiness/Spot/D21OrderPublishBusiness.cs
index d48e7c2..5643e59 100644
--- a/Binance.TradeRobot.Business/Business/OrderPublishBusiness/Spot/D21OrderPublishBusiness.cs
+++ b/Binance.TradeRobot.Business/Business/OrderPublishBusiness/Spot/D21OrderPublishBusiness.cs
@@ -42,6 +42,7 @@ namespace Binance.TradeRobot.Business
                 IUpdate<RobotAccount> updateRobotAccount = null;
                 IList<IUpdate<User>> updateUserList = null;
                 List<UserAccountProfitLossRecord> insertUserAccountProfitLossRecordList = null;
+                IUpdate<D21Policy> updateD21Policy = null;
 
 
                 if (spotOrderPublishInfo.SpotOrderState == Enums.SpotOrderState.Rejected ||
@@ -111,6 +112,7 @@ namespace Binance.TradeRobot.Business
                             //还币
                             var apiClient = GetBaseAPIClient(robot.ExchangeId, robot.ExchangeAPIKey.AccountId, robot.ExchangeAPIKey.APIKey, robot.ExchangeAPIKey.SecretKey);
                             interest = apiClient.IsolatedMarginRepay(robot.Symbol, loanAmount);
+                            logList[0].Content = $"{logList[0].Content},借币金额:{loanAmount},还币利息:{interest}";
                         }
 
 
@@ -129,6 +131,9 @@ namespace Binance.TradeRobot.Business
                                                                                              .SetIf(profit > 0M, ra => ra.WinCount + 1)
                                                                                              .SetIf(interest > 0M, ra => ra.LoanAmount - loanAmount);
 
+                        if (profit > 0) //盈利复投
+                            updateD21Policy = fsql.Update<D21Policy>(robot.D21Policy.Id).Set(p => p.Position + profit);
+
                         var capitalChangeType = profit > 0M ? Enums.CapitalChangeType.Add : Enums.CapitalChangeType.Reduce;
                         var userList = userBusiness.GetUserList(multiplyBy100: false);
                         foreach (var user in userList)
@@ -164,6 +169,7 @@ namespace Binance.TradeRobot.Business
                     fsql.Insert(logList).ExecuteAffrows();
                     updateSpotOrder.ExecuteAffrows();
                     updateRobotAccount?.ExecuteAffrows();
+                    updateD21Policy?.ExecuteAffrows();
                     if (insertUserAccountProfitLossRecordList != null && insertUserAccountProfitLossRecordList.Count() > 0)
                         fsql.Insert(insertUserAccountProfitLossRecordList).ExecuteAffrows();
                     if (updateUserList != null && updateUserList.Count() > 0)
diff --git a/SDKAdapter/WebSockets/Order/Spot/BinanceSpotOrderWebSocketClient.cs b/SDKAdapter/WebSockets/Order/Spot/BinanceSpotOrderWebSocketClient.cs
index aba61b2..d956ca3 100644
--- a/SDKAdapter/WebSockets/Order/Spot/BinanceSpotOrderWebSocketClient.cs
+++ b/SDKAdapter/WebSockets/Order/Spot/BinanceSpotOrderWebSocketClient.cs
@@ -151,7 +151,7 @@ namespace SDKAdapter.WebSockets.Order.Spot
                             LastTradeAmount = e.Data.LastQuoteQuantity,
                             LastTradePrice = e.Data.LastPriceFilled,
                             LastTradeQuantity = e.Data.LastQuantityFilled,
-                            LastTradeTime = e.Data.UpdateTime,
+                            LastTradeTime = e.Data.UpdateTime.AddHours(8),
                             CreateTime = e.Data.CreateTime,
                             LoggerName = logger.Name,
                             RejectedReason = e.Data.RejectReason.ToString()