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