From dc41bed95a5074e39900d62be2ffa71790a01321 Mon Sep 17 00:00:00 2001
From: shanji <18996038927@163.com>
Date: Tue, 17 May 2022 20:42:43 +0800
Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E5=BE=AA=E7=8E=AF=E5=BC=95?=
 =?UTF-8?q?=E7=94=A8=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../Spot/D21OrderPublishBusiness.cs                    |  8 ++++++--
 Binance.TradeRobot.Business/Business/RobotBusiness.cs  |  7 ++++---
 Binance.TradeRobot.Business/Business/SingalBusiness.cs |  9 ++++-----
 Binance.TradeRobot.Business/GlobalContext.cs           | 10 +++++++---
 4 files changed, 21 insertions(+), 13 deletions(-)

diff --git a/Binance.TradeRobot.Business/Business/OrderPublishBusiness/Spot/D21OrderPublishBusiness.cs b/Binance.TradeRobot.Business/Business/OrderPublishBusiness/Spot/D21OrderPublishBusiness.cs
index 93eb185..ea4b506 100644
--- a/Binance.TradeRobot.Business/Business/OrderPublishBusiness/Spot/D21OrderPublishBusiness.cs
+++ b/Binance.TradeRobot.Business/Business/OrderPublishBusiness/Spot/D21OrderPublishBusiness.cs
@@ -15,9 +15,11 @@ namespace Binance.TradeRobot.Business
     {
         public Enums.TradePolicy TradePolicy => Enums.TradePolicy.D21;
 
-        public D21OrderPublishBusiness(IFreeSql fsql, NLogManager logManager, IIdGenerator idGenerator, IMemoryCache memoryCache, DingBusiness dingBusiness) : base(fsql, logManager, idGenerator, memoryCache, dingBusiness)
+        public RobotBusiness robotBusiness;
+
+        public D21OrderPublishBusiness(IFreeSql fsql, NLogManager logManager, IIdGenerator idGenerator, IMemoryCache memoryCache, DingBusiness dingBusiness, RobotBusiness robotBusiness) : base(fsql, logManager, idGenerator, memoryCache, dingBusiness)
         {
-           
+            this.robotBusiness = robotBusiness;
         }
 
 
@@ -38,6 +40,8 @@ namespace Binance.TradeRobot.Business
                     Content = $"收到订单推送,订单号:{spotOrderPublishInfo.OrderId},订单方向:{spotOrderPublishInfo.TradeDirection},订单类型:{spotOrderPublishInfo.OrderType},订单状态:{spotOrderPublishInfo.SpotOrderState},本次成交额:{spotOrderPublishInfo.LastTradeAmount}"
                 });
 
+
+
             }
             catch (Exception ex)
             {
diff --git a/Binance.TradeRobot.Business/Business/RobotBusiness.cs b/Binance.TradeRobot.Business/Business/RobotBusiness.cs
index 76eb4ca..2d02513 100644
--- a/Binance.TradeRobot.Business/Business/RobotBusiness.cs
+++ b/Binance.TradeRobot.Business/Business/RobotBusiness.cs
@@ -17,11 +17,12 @@ namespace Binance.TradeRobot.Business
     [BatchRegistration(ServiceLifetime.Singleton, RegistrationType.Self)]
     public class RobotBusiness : BaseBusiness
     {
-        private GlobalContext globalContext;
+        private Lazy<GlobalContext> globalContextLazy;
+        private GlobalContext globalContext => globalContextLazy.Value;
 
-        public RobotBusiness(IFreeSql fsql, NLogManager logManager, IIdGenerator idGenerator, IMemoryCache memoryCache, GlobalContext globalContext) : base(fsql, logManager, idGenerator, memoryCache)
+        public RobotBusiness(IFreeSql fsql, NLogManager logManager, IIdGenerator idGenerator, IMemoryCache memoryCache, IServiceProvider serviceProvider) : base(fsql, logManager, idGenerator, memoryCache)
         {
-            this.globalContext = globalContext;
+            this.globalContextLazy = new Lazy<GlobalContext>(() => serviceProvider.GetService<GlobalContext>());
         }
 
         /// <summary>
diff --git a/Binance.TradeRobot.Business/Business/SingalBusiness.cs b/Binance.TradeRobot.Business/Business/SingalBusiness.cs
index 6a6156d..761b01b 100644
--- a/Binance.TradeRobot.Business/Business/SingalBusiness.cs
+++ b/Binance.TradeRobot.Business/Business/SingalBusiness.cs
@@ -1,6 +1,5 @@
 using Binance.TradeRobot.Common.DI;
 using Binance.TradeRobot.Model.Base;
-using Binance.TradeRobot.Model.Db;
 using Binance.TradeRobot.Model.Dto;
 using Microsoft.Extensions.Caching.Memory;
 using Microsoft.Extensions.DependencyInjection;
@@ -65,12 +64,12 @@ namespace Binance.TradeRobot.Business
                                                     taskSchedulerManager.SingalTaskScheduler);
                         break;
                     case Enums.SingalType.多交叉:
-                        //Task.Factory.StartNew(() => d21TradeBusiness.LongCross(d21SingalRequest, robot, false, symbolInfo),
-                        //                            CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.SingalTaskScheduler);
+                        Task.Factory.StartNew(() => d21TradeBusiness.LongCross(d21SingalRequest, robot, false, symbolInfo),
+                                                    CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.SingalTaskScheduler);
                         break;
                     case Enums.SingalType.空交叉:
-                        //Task.Factory.StartNew(() => d21TradeBusiness.ShortCross(d21SingalRequest, robot, false, symbolInfo),
-                        //                            CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.SingalTaskScheduler);
+                        Task.Factory.StartNew(() => d21TradeBusiness.ShortCross(d21SingalRequest, robot, false, symbolInfo),
+                                                    CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.SingalTaskScheduler);
                         break;
                 }
             }
diff --git a/Binance.TradeRobot.Business/GlobalContext.cs b/Binance.TradeRobot.Business/GlobalContext.cs
index 42ba067..bcece0a 100644
--- a/Binance.TradeRobot.Business/GlobalContext.cs
+++ b/Binance.TradeRobot.Business/GlobalContext.cs
@@ -4,6 +4,7 @@ using Microsoft.Extensions.DependencyInjection;
 using SDKAdapter.Model;
 using SDKAdapter.WebSockets.Market;
 using SDKAdapter.WebSockets.Order.Spot;
+using System;
 using System.Collections.Generic;
 using System.Linq;
 
@@ -15,14 +16,17 @@ namespace Binance.TradeRobot.Business
         private NLogManager logManager;
         private IDictionary<string, SpotMarketWebSocketClient> spotMarketWebSocketClientDictionary;
         private IDictionary<string, SpotOrderWebSocketClient> spotOrderWebSocketClientDictionary;
-        private IEnumerable<ISpotOrderPublishBusiness> spotOrderPublishBusinessList;
 
-        public GlobalContext(NLogManager logManager, IEnumerable<ISpotOrderPublishBusiness> spotOrderPublishBusinessList)
+        private Lazy<IEnumerable<ISpotOrderPublishBusiness>> spotOrderPublishBusinessListLazy;
+        private IEnumerable<ISpotOrderPublishBusiness> spotOrderPublishBusinessList => spotOrderPublishBusinessListLazy.Value;
+
+        public GlobalContext(NLogManager logManager, IServiceProvider serviceProvider)
         {
             this.logManager = logManager;
             spotMarketWebSocketClientDictionary = new Dictionary<string, SpotMarketWebSocketClient>();
             spotOrderWebSocketClientDictionary = new Dictionary<string, SpotOrderWebSocketClient>();
-            this.spotOrderPublishBusinessList = spotOrderPublishBusinessList;
+            //this.spotOrderPublishBusinessList = spotOrderPublishBusinessList;
+            this.spotOrderPublishBusinessListLazy = new Lazy<IEnumerable<ISpotOrderPublishBusiness>>(() => serviceProvider.GetServices<ISpotOrderPublishBusiness>());
         }
 
         /// <summary>