From 436584b1befe8bf5893b0a5187807ab37ec86c63 Mon Sep 17 00:00:00 2001
From: client_linchunjie <461730578@qq.com>
Date: 星期二, 14 八月 2018 15:04:43 +0800
Subject: [PATCH] 2296【前端】限时特惠按钮和界面预先开启

---
 System/OpenServerActivity/ImpactRankModel.cs       |   14 +++++++++++++-
 System/OpenServerActivity/OpenServerActivityWin.cs |   14 ++++++++++++++
 System/Welfare/OperationTimeHepler.cs              |   18 +++++++++++++++---
 System/OpenServerActivity/FlashSaleModel.cs        |   14 ++++++++++++++
 4 files changed, 56 insertions(+), 4 deletions(-)

diff --git a/System/OpenServerActivity/FlashSaleModel.cs b/System/OpenServerActivity/FlashSaleModel.cs
index ba7a411..5814bbc 100644
--- a/System/OpenServerActivity/FlashSaleModel.cs
+++ b/System/OpenServerActivity/FlashSaleModel.cs
@@ -70,12 +70,26 @@
             }
         }
 
+        public bool InAdvanceOpen
+        {
+            get
+            {
+                OperationBase operationBase;
+                OperationTimeHepler.Instance.TryGetOperationTime(Operation.FlashSale, out operationBase);
+                return operationBase != null && operationBase.SatisfyOpenCondition() && operationBase.InAdvanceTime(TimeUtility.ServerNow);
+            }
+        }
+
         public void SendBuyFlashSale(int index, int id)
         {
             OperationBase operationBase;
             if (OperationTimeHepler.Instance.TryGetOperationTime(Operation.FlashSale, out operationBase))
             {
                 OperationFlashSale operation = operationBase as OperationFlashSale;
+                if (operation.InAdvanceTime(TimeUtility.ServerNow))
+                {
+                    return;
+                }
                 if (!operation.InTime(TimeUtility.ServerNow))
                 {
                     SysNotifyMgr.Instance.ShowTip("ActiveOutTime");
diff --git a/System/OpenServerActivity/ImpactRankModel.cs b/System/OpenServerActivity/ImpactRankModel.cs
index c840884..227c8ed 100644
--- a/System/OpenServerActivity/ImpactRankModel.cs
+++ b/System/OpenServerActivity/ImpactRankModel.cs
@@ -644,6 +644,18 @@
             FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent;
             OperationTimeHepler.Instance.operationStartEvent += OperationStartEvent;
             OperationTimeHepler.Instance.operationEndEvent += OperationEndEvent;
+            OperationTimeHepler.Instance.operationAdvanceEvent += OperationAdvanceEvent;
+        }
+
+        private void OperationAdvanceEvent(Operation type)
+        {
+            if (type == Operation.FlashSale)
+            {
+                if (openServerActivityStateChange != null)
+                {
+                    openServerActivityStateChange();
+                }
+            }
         }
 
         private void OperationEndEvent(Operation type, int state)
@@ -774,7 +786,7 @@
 
         public bool IsFlashSaleOpen()
         {
-            return flashSaleModel.IsOpen;
+            return flashSaleModel.IsOpen || flashSaleModel.InAdvanceOpen;
         }
 
         public bool IsConsumeRebateOpen()
diff --git a/System/OpenServerActivity/OpenServerActivityWin.cs b/System/OpenServerActivity/OpenServerActivityWin.cs
index 4dbf30f..c102975 100644
--- a/System/OpenServerActivity/OpenServerActivityWin.cs
+++ b/System/OpenServerActivity/OpenServerActivityWin.cs
@@ -67,6 +67,7 @@
             TimeUtility.OnServerOpenDayRefresh += OnStepServerDayEvent;
             OperationTimeHepler.Instance.operationTimeUpdateEvent += OperationTimeUpdateEvent;
             OperationTimeHepler.Instance.operationStartEvent += OperationStartEvent;
+            OperationTimeHepler.Instance.operationAdvanceEvent += OperationAdvanceEvent;
             for (int i = 0; i < m_SortArray.Count; i++)
             {
                 m_ActivitySpreadDict[m_SortArray[i]] = false;
@@ -119,6 +120,7 @@
             TimeUtility.OnServerOpenDayRefresh -= OnStepServerDayEvent;
             OperationTimeHepler.Instance.operationTimeUpdateEvent -= OperationTimeUpdateEvent;
             OperationTimeHepler.Instance.operationStartEvent -= OperationStartEvent;
+            OperationTimeHepler.Instance.operationAdvanceEvent -= OperationAdvanceEvent;
             CloseOtherWin();
             WindowCenter.Instance.Open<MainInterfaceWin>();
             impactRankModel.gotoImpactRankType = 0;
@@ -595,6 +597,18 @@
                     break;
             }
         }
+
+        private void OperationAdvanceEvent(Operation type)
+        {
+            if (type == Operation.FlashSale)
+            {
+                if (!alreadyOpenActivitys.Contains(4))
+                {
+                    alreadyOpenActivitys.Add(4);
+                    UpdateFunctionBtns();
+                }
+            }
+        }
     }
 }
 
diff --git a/System/Welfare/OperationTimeHepler.cs b/System/Welfare/OperationTimeHepler.cs
index 80bc61a..b62de8c 100644
--- a/System/Welfare/OperationTimeHepler.cs
+++ b/System/Welfare/OperationTimeHepler.cs
@@ -648,7 +648,13 @@
         OperationDate start;
         OperationDate end;
 
-        public int index = 0;
+        public int index = -1;
+
+        public OperationDateEnumerator(OperationDate _start,OperationDate _end)
+        {
+            this.start = _start;
+            this.end = _end;
+        }
 
         public object Current
         {
@@ -668,12 +674,17 @@
         public bool MoveNext()
         {
             index++;
-            return index <= (start - end);
+            bool isIn = index <= (start - end);
+            if (!isIn)
+            {
+                GetEnumerator().Reset();
+            }
+            return isIn;
         }
 
         public void Reset()
         {
-            index = 0;
+            index = -1;
         }
     }
 
@@ -938,6 +949,7 @@
                         }
                         if (seconds > 0)
                         {
+                            dateEnumerator.Reset();
                             break;
                         }
                     }

--
Gitblit v1.8.0