예제 #1
0
        public bool SaveSupportLog(ZhengBaSupportLogData data)
        {
            if (data == null)
            {
                return(false);
            }

            try
            {
                string sql = string.Format("INSERT INTO t_zhengba_support_log(month,from_rid,from_zoneid,from_rolename,support_type,to_union_group,to_group,`time`,rank_of_day,from_serverid) "
                                           + "VALUES({0},{1},{2},'{3}',{4},{5},{6},'{7}',{8},{9});",
                                           ZhengBaUtils.MakeMonth(data.Time), data.FromRoleId, data.FromZoneId, data.FromRolename,
                                           (int)data.SupportType, data.ToUnionGroup, data.ToGroup, data.Time.ToString("yyyy-MM-dd HH:mm:ss"),
                                           data.RankOfDay, data.FromServerId);

                if (DbHelperMySQL.ExecuteSql(sql) <= 0)
                {
                    return(false);
                }
            }
            catch (Exception ex)
            {
                LogManager.WriteLog(LogTypes.Error, "SaveSupportLog failed!", ex);
                return(false);
            }

            return(true);
        }
예제 #2
0
 private void HandleSaveSupportLog(GameServerClient client, int nID, byte[] cmdParams, int count)
 {
     try
     {
         ZhengBaSupportLogData data = DataHelper.BytesToObject <ZhengBaSupportLogData>(cmdParams, 0, count);
         if (data.FromServerId == GameDBManager.ZoneID)
         {
             string flagSql = string.Format("INSERT INTO t_zhengba_support_flag(month,rank_of_day,from_rid,from_zoneid,from_rolename,support_type,to_union_group,to_group,time,from_serverid) VALUES({0},{1},{2},{3},'{4}',{5},{6},{7},'{8}',{9})", new object[]
             {
                 data.Month,
                 data.RankOfDay,
                 data.FromRoleId,
                 data.FromZoneId,
                 data.FromRolename,
                 data.SupportType,
                 data.ToUnionGroup,
                 data.ToGroup,
                 data.Time.ToString("yyyy-MM-dd HH:mm:ss"),
                 data.FromServerId
             });
             if (!this.ExecNonQuery(flagSql))
             {
                 client.sendCmd <bool>(nID, false);
                 return;
             }
         }
         string updateSql = string.Format("INSERT INTO t_zhengba_support_log(month,rank_of_day,from_rid,from_zoneid,from_rolename,support_type,to_union_group,to_group,time,from_serverid) VALUES({0},{1},{2},{3},'{4}',{5},{6},{7},'{8}',{9})", new object[]
         {
             data.Month,
             data.RankOfDay,
             data.FromRoleId,
             data.FromZoneId,
             data.FromRolename,
             data.SupportType,
             data.ToUnionGroup,
             data.ToGroup,
             data.Time.ToString("yyyy-MM-dd HH:mm:ss"),
             data.FromServerId
         });
         if (!this.ExecNonQuery(updateSql))
         {
         }
         client.sendCmd <bool>(nID, true);
     }
     catch (Exception ex)
     {
         LogManager.WriteException(ex.Message);
         client.sendCmd <bool>(nID, false);
     }
 }
예제 #3
0
        public int ZhengBaSupport(ZhengBaSupportLogData data)
        {
            int result;

            if (data == null || !this.Persistence.SaveSupportLog(data))
            {
                result = -15;
            }
            else
            {
                lock (this.Mutex)
                {
                    ZhengBaSupportAnalysisData support;
                    if ((support = this.SyncData.SupportList.Find((ZhengBaSupportAnalysisData _s) => _s.UnionGroup == data.ToUnionGroup && _s.Group == data.ToGroup)) == null)
                    {
                        support = new ZhengBaSupportAnalysisData
                        {
                            UnionGroup = data.ToUnionGroup,
                            Group      = data.ToGroup,
                            RankOfDay  = data.RankOfDay
                        };
                        this.SyncData.SupportList.Add(support);
                    }
                    if (data.SupportType == 1)
                    {
                        support.TotalSupport++;
                    }
                    else if (data.SupportType == 2)
                    {
                        support.TotalOppose++;
                    }
                    else if (data.SupportType == 3)
                    {
                        support.TotalYaZhu++;
                    }
                    this.SyncData.SupportModTime = TimeUtil.NowDateTime();
                    this.AsyncEvQ.Enqueue(new AsyncDataItem(KuaFuEventTypes.ZhengBaSupport, new object[]
                    {
                        data
                    }));
                }
                result = 1;
            }
            return(result);
        }
예제 #4
0
        public int ZhengBaSupport(ZhengBaSupportLogData data)
        {
            ITianTiService kuaFuService = GetKuaFuService();

            if (null != kuaFuService)
            {
                try
                {
                    return(kuaFuService.ZhengBaSupport(data));
                }
                catch (System.Exception ex)
                {
                    ResetKuaFuService();
                }
            }

            return(StdErrorCode.Error_Server_Internal_Error);
        }
예제 #5
0
        public int ZhengBaSupport(ZhengBaSupportLogData data)
        {
            if (data == null || !Persistence.SaveSupportLog(data))
            {
                return(StdErrorCode.Error_DB_Faild);
            }

            lock (Mutex)
            {
                ZhengBaSupportAnalysisData support = null;
                if ((support = SyncData.SupportList.Find(_s => _s.UnionGroup == data.ToUnionGroup && _s.Group == data.ToGroup)) == null)
                {
                    support = new ZhengBaSupportAnalysisData()
                    {
                        UnionGroup = data.ToUnionGroup, Group = data.ToGroup, RankOfDay = data.RankOfDay
                    };
                    SyncData.SupportList.Add(support);
                }

                if (data.SupportType == (int)EZhengBaSupport.Support)
                {
                    support.TotalSupport++;
                }
                else if (data.SupportType == (int)EZhengBaSupport.Oppose)
                {
                    support.TotalOppose++;
                }
                else if (data.SupportType == (int)EZhengBaSupport.YaZhu)
                {
                    support.TotalYaZhu++;
                }

                SyncData.SupportModTime = TimeUtil.NowDateTime();
                AsyncEvQ.Enqueue(new AsyncDataItem(KuaFuEventTypes.ZhengBaSupport, data));
            }

            return(StdErrorCode.Error_Success);
        }
예제 #6
0
 public int ZhengBaSupport(ZhengBaSupportLogData data)
 {
     return(ZhengBaManagerK.Instance().ZhengBaSupport(data));
 }
예제 #7
0
        public void EventCallBackHandler(int eventType, params object[] args)
        {
            try
            {
                switch (eventType)
                {
                case (int)KuaFuEventTypes.NotifyWaitingRoleCount:
                {
                    if (args.Length == 2)
                    {
                        int rid   = (int)args[0];
                        int count = (int)args[1];
                        CoreInterface.GetEventSourceInterface().fireEvent(new KuaFuFuBenRoleCountEvent(rid, count), SceneType);
                    }
                }
                break;

                case (int)KuaFuEventTypes.RoleSignUp:
                case (int)KuaFuEventTypes.RoleStateChange:
                {
                    if (args.Length == 1)
                    {
                        KuaFuRoleData kuaFuRoleData = args[0] as KuaFuRoleData;
                        if (null != kuaFuRoleData)
                        {
                            UpdateRoleData(kuaFuRoleData, kuaFuRoleData.RoleId);
                        }
                    }
                }
                break;

                case (int)KuaFuEventTypes.UpdateAndNotifyEnterGame:
                {
                    if (args.Length == 1)
                    {
                        KuaFuRoleData kuaFuRoleData = args[0] as KuaFuRoleData;
                        if (null != kuaFuRoleData)
                        {
                            UpdateRoleData(kuaFuRoleData, kuaFuRoleData.RoleId);

                            TianTiFuBenData TianTiFuBenData = GetKuaFuFuBenData(kuaFuRoleData.GameId);
                            if (null != TianTiFuBenData && TianTiFuBenData.State == GameFuBenState.Start)
                            {
                                KuaFuServerLoginData kuaFuServerLoginData = new KuaFuServerLoginData()
                                {
                                    RoleId   = kuaFuRoleData.RoleId,
                                    GameType = kuaFuRoleData.GameType,
                                    GameId   = kuaFuRoleData.GameId,
                                    EndTicks = kuaFuRoleData.StateEndTicks,
                                };

                                kuaFuServerLoginData.ServerId = ClientInfo.ServerId;
                                lock (Mutex)
                                {
                                    KuaFuServerInfo kuaFuServerInfo;
                                    if (ServerIdServerInfoDict.TryGetValue(TianTiFuBenData.ServerId, out kuaFuServerInfo))
                                    {
                                        kuaFuServerLoginData.ServerIp   = kuaFuServerInfo.Ip;
                                        kuaFuServerLoginData.ServerPort = kuaFuServerInfo.Port;
                                    }
                                }

                                CoreInterface.GetEventSourceInterface().fireEvent(new KuaFuNotifyEnterGameEvent(kuaFuServerLoginData), SceneType);
                            }
                        }
                    }
                }
                break;

                case (int)KuaFuEventTypes.ZhengBaSupport:
                {
                    ZhengBaSupportLogData data = args[0] as ZhengBaSupportLogData;
                    if (null != data && data.FromServerId != ClientInfo.ServerId)
                    {
                        CoreInterface.GetEventSourceInterface().fireEvent(new KFZhengBaSupportEvent(data), (int)SceneUIClasses.KFZhengBa);
                    }
                }
                break;

                case (int)KuaFuEventTypes.ZhengBaPkLog:
                {
                    if (args.Length == 1)
                    {
                        ZhengBaPkLogData log = args[0] as ZhengBaPkLogData;
                        if (log != null)
                        {
                            CoreInterface.GetEventSourceInterface().fireEvent(new KFZhengBaPkLogEvent(log), (int)SceneUIClasses.KFZhengBa);
                        }
                    }
                }
                break;

                case (int)KuaFuEventTypes.ZhengBaNtfEnter:
                {
                    ZhengBaNtfEnterData data = args[0] as ZhengBaNtfEnterData;
                    lock (Mutex)
                    {
                        KuaFuServerInfo kuaFuServerInfo;
                        if (ServerIdServerInfoDict.TryGetValue(data.ToServerId, out kuaFuServerInfo))
                        {
                            data.ToServerIp   = kuaFuServerInfo.Ip;
                            data.ToServerPort = kuaFuServerInfo.Port;
                        }
                        else
                        {
                            LogManager.WriteLog(LogTypes.Error, string.Format("KuaFuEventTypes.ZhengBaNtfEnter not find kfserver={0}", data.ToServerId));
                        }
                    }
                    CoreInterface.GetEventSourceInterface().fireEvent(new KFZhengBaNtfEnterEvent(data), (int)SceneUIClasses.KFZhengBa);
                }
                break;

                case (int)KuaFuEventTypes.ZhengBaMirrorFight:
                {
                    ZhengBaMirrorFightData data = args[0] as ZhengBaMirrorFightData;
                    CoreInterface.GetEventSourceInterface().fireEvent(new KFZhengBaMirrorFightEvent(data), (int)SceneUIClasses.KFZhengBa);
                }
                break;

                case (int)KuaFuEventTypes.ZhengBaButtetinJoin:
                {
                    ZhengBaBulletinJoinData data = args[0] as ZhengBaBulletinJoinData;
                    CoreInterface.GetEventSourceInterface().fireEvent(new KFZhengBaBulletinJoinEvent(data), (int)SceneUIClasses.KFZhengBa);
                }
                break;

                case (int)KuaFuEventTypes.CoupleArenaCanEnter:
                {
                    CoreInterface.GetEventSourceInterface().fireEvent(
                        new CoupleArenaCanEnterEvent(args[0] as CoupleArenaCanEnterData), (int)SceneUIClasses.CoupleArena);
                }
                break;
                }
            }
            catch (Exception ex)
            {
                LogManager.WriteExceptionUseCache(ex.ToString());
            }
        }
예제 #8
0
        private void HandleLoadSupportLog(GameServerClient client, int nID, byte[] cmdParams, int count)
        {
            string cmdData = null;

            try
            {
                cmdData = new UTF8Encoding().GetString(cmdParams, 0, count);
            }
            catch (Exception)
            {
                LogManager.WriteLog(LogTypes.Error, string.Format("解析指令字符串错误, CMD={0}", (TCPGameServerCmds)nID), null, true);
                client.sendCmd(30767, "0");
                return;
            }
            string[] fields = cmdData.Split(new char[]
            {
                ':'
            });
            if (fields.Length != 2)
            {
                LogManager.WriteLog(LogTypes.Error, string.Format("指令参数个数错误, CMD={0}, Recv={1}, CmdData={2}", (TCPGameServerCmds)nID, fields.Length, cmdData), null, true);
                client.sendCmd(30767, "0");
            }
            else
            {
                int             month            = Convert.ToInt32(fields[0]);
                int             maxNum           = Convert.ToInt32(fields[1]);
                List <int>      toUnionGropuList = new List <int>();
                string          sql    = string.Format("SELECT DISTINCT(to_union_group) FROM t_zhengba_support_log WHERE `month`={0}", month);
                MySQLDataReader reader = this.ExecSelect(sql);
                while (reader != null && reader.Read())
                {
                    int toUnionGroup = Convert.ToInt32(reader["to_union_group"].ToString());
                    toUnionGropuList.Add(toUnionGroup);
                }
                Dictionary <int, List <ZhengBaSupportLogData> > supportLogs = new Dictionary <int, List <ZhengBaSupportLogData> >();
                foreach (int g in toUnionGropuList)
                {
                    sql    = string.Format("SELECT from_rid,from_zoneid,from_rolename,support_type,to_union_group,to_group,time,month,rank_of_day,from_serverid FROM t_zhengba_support_log WHERE month={0} AND `to_union_group`={1} ORDER BY `time` DESC limit {2};", month, g, maxNum);
                    reader = this.ExecSelect(sql);
                    while (reader != null && reader.Read())
                    {
                        int toUnionGroup = Convert.ToInt32(reader["to_union_group"].ToString());
                        List <ZhengBaSupportLogData> LogList = null;
                        if (!supportLogs.TryGetValue(toUnionGroup, out LogList))
                        {
                            LogList = (supportLogs[toUnionGroup] = new List <ZhengBaSupportLogData>());
                        }
                        ZhengBaSupportLogData log = new ZhengBaSupportLogData();
                        log.FromRoleId   = Convert.ToInt32(reader["from_rid"].ToString());
                        log.FromZoneId   = Convert.ToInt32(reader["from_zoneid"].ToString());
                        log.FromRolename = reader["from_rolename"].ToString();
                        log.SupportType  = Convert.ToInt32(reader["support_type"].ToString());
                        log.ToUnionGroup = toUnionGroup;
                        log.ToGroup      = Convert.ToInt32(reader["to_group"].ToString());
                        log.Month        = Convert.ToInt32(reader["month"].ToString());
                        log.RankOfDay    = Convert.ToInt32(reader["rank_of_day"].ToString());
                        log.FromServerId = Convert.ToInt32(reader["from_serverid"].ToString());
                        log.Time         = DateTime.Parse(reader["time"].ToString());
                        LogList.Add(log);
                    }
                }
                foreach (List <ZhengBaSupportLogData> logList in supportLogs.Values)
                {
                    logList.Reverse();
                }
                client.sendCmd <Dictionary <int, List <ZhengBaSupportLogData> > >(nID, supportLogs);
            }
        }
예제 #9
0
 public KFZhengBaSupportEvent(ZhengBaSupportLogData data)
     : base((int)GlobalEventTypes.KFZhengBaSupportLog)
 {
     this.Data = data;
 }