#!/usr/bin/python # -*- coding: GBK -*- #------------------------------------------------------------------------------- # #------------------------------------------------------------------------------- # ##@package EventReport # # @todo:ʼþ»ã±¨ # @author hxp # @date 2015-1-14 # @version 2.4 # @Note£º EventReport_EventReportÓ÷¨ µÚÒ»¸ö²ÎÊý´«postÄÚÈÝurlencode£¬µÚ2,3,4²»Ó㻵ÚÎå¸ö²ÎÊý0´ú±íget£¬1Ϊpost£»µÚÁù¸ö²ÎÊýΪurl # # @change: "2015-01-28 22:30" hxp ¹Ø±Õʼþ»ã±¨ # @change: "2015-02-06 20:40" Alee ʼþ»ã±¨·¢ËÍÖÁºÏ·þÖ÷·þ # @change: "2015-06-08 20:30" hxp Ôö¼ÓchannelCode # @change: "2015-07-13 14:00" hxp Ôö¼ÓpidÐÅÏ¢ # @change: "2016-07-18 19:00" hxp 9377¶À´úʼþ»ã±¨°æ # @change: "2016-07-27 20:00" Alee Ð޸Ĵò¿ªÎļþ³¬Ê±¹Ø±Õ # @change: "2016-07-30 11:30" hxp ¹Ø±ÕÎïÆ·¸ú×Ù # @change: "2016-08-18 16:30" hxp ×Ô¶¨ÒåÈÎÎñʼþ # @change: "2016-08-30 23:00" hxp ÁÄÌì¼à¿Ø # @change: "2016-09-10 11:00" hxp ÁÄÌìÄÚÈÝÌæ»»»»ÐÐ # @change: "2016-11-09 20:00" hxp Ôö¼Ó×Ô¶¨Òå¼Ç¼(×øÆï¡¢³á°ò¡¢³èÎï¡¢»õ±Ò½ø³ö¡¢³È×°) # @change: "2017-06-08 19:30" hxp Ôö¼Ó×Ô¶¨Òå¼Ç¼(µãȯ¡¢Éñ±ø¡¢·ûÓ¡¡¢¸ÄÃû¡¢ÕæÆø) # @change: "2017-07-01 15:30" hxp ƽ̨¸ÄΪ´ÓÍæ¼ÒÕ˺ÅÖÐÈ¡£¬Ö§³Ö»ì·þģʽ # @change: "2017-07-04 15:00" hxp Ôö¼Ó»ì·þģʽÏ¿ÉÇø·Ö¸÷ƽ̨×ÔÉíÇø·þºÏ·þºóµÄƽ̨Ö÷·þID # ÏêϸÃèÊö: ʼþ»ã±¨ # #--------------------------------------------------------------------- #"""Version = 2017-07-04 15:00""" #--------------------------------------------------------------------- import IpyGameDataPY import ReadChConfig import ShareDefine import GameWorld import datetime import urllib ## ³õʼ»¯Ê¼þ # @param None # @return ÎÞ·µ»ØÖµ def InitDllAppID(): appID = "mobile" key = "mobile" GameWorld.GetGameWorld().EventReport_SetEventReportParam(appID, key) GameWorld.Log("³õʼ»¯Ê¼þ±¨¸æ: appID=%s,key=%s OK!" % (appID, key)) return ## ʼþ±¨¸æ¼Ç¼ # @param eventActionID ʼþid # @param eventParam ʼþ²ÎÊý # @param curPlayer # @return None def EventReport(eventActionID, eventParam, curPlayer=None, OperatorID=""): # ×é³ÉÀý×Ó eventParam µÄ¸ñʽ±ØÐëÊÇ xx=yy&zz=cc # "http://192.168.0.249:12000/event_receiver?EventID=3099&OperatorID=test&PlayerCount=102&Time=2018-02-08 18:30:30&ProductID=snxxz&RegionName=s1" reportActionIDList = IpyGameDataPY.GetFuncEvalCfg("EventReport", 3) if reportActionIDList and eventActionID not in reportActionIDList: #GameWorld.DebugLog("·ÇÐèÒª»ã±¨µÄʼþID! %s" % eventActionID) return if eventActionID in IpyGameDataPY.GetFuncEvalCfg("EventReport", 1): #GameWorld.DebugLog("²»ÐèÒª»ã±¨µÄʼþ! %s" % eventActionID) return if not curPlayer and not OperatorID: return ProductID = ReadChConfig.GetPyMongoConfig("EventReport", "ProductID") ReportUrl = ReadChConfig.GetPyMongoConfig("EventReport", "ReportUrl") playerInfo = "" if curPlayer: if not GameWorld.IsNormalPlayer(curPlayer): return #UTF8 ÐèҪת³Éurl±àÂë²Å¿ÉÓà playerInfo = urllib.urlencode({"RoleID": curPlayer.GetName(), "AccountID": GameWorld.GetPlatformAccID(curPlayer.GetAccID()), "IP": curPlayer.GetIP(), "Level": curPlayer.GetLV(), "DeviceFlag": curPlayer.GetAccountData().GetDeviceFlag(), "Job": curPlayer.GetJob(), "PlayerID": curPlayer.GetPlayerID(), "CreateRoleTime": curPlayer.GetCreateRoleTime(), }) OperatorID = GameWorld.GetPlayerPlatform(curPlayer) RegionName = GameWorld.GetPlayerServerSID(curPlayer) playerInfo = "&%s"%playerInfo else: # ºÏ·þÇé¿ö£¬Íæ¼ÒÈ¡×Ô¼º·þ·¢ËÍ£¬·ÇÍæ¼ÒÊý¾Ý°´Ö¸¶¨Æ½Ì¨ÅäÖ÷¢ sid = GameWorld.GetPlayerMainServerID(OperatorID) if not sid: GameWorld.ErrLog("GetPlayerMainServerID: %s-%s"%(OperatorID, sid)) return RegionName = 's%s'%sid if eventParam: eventParam = "&%s"%eventParam getUrl = "%s?ProductID=%s&OperatorID=%s&RegionName=%s&EventID=%s%s&Time=%s%s"%(\ ReportUrl, ProductID, OperatorID, RegionName, eventActionID, playerInfo, urllib.quote_plus(str(datetime.datetime.today()).split('.')[0]), eventParam) GameWorld.DebugLog("EventReport: %s"%getUrl) # µÚÎå¸ö²ÎÊý0´ú±íget·¢ËÍ 1´ú±ípost GameWorld.GetGameWorld().EventReport_EventReport("", "", "", "", 0, getUrl) return ## ================================================================================================= def WriteEvent_login(curPlayer): if curPlayer.GetIP() == "127.0.0.1": return version = urllib.quote_plus(curPlayer.GetAccountData().GetClientVersion()) EventReport(ShareDefine.Def_UserAction_Login, "Job=%s&SessionID=%s&Version=%s"%( curPlayer.GetJob(), GameWorld.GetSessionID(curPlayer), version), curPlayer) return # ÀëÏßÊý¾Ý def WriteEvent_session(curPlayer): seconds = 0 logoffTimeStr = curPlayer.GetLogoffTime().strip() loginTimeStr = curPlayer.GetLoginTime().strip() if logoffTimeStr and loginTimeStr: passTimes = GameWorld.GetDateTimeByStr(logoffTimeStr) - GameWorld.GetDateTimeByStr(loginTimeStr) seconds = passTimes.seconds EventReport(ShareDefine.Def_UserAction_Session, "OnlineTime=%s&SessionID=%s"%(seconds, GameWorld.GetSessionID(curPlayer)), curPlayer) return def WriteEvent_Entry(curPlayer, step): EventReport(ShareDefine.Def_UserAction_LostModel, "Step=%s&Flag=%s"%(step, ShareDefine.Def_UserAction_CreateRole), curPlayer)