From 7c48580fab636fbc0d59793431e4ac6a6f6ccc65 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 17 六月 2021 17:38:21 +0800
Subject: [PATCH] 8983 【港台】【BT2】【港台-1.100.7】【BT2-1.100.1】循环相关的活动配置优化(修复循环结束日当日无法开启活动bug)

---
 ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py |   19 +++++++++++--------
 1 files changed, 11 insertions(+), 8 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py
index b1083ac..43dd8b1 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py
@@ -235,7 +235,7 @@
         GameWorld.Log("加载运营活动: actName=%s,platform=%s,serverGroupID=%s" % (actName, platform, serverGroupID))
         curServerActIpyDataList = __GetOperationActionServerIpyDataList(ipyDataMgr, platform, serverGroupID, actName)
         GameWorld.Log("    可处理条数=%s" % (len(curServerActIpyDataList)))
-        actNumDisableWeekIpyDataInfo, disableWeekCfgIDList = __GetOperationActionDisableWeekIpyDataInfo(actName, curDateTime, curServerActIpyDataList)
+        actNumDisableWeekIpyDataInfo, disableWeekCfgIDDict = __GetOperationActionDisableWeekIpyDataInfo(actName, curDateTime, curServerActIpyDataList)
         
         for ipyData in curServerActIpyDataList:
             
@@ -297,9 +297,9 @@
                                       % (cfgID, startWeekDate, startDateStr, endWeekDate, endDateStr, ymdCfgID, ymdStartDate, ymdEndDate))
                         continue
                     
-                    if cfgID in disableWeekCfgIDList:
-                        GameWorld.Log("        常规活动,按星期开启的未到开启循环日期或已结束循环日期,不处理! cfgID=%s,startDateStr=%s,endDateStr=%s" 
-                                      % (cfgID, startDateStr, endDateStr))
+                    if cfgID in disableWeekCfgIDDict:
+                        GameWorld.Log("        常规活动,按星期开启的未到开启循环日期或已结束循环日期,不处理! cfgID=%s,startDateStr=%s,endDateStr=%s, %s" 
+                                      % (cfgID, startDateStr, endDateStr, disableWeekCfgIDDict[cfgID]))
                         continue
                     
                     if actByWeek:
@@ -597,7 +597,10 @@
     ## 获取不可用的按星期X开启的配置数据信息,按星期X开启的 活动优先级小于按日期的,当有重叠时以日期的为准
     #curWeekday = curDateTime.weekday() + 1 # 今天星期几, 1代表星期1
     actNumWeekYMDIpyDataInfo = {} # {actNum:[weekIpyDataList, ymdIpyDatList], ...}
-    disableWeekCfgIDList = [] # [cfgID, ...]
+    disableWeekCfgIDDict = {} # {cfgID:[startDateStr, endDateStr], ...}
+    
+    curDateTimeYmdStr = "%d-%d-%d" % (curDateTime.year, curDateTime.month, curDateTime.day)
+    curDateTimeYmd = GameWorld.ChangeStrToDatetime(curDateTimeYmdStr, ChConfig.TYPE_Time_YmdFormat)
     
     for ipyData in curServerActIpyDataList:
         cfgID = ipyData.GetCfgID()
@@ -619,8 +622,8 @@
             startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(ipyData)
             startWeekDate = GameWorld.ChangeStrToDatetime(startDateStr, ChConfig.TYPE_Time_YmdFormat)
             endWeekDate = GameWorld.ChangeStrToDatetime(endDateStr, ChConfig.TYPE_Time_YmdFormat)
-            if startWeekDate > curDateTime or curDateTime >= endWeekDate: # 还未开始的循环 or 已经强制结束的循环
-                disableWeekCfgIDList.append(cfgID)
+            if startWeekDate > curDateTimeYmd or curDateTimeYmd > endWeekDate: # 还未开始的循环 or 已经强制结束的循环
+                disableWeekCfgIDDict[cfgID] = [startDateStr, endDateStr]
             else:
                 weekIpyDataList.append([ipyData, startWeekDate, endWeekDate])
             
@@ -647,7 +650,7 @@
                     ymdCfgID = ymdIpyData.GetCfgID()
                     actNumDisableWeekIpyDataInfo[actNum][cfgID] = [startWeekDate, endWeekDate, ymdCfgID, ymdStartDate, ymdEndDate]
                     
-    return actNumDisableWeekIpyDataInfo, disableWeekCfgIDList
+    return actNumDisableWeekIpyDataInfo, disableWeekCfgIDDict
 
 def TransferOperationActDBKeyValue():
     '''  服务器启动时调用

--
Gitblit v1.8.0