#!/usr/bin/python  
 | 
# -*- coding: GBK -*-  
 | 
#---------------------------------------------------------------------  
 | 
#  
 | 
#---------------------------------------------------------------------  
 | 
##@package GMT_BroadCast.py  
 | 
# @todo: gm¹ã²¥  
 | 
#  
 | 
# @author: wdb  
 | 
# @date 2012-06-14   
 | 
# @version 1.5  
 | 
#  
 | 
# @note:   
 | 
# @change: "2012-06-15 16:00" wdb É¾³ýlog   
 | 
# @change: "2012-07-12 18:00" wdb ×Ö·ûת»»ÔÚÈë¿Ú´¦Àí  
 | 
# @change: "2012-07-30 11:30" wdb GM»Ø¸´Ï¸»¯£¬´úÂëÓÅ»¯  
 | 
# @change: "2012-08-10 15:00" zhangxi ÐÞ¸ÄOSS¼Ç¼  
 | 
# @change: "2015-01-14 11:30" hxp Ã»ÓÐÉèÖÃʱ¼äĬÈÏÁ¢¼´¹ã²¥Ò»´Î  
 | 
#---------------------------------------------------------------------  
 | 
"""Version = 2015-01-14 11:30"""  
 | 
#---------------------------------------------------------------------  
 | 
import GameWorld  
 | 
import GMCommon  
 | 
import DataRecordPack  
 | 
import ChConfig  
 | 
  
 | 
import datetime  
 | 
#---------------------------------------------------------------------  
 | 
#Â߼ʵÏÖ(ÕâÀïcurPlayer = None)  
 | 
## Ö´ÐÐÂß¼  
 | 
#  @param curPlayer µ±Ç°Íæ¼Ò  
 | 
#  @param gmList [cmdIndex gmAccID forbidAcc]  
 | 
#  @return None  
 | 
#  @remarks º¯ÊýÏêϸ˵Ã÷.  
 | 
def OnExec(orderId, gmCmdDict):  
 | 
      
 | 
    broadCastMsg = gmCmdDict.get(GMCommon.Def_GMKey_BroadCastMsg, '')  
 | 
    startTime = gmCmdDict.get(GMCommon.Def_GMKey_StartTime, '')  
 | 
    endTime = gmCmdDict.get(GMCommon.Def_GMKey_EndTime, '')  
 | 
      
 | 
    startDate = gmCmdDict.get(GMCommon.Def_GMKey_StartDate, '')  
 | 
    endDate = gmCmdDict.get(GMCommon.Def_GMKey_EndDate, '')  
 | 
    interval = GameWorld.ToIntDef(gmCmdDict.get(GMCommon.Def_GMKey_Interval, '1'), 1)  
 | 
    interval = max(1, interval)  
 | 
    isDelOthers = gmCmdDict.get(GMCommon.Def_GMKey_IsDelOthers, 0) == "on"  
 | 
      
 | 
    if startDate == '' or startTime == '' or endDate == '' or endTime == '':  
 | 
        # Ã»ÓÐÉèÖÃʱ¼ä£¬Ä¬ÈÏÁ¢¼´¹ã²¥Ò»´Î  
 | 
        startTime = GameWorld.GetCurrentDataTimeStr()  
 | 
        endTime = str(GameWorld.GetServerTime() + datetime.timedelta(seconds=59))  
 | 
        endTime = endTime.strip().split(".")[0]  
 | 
    else:  
 | 
        startTime = startDate + " " + startTime  
 | 
        endTime = endDate + ' ' + endTime  
 | 
      
 | 
    # É¾³ý֮ǰµÄ´æ´¢µÄ¹ã²¥  
 | 
    if isDelOthers:  
 | 
        GMCommon.DelAllBroadCast()  
 | 
      
 | 
    elif broadCastMsg == '' or endTime == '' or startTime == '':  
 | 
        GMCommon.GMCommandResult(orderId, gmCmdDict, GMCommon.Def_ParamErr)      
 | 
        return  
 | 
      
 | 
    startDate = GameWorld.GetDateTimeByFormatStr(startTime, ChConfig.TYPE_Time_Format)  
 | 
    endDate = GameWorld.GetDateTimeByFormatStr(endTime, ChConfig.TYPE_Time_Format)  
 | 
    dateTime = GameWorld.GetServerTime()  
 | 
  
 | 
    # ÅжÏʱ¼äÊÇ·ñÕýÈ·  
 | 
    if CheckDate(startDate, endDate) or CheckDate(dateTime, endDate):  
 | 
        GMCommon.GMCommandResult(orderId, gmCmdDict, GMCommon.Def_InvalidTime)     
 | 
        return  
 | 
  
 | 
    startTime = GameWorld.ChangeTimeStrToNum(startTime)  
 | 
    endTime = GameWorld.ChangeTimeStrToNum(endTime)  
 | 
      
 | 
    # ·¢ËÍÏûÏ¢  
 | 
    GMCommon.SetBroadCastInfo(startTime, endTime, interval,  
 | 
                               broadCastMsg, isDelOthers)  
 | 
    #Ö´Ðгɹ¦  
 | 
    GMCommon.GMCommandResult(orderId, gmCmdDict, GMCommon.Def_Success)      
 | 
    # Á÷Ïò  
 | 
    DataRecordPack.DR_ToolGMOperate(0, '', '', 'GMT_BroadCast', str(gmCmdDict))  
 | 
    return  
 | 
  
 | 
  
 | 
## ÅжÏʱ¼äÊÇ·ñ´íÎó  
 | 
#  @param startDate£ºÏà¶ÔСÈÕÆÚ  
 | 
#  @param endDate£ºÏà¶Ô´óÈÕÆÚ  
 | 
#  @return None  
 | 
def CheckDate(startDate, endDate):  
 | 
      
 | 
    if (endDate - startDate).days < 0:  
 | 
        return True  
 | 
      
 | 
    return False  
 | 
  
 | 
      
 | 
  
 | 
  
 |