From ad26af07b15757b4a85ec056a2c8d2a0f8e7e133 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期六, 22 九月 2018 01:40:15 +0800
Subject: [PATCH] 3798 【后端】运营活动时间优化,开服日常限时活动定制时间优化(修复活动日期相连时活动时间异常bug)

---
 ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py |    9 ++++++---
 1 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py
index ce5664f..77674c2 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py
@@ -206,6 +206,7 @@
             isActivity = False # 有需要处理开关时间的(开始、结束)
             isNotify = False
             isAdvanceNotice = False
+            isEnd = False
             # 没配置时分的代表全天, 只要开始或结束时分没配都算
             if not startHMStrList or not endHMStrList:
                 startDateTime = startDayDate
@@ -218,10 +219,12 @@
                     needStartList.append(startDateTime)
                     needEndList.append(endDateTime)
                     isActivity = True
+                    isEnd = (curDateTime == endDayDate)
                     
             # 每天按时段开启的,支持多时段
             else:
                 if startDayDate <= curDateTime <= endDayDate:
+                    isEnd = (curDateTime == endDayDate)
                     for hmIndex, startHMStr in enumerate(startHMStrList):
                         endHMStr = endHMStrList[hmIndex]
                         # 每天开的, 实际开关时间只取今天的日期; 这里有个问题,全服广播的时间不是今天的, 暂不做支持,之后真有这种需求再说
@@ -288,10 +291,10 @@
             if not isActivity and not isNotify and not isAdvanceNotice:
                 continue
             
-            GameWorld.Log("        需要处理的运营活动信息: cfgID=%s,isAdvanceNotice=%s,isActivity=%s,isNotify=%s" % (cfgID, isAdvanceNotice, isActivity, isNotify))
-            # 当天有需要激活活动或者提前预告活动的取开始时间较早的为准
+            GameWorld.Log("        需要处理的运营活动信息: cfgID=%s,isAdvanceNotice=%s,isActivity=%s,isEnd=%s,isNotify=%s" % (cfgID, isAdvanceNotice, isActivity, isEnd, isNotify))
+            # 当天有需要激活活动或者提前预告活动的取非结束的为准,如果有多个非结束的一般就是策划在活动时间上配置交叉,这种是不允许的
             if isActivity or isAdvanceNotice:
-                if not activityIpyData or activityIpyData.GetStartDate() < ipyData.GetStartDate():
+                if not activityIpyData or (isActivity and not isEnd):
                     activityIpyData = ipyData
                     activityInfoDict = {ShareDefine.ActKey_CfgID:cfgID}
                     

--
Gitblit v1.8.0