Exemplo n.º 1
0
 public static TCPProcessCmdResults ProcessUpdateOrnamentDataCmd(DBManager dbMgr, TCPOutPacketPool pool, int nID, byte[] data, int count, out TCPOutPacket tcpOutPacket)
 {
     tcpOutPacket = null;
     try
     {
         OrnamentUpdateDbData dbData     = DataHelper.BytesToObject <OrnamentUpdateDbData>(data, 0, count);
         DBRoleInfo           dbRoleInfo = dbMgr.GetDBRoleInfo(ref dbData.RoleId);
         if (null == dbRoleInfo)
         {
             LogManager.WriteLog(LogTypes.Error, string.Format("发起请求的角色不存在,CMD={0}, RoleID={1}", (TCPGameServerCmds)nID, dbData.RoleId), null, true);
             tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, "0", 30767);
             return(TCPProcessCmdResults.RESULT_DATA);
         }
         lock (dbRoleInfo)
         {
             if (null == dbRoleInfo.OrnamentDataDict)
             {
                 dbRoleInfo.OrnamentDataDict = new Dictionary <int, OrnamentData>();
             }
             dbRoleInfo.OrnamentDataDict[dbData.Data.ID] = dbData.Data;
         }
         DBWriter.UpdateOramentData(dbMgr, dbData);
         tcpOutPacket = DataHelper.ObjectToTCPOutPacket <bool>(true, pool, nID);
         return(TCPProcessCmdResults.RESULT_DATA);
     }
     catch (Exception ex)
     {
         DataHelper.WriteFormatExceptionLog(ex, "", false, false);
     }
     tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, "0", 30767);
     return(TCPProcessCmdResults.RESULT_DATA);
 }
        protected override void OnStart(string[] args)
        {
            try
            {
                Timer_Cleanup.Interval = Configuration.CleanupTimerInterval;
                Timer_Cleanup.Enabled  = true;


                Timer_Parse.Interval = Configuration.ParseTimerInterval;
                Timer_Parse.Enabled  = true;

                m_DBWriter       = new DBWriter();
                m_RawDataManager = RawDataManager.GetInstance(Configuration);

                var ipLocalTCP = new IPEndPoint(IPAddress.Any, Configuration.PortNumberData);
                m_MainTCPSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

                m_MainTCPSocket.Bind(ipLocalTCP);
                m_MainTCPSocket.Listen(Configuration
                                       .PendingConnectionQueue); // param is backlog of connections to allow
                m_MainTCPSocket.BeginAccept(new AsyncCallback(OnTCPConnect), null);
            }
            catch (Exception e)
            {
                Logger.GetInstance().Exception("Failed to create TCP listener Socket", e, string.Empty);
            }
        }
Exemplo n.º 3
0
        public static void DoDestroyBangHui(DBManager dbMgr, int bhid)
        {
            lock (Global.BangHuiMutex)
            {
                DBWriter.DeleteBangHui(dbMgr, bhid);
                GameDBManager.BangHuiJunQiMgr.RemoveBangHuiJunQi(bhid);
                DBWriter.ClearAllRoleBangHuiInfo(dbMgr, bhid);
                List <DBRoleInfo> dbRoleInfoList = dbMgr.DBRoleMgr.GetCachingDBRoleInfoListByFaction(bhid);
                if (null != dbRoleInfoList)
                {
                    for (int i = 0; i < dbRoleInfoList.Count; i++)
                    {
                        dbRoleInfoList[i].Faction = 0;
                        dbRoleInfoList[i].BHName  = "";
                        dbRoleInfoList[i].BHZhiWu = 0;
                    }
                }
            }
            DBWriter.ClearBHLingDiByID(dbMgr, bhid);
            GameDBManager.BangHuiLingDiMgr.ClearBangHuiLingDi(bhid);
            ZhanMengShiJianManager.getInstance().onZhanMengJieSan(bhid);
            string gmCmdData = string.Format("-synclingdi", new object[0]);

            ChatMsgManager.AddGMCmdChatMsg(-1, gmCmdData);
        }
Exemplo n.º 4
0
        public bool RemovePreDeleteRole(DBUserInfo dbUserInfo, DBRoleInfo dbRoleInfo)
        {
            bool result;

            lock (this._PreDeleteRoleDict)
            {
                string    userID  = dbUserInfo.UserID;
                int       roleID  = dbRoleInfo.RoleID;
                DBManager dbMgr   = DBManager.getInstance();
                bool      ret     = false;
                bool      hasrole = DBQuery.GetUserRole(dbMgr, userID, roleID);
                if (hasrole)
                {
                    ret = DBWriter.UnPreRemoveRole(dbMgr, roleID);
                }
                if (!ret)
                {
                    result = false;
                }
                else
                {
                    this._PreDeleteRoleDict.Remove(roleID);
                    lock (dbUserInfo)
                    {
                        int index = dbUserInfo.ListRoleIDs.IndexOf(roleID);
                        if (index >= 0 && index < dbUserInfo.ListRoleIDs.Count)
                        {
                            dbUserInfo.ListRolePreRemoveTime[index] = "";
                        }
                    }
                    result = true;
                }
            }
            return(result);
        }
Exemplo n.º 5
0
        public void processCmdUpdateBuildLog(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
            {
                string          TimeLog = fields[0];
                BuildingLogType LogType = (BuildingLogType)Convert.ToInt32(fields[1]);
                DBManager       dbMgr   = DBManager.getInstance();
                DBWriter.UpdateBuildingLog(dbMgr, TimeLog, LogType);
                string strcmd = string.Format("{0}", 0);
                client.sendCmd(nID, strcmd);
            }
        }
Exemplo n.º 6
0
        private void BuildManagers()
        {
            AccountManager = new AccountManager(APIWrapper);

            ManagedSecuritiesManager = new ManagedSecuritiesManager(APIWrapper);
            List <ManagedSecurity> activeUNLList;

            UNLManagerDic = new Dictionary <string, SimpleBaseLogic>();
            using (var session = DBSessionFactory.Instance.OpenSession())
            {
                activeUNLList = session.Query <ManagedSecurity>()
                                .Where(contract => contract.IsActive && contract.OptionChain).ToList();
            }
            foreach (var managedSecurity in activeUNLList)
            {
                var unlManager = new UNLManager(managedSecurity, APIWrapper, Distributer);
                UNLManagerDic.Add(managedSecurity.Symbol, unlManager);
                unlManager.PositionNeedToOptimized += UNLManagerOnPositionNeedToOptimized;
            }
            MarginManager = new MarginManager();

            DbWriter = new DBWriter(Configurations.Application.DBWritePeriod);
            Distributer.SetManagers(UNLManagerDic, AccountManager, ManagedSecuritiesManager, DbWriter, MarginManager);
            //UIDataManager = new UIDataManager();
        }
Exemplo n.º 7
0
        public static void RecalcBangHuiNumLevel(DBManager dbMgr)
        {
            long ticks = DateTime.Now.Ticks;

            if (ticks - BangHuiNumLevelMgr.LastQueryTimeTicks >= BangHuiNumLevelMgr.MaxQueryTimeSlotTicks)
            {
                BangHuiNumLevelMgr.LastQueryTimeTicks = ticks;
                GameDBManager.BangHuiListMgr.RefreshBangHuiListData(dbMgr);
                BangHuiListData bangHuiListData = GameDBManager.BangHuiListMgr.GetBangHuiListData(dbMgr, -1, 0, 10000);
                if (bangHuiListData != null && null != bangHuiListData.BangHuiItemDataList)
                {
                    List <BangHuiNumLevelItem> bangHuiNumLevelItemList = new List <BangHuiNumLevelItem>();
                    for (int i = 0; i < bangHuiListData.BangHuiItemDataList.Count; i++)
                    {
                        int  totalNum;
                        int  totalLevel;
                        long totalCombatforce;
                        if (DBQuery.QueryBHMemberSumData(bangHuiListData.BangHuiItemDataList[i].BHID, out totalNum, out totalLevel, out totalCombatforce))
                        {
                            bangHuiNumLevelItemList.Add(new BangHuiNumLevelItem
                            {
                                BHID             = bangHuiListData.BangHuiItemDataList[i].BHID,
                                TotalNum         = totalNum,
                                TotalLevel       = totalLevel,
                                TotalCombatForce = (int)Math.Min(totalCombatforce, 2147483647L)
                            });
                        }
                    }
                    for (int i = 0; i < bangHuiNumLevelItemList.Count; i++)
                    {
                        DBWriter.UpdateBangHuiNumLevel(dbMgr, bangHuiNumLevelItemList[i].BHID, bangHuiNumLevelItemList[i].TotalNum, bangHuiNumLevelItemList[i].TotalLevel, bangHuiNumLevelItemList[i].TotalCombatForce);
                    }
                }
            }
        }
Exemplo n.º 8
0
        /// <summary>
        /// 每周日凌晨清空扬州城中的税收
        /// </summary>
        public void ProcessClearYangZhouTotalTax(DBManager dbMgr)
        {
            long nowTicks = DateTime.Now.Ticks;

            if (nowTicks - LastClearYangZhouTotalTaxTicks < (60L * 1000L * 10000L))
            {
                return;
            }

            LastClearYangZhouTotalTaxTicks = nowTicks;
            int thisWeekID = WeekOfYear();

            if (thisWeekID == ThisWeekID)
            {
                return;
            }

            ThisWeekID = thisWeekID;

            //清空指定帮会的领地的税收
            ClearBangHuiLingDiByID((int)LingDiIDs.YouZhou);

            //清空某个帮会占领的领地税收
            DBWriter.ClearBHLingDiTotalTaxByID(dbMgr, (int)LingDiIDs.YouZhou);
        }
        public static TCPProcessCmdResults ProcessDBUpdateUserLimitGoodsUsedNumCmd(DBManager dbMgr, TCPOutPacketPool pool, int nID, byte[] data, int count, out TCPOutPacket tcpOutPacket)
        {
            tcpOutPacket = null;
            string cmdData = null;

            try
            {
                cmdData = new UTF8Encoding().GetString(data, 0, count);
            }
            catch (Exception)
            {
                LogManager.WriteLog(LogTypes.Error, string.Format("解析指令字符串错误, CMD={0}", (TCPGameServerCmds)nID), null, true);
                tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, "0", 30767);
                return(TCPProcessCmdResults.RESULT_DATA);
            }
            try
            {
                string[] fields = cmdData.Split(new char[]
                {
                    ':'
                });
                if (fields.Length != 5)
                {
                    LogManager.WriteLog(LogTypes.Error, string.Format("指令参数个数错误, CMD={0}, Recv={1}, CmdData={2}", (TCPGameServerCmds)nID, fields.Length, cmdData), null, true);
                    tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, "0", 30767);
                    return(TCPProcessCmdResults.RESULT_DATA);
                }
                int        roleID     = Convert.ToInt32(fields[0]);
                int        goodsID    = Convert.ToInt32(fields[1]);
                int        dayID      = Convert.ToInt32(fields[2]);
                int        usedNum    = Convert.ToInt32(fields[3]);
                string     stage      = fields[4];
                DBRoleInfo dbRoleInfo = dbMgr.GetDBRoleInfo(ref roleID);
                if (null == dbRoleInfo)
                {
                    LogManager.WriteLog(LogTypes.Error, string.Format("发起请求的角色不存在,CMD={0}, RoleID={1}", (TCPGameServerCmds)nID, roleID), null, true);
                    tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, "0", 30767);
                    return(TCPProcessCmdResults.RESULT_DATA);
                }
                int    ret = DBWriter.AddUserLimitGoodsBuyItem(dbMgr, dbRoleInfo.UserID, goodsID, dayID, usedNum, stage);
                string strcmd;
                if (ret < 0)
                {
                    strcmd = string.Format("{0}:{1}", roleID, -1);
                    LogManager.WriteLog(LogTypes.Error, string.Format("添加限购物品的历史记录失败,CMD={0}, RoleID={1}", (TCPGameServerCmds)nID, roleID), null, true);
                }
                else
                {
                    strcmd = string.Format("{0}:{1}", roleID, 0);
                }
                tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, strcmd, nID);
                return(TCPProcessCmdResults.RESULT_DATA);
            }
            catch (Exception ex)
            {
                DataHelper.WriteFormatExceptionLog(ex, "", false, false);
            }
            tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, "0", 30767);
            return(TCPProcessCmdResults.RESULT_DATA);
        }
Exemplo n.º 10
0
        /// <summary>
        /// 扫描充值流水生成二进制日志
        /// </summary>
        public static void ScanInputLogToDBLog(DBManager dbMgr)
        {
            //if (!GameDBManager.DBEventsWriter.Enable)
            //{
            //    return;
            //}

            long nowTicks = DateTime.Now.Ticks / 10000;

            if (nowTicks - LastScanInputLogTicks < (30 * 1000))
            {
                return;
            }

            LastScanInputLogTicks = nowTicks;

            //上次扫描充值流水的ID
            if (LastScanID < 0)
            {
                LastScanID = DBQuery.QueryLastScanInputLogID(dbMgr);
            }

            //查询充值记录,并且写入日志中
            int newLastScanID = DBQuery.ScanInputLogFromTable(dbMgr, LastScanID);

            if (newLastScanID != LastScanID)
            {
                LastScanID = newLastScanID;
                DBWriter.UpdateLastScanInputLogID(dbMgr, LastScanID);
            }
        }
Exemplo n.º 11
0
        public void processCmdUpdateBuildData(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 != 9)
            {
                LogManager.WriteLog(LogTypes.Error, string.Format("指令参数个数错误, CMD={0}, Recv={1}, CmdData={2}", (TCPGameServerCmds)nID, fields.Length, cmdData), null, true);
                client.sendCmd(30767, "0");
            }
            else
            {
                BuildingData myBuildData = new BuildingData();
                int          roleID      = Convert.ToInt32(fields[0]);
                myBuildData.BuildId   = Convert.ToInt32(fields[1]);
                myBuildData.BuildLev  = Convert.ToInt32(fields[2]);
                myBuildData.BuildExp  = Convert.ToInt32(fields[3]);
                myBuildData.TaskID_1  = Convert.ToInt32(fields[5]);
                myBuildData.TaskID_2  = Convert.ToInt32(fields[6]);
                myBuildData.TaskID_3  = Convert.ToInt32(fields[7]);
                myBuildData.TaskID_4  = Convert.ToInt32(fields[8]);
                myBuildData.BuildTime = fields[4].Replace('$', ':');
                DBManager  dbMgr      = DBManager.getInstance();
                DBRoleInfo dbRoleInfo = dbMgr.GetDBRoleInfo(ref roleID);
                if (null == dbRoleInfo)
                {
                    LogManager.WriteLog(LogTypes.Error, string.Format("发起请求的角色不存在,CMD={0}, RoleID={1}", (TCPGameServerCmds)nID, roleID), null, true);
                    client.sendCmd(30767, "0");
                }
                else
                {
                    lock (dbRoleInfo)
                    {
                        if (null == dbRoleInfo.BuildingDataList)
                        {
                            dbRoleInfo.BuildingDataList = new List <BuildingData>();
                        }
                        this.UpdateBuildData(dbRoleInfo.BuildingDataList, myBuildData);
                    }
                    DBWriter.UpdateBuildingData(dbMgr, roleID, myBuildData);
                    string strcmd = string.Format("{0}", 0);
                    client.sendCmd(nID, strcmd);
                }
            }
        }
Exemplo n.º 12
0
        /// <summary>
        /// 新区充值返利领取
        /// </summary>
        /// <param name="dbMgr"></param>
        /// <param name="pool"></param>
        /// <param name="nID"></param>
        /// <param name="data"></param>
        /// <param name="count"></param>
        /// <param name="tcpOutPacket"></param>
        /// <returns></returns>
        private static TCPProcessCmdResults GetNewFanliAward(DBManager dbMgr, TCPOutPacketPool pool, int nID, int roleID, int activeid, string fromDate, string todate, List <int> minGateValueList, out TCPOutPacket tcpOutPacket)
        {
            tcpOutPacket = null;
            string cmdData = null;
            string strcmd  = "";

            try
            {
                DBRoleInfo roleInfo = dbMgr.GetDBRoleInfo(roleID);

                if (null == roleInfo)
                {
                    strcmd       = string.Format("{0}:{1}:{2}", -1001, roleID, activeid);
                    tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, strcmd, nID);
                    return(TCPProcessCmdResults.RESULT_DATA);
                }

                int roleYuanBaoInPeriod = NewZoneActiveMgr.ComputTotalFanliValue(dbMgr, roleInfo, activeid, fromDate, todate, minGateValueList);


                DBUserInfo userInfo = dbMgr.GetDBUserInfo(roleInfo.UserID);

                //避免同一用户账号同时多次操作
                lock (userInfo)
                {
                    if (roleYuanBaoInPeriod > 0)
                    {
                        //活动时间取前一天的
                        DateTime sub1DayDateTime = Global.GetAddDaysDataTime(DateTime.Now, -1, true);

                        DateTime startTime     = new DateTime(sub1DayDateTime.Year, sub1DayDateTime.Month, sub1DayDateTime.Day, 0, 0, 0);
                        DateTime endTime       = new DateTime(sub1DayDateTime.Year, sub1DayDateTime.Month, sub1DayDateTime.Day, 23, 59, 59);
                        string   huoDongKeyStr = Global.GetHuoDongKeyString(startTime.ToString("yyyy-MM-dd HH:mm:ss"), endTime.ToString("yyyy-MM-dd HH:mm:ss"));
                        //更新已领取状态
                        int ret = DBWriter.AddHongDongAwardRecordForUser(dbMgr, roleInfo.UserID, (int)(ActivityTypes.NewZoneFanli), huoDongKeyStr, 1, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                        if (ret < 0)
                        {
                            strcmd       = string.Format("{0}:{1}:{2}", -1008, roleID, activeid);
                            tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, strcmd, nID);
                            return(TCPProcessCmdResults.RESULT_DATA);
                        }
                    }
                }

                strcmd = string.Format("{0}:{1}:{2}", 1, roleYuanBaoInPeriod, activeid);

                tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, strcmd, nID);
                return(TCPProcessCmdResults.RESULT_DATA);
            }
            catch (Exception ex)
            {
                DataHelper.WriteFormatExceptionLog(ex, "", false);
            }

            tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, "0", (int)TCPGameServerCmds.CMD_DB_ERR_RETURN);
            return(TCPProcessCmdResults.RESULT_DATA);
        }
Exemplo n.º 13
0
        public TCPProcessCmdResults ProcGetJieriGiveKingAward(DBManager dbMgr, TCPOutPacketPool pool, int nID, byte[] data, int count, out TCPOutPacket tcpOutPacket)
        {
            tcpOutPacket = null;
            string cmdData = null;

            try
            {
                cmdData = new UTF8Encoding().GetString(data, 0, count);
            }
            catch (Exception)
            {
                LogManager.WriteLog(LogTypes.Error, string.Format("解析指令字符串错误, CMD={0}", (TCPGameServerCmds)nID), null, true);
                tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, "0", 30767);
                return(TCPProcessCmdResults.RESULT_DATA);
            }
            try
            {
                string[] fields = cmdData.Split(new char[]
                {
                    ':'
                });
                if (fields.Length != 3)
                {
                    LogManager.WriteLog(LogTypes.Error, string.Format("指令参数个数错误, CMD={0}, Recv={1}, CmdData={2}", (TCPGameServerCmds)nID, fields.Length, cmdData), null, true);
                    tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, "0", 30767);
                    return(TCPProcessCmdResults.RESULT_DATA);
                }
                int        roleID   = Convert.ToInt32(fields[0]);
                string     fromDate = fields[1].Replace('$', ':');
                string     toDate   = fields[2].Replace('$', ':');
                DBRoleInfo roleInfo = dbMgr.GetDBRoleInfo(ref roleID);
                if (null == roleInfo)
                {
                    tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, string.Format("{0}", -1001), nID);
                    return(TCPProcessCmdResults.RESULT_DATA);
                }
                string huoDongKeyStr = Global.GetHuoDongKeyString(fromDate, toDate);
                lock (roleInfo)
                {
                    int ret = DBWriter.AddHongDongAwardRecordForRole(dbMgr, roleInfo.RoleID, roleInfo.ZoneID, 51, huoDongKeyStr, 1, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                    if (ret < 0)
                    {
                        tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, string.Format("{0}", -1008), nID);
                        return(TCPProcessCmdResults.RESULT_DATA);
                    }
                }
                tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, string.Format("{0}", 1), nID);
                return(TCPProcessCmdResults.RESULT_DATA);
            }
            catch (Exception ex)
            {
                DataHelper.WriteFormatExceptionLog(ex, "", false, false);
            }
            tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, "0", 30767);
            return(TCPProcessCmdResults.RESULT_DATA);
        }
Exemplo n.º 14
0
        public static void ClearOverdueMails(DBManager dbMgr)
        {
            long nowTicks = DateTime.Now.Ticks / 10000L;

            if (nowTicks - UserMailManager.LastClearMailTicks >= 123428447L)
            {
                UserMailManager.LastClearMailTicks = nowTicks;
                DBWriter.ClearOverdueMails(dbMgr, DateTime.Now.AddDays(-15.0));
            }
        }
Exemplo n.º 15
0
 public void SetManagers(Dictionary <string, SimpleBaseLogic> unlManagerDic,
                         AccountManager accountManager, ManagedSecuritiesManager managedSecuritiesManager,
                         DBWriter writer, MarginManager marginManager)
 {
     _unlManagersDic           = unlManagerDic;
     _accountManager           = accountManager;
     _managedSecuritiesManager = managedSecuritiesManager;
     _dbWriter     = writer;
     MarginManager = marginManager;
 }
Exemplo n.º 16
0
        /// <summary>
        /// 使用某个礼品码
        /// </summary>
        /// <param name="dbMgr"></param>
        /// <param name="fileName"></param>
        public static int UseLiPinMa(DBManager dbMgr, int roleID, int songLiID, string liPinMa, bool insertLiPinMa = false)
        {
            if (null == _LiPinMaDict)
            {
                return(-1010);
            }
            Dictionary <string, LiPinMaItem> liPinMaDict = _LiPinMaDict; //先得到

            int usedNum = 0;

            liPinMa = liPinMa.ToUpper(); //转成大写

            //防止多用户重入
            lock (Mutex)
            {
                LiPinMaItem liPinMaItem = null;
                if (!liPinMaDict.TryGetValue(liPinMa, out liPinMaItem))
                {
                    return(-1020);
                }

                if (liPinMaItem.HuodongID != songLiID)
                {
                    return(-1030);
                }

                if (liPinMaItem.MaxNum > 0 && liPinMaItem.UsedNum >= liPinMaItem.MaxNum)
                {
                    return(-1040);
                }

                //如果不允许平台内的礼品码重复领取
                if (liPinMaItem.PingTaiRepeat <= 0)
                {
                    //通过活动ID查询平台ID
                    int pingTaiID = DBQuery.QueryPingTaiIDByHuoDongID(dbMgr, liPinMaItem.HuodongID, roleID, liPinMaItem.PingTaiID);
                    if (pingTaiID == liPinMaItem.PingTaiID)
                    {
                        return(-10000);
                    }
                }

                //添加使用礼品码的平台记录
                DBWriter.AddUsedLiPinMa(dbMgr, liPinMaItem.HuodongID, liPinMaItem.LiPinMa, liPinMaItem.PingTaiID, roleID);

                liPinMaItem.UsedNum++;
                usedNum = liPinMaItem.UsedNum;
            }

            //修改一个礼品码的使用次数
            DBWriter.UpdateLiPinMaUsedNum(dbMgr, liPinMa, usedNum);

            return(0);
        }
Exemplo n.º 17
0
        public ExtractResult Get(string dbName, string tableName)
        {
            string connString = dbConnConfig.ConnectionString;

            #region Setup google StorageClient
            var credentialsPath  = "auth\\gd-hiring.json";
            var credentialsJson  = System.IO.File.ReadAllText(credentialsPath);
            var googleCredential = GoogleCredential.FromJson(credentialsJson);
            var storageClient    = StorageClient.Create(googleCredential);
            storageClient.Service.HttpClient.Timeout = new TimeSpan(1, 0, 0);

            string bucketName = "gd-hiring-tri";
            #endregion

            List <string> retVal = new List <string>();
            try
            {
                using (DataContext db = new DataContext(connString))
                {
                    using (var reader = db.ReadTable(dbName, tableName))
                    {
                        string filename = string.Format("{0}.{1}_{2:yyyy-MM-dd}.tsv", dbName, tableName, DateTime.Now);
                        DBWriter.WriteToFile(reader, filename);
                        var result = DBWriter.WriteToGCS(storageClient, bucketName, filename);

                        if (result != null)
                        {
                            return(new ExtractResult()
                            {
                                SelfLink = result.SelfLink,
                                MediaLink = result.MediaLink,
                                Status = "200"
                            });
                        }
                        else
                        {
                            return(new ExtractResult()
                            {
                                Error = "Data not found!",
                                Status = "404"
                            });
                        }
                    }
                }
            }
            catch (Exception e)
            {
                return(new ExtractResult()
                {
                    Error = e.Message,
                    Status = "500"
                });
            }
        }
Exemplo n.º 18
0
        public static int updateWanMoTaData(DBManager dbMgr, int nRoleID, string[] fields, int startIndex)
        {
            int ret = -1;

            using (MyDbConnection3 conn = new MyDbConnection3(false))
            {
                string cmdText = DBWriter.FormatUpdateSQL(nRoleID, fields, startIndex, WanMoTaDBController._fieldNames, "t_wanmota", WanMoTaDBController._fieldTypes, "roleID");
                ret = conn.ExecuteNonQuery(cmdText, 0);
            }
            return(ret);
        }
Exemplo n.º 19
0
        public static bool UpdateMerlinData(DBManager dbMgr, int nRoleID, string[] fields, int nStartIndex)
        {
            bool result;

            if (fields == null || fields.Length != 15 || nStartIndex >= fields.Length)
            {
                result = false;
            }
            else
            {
                bool            ret  = false;
                MySQLConnection conn = null;
                try
                {
                    conn = dbMgr.DBConns.PopDBConnection();
                    if (fields[6] != "*")
                    {
                        string endTime = new DateTime(Convert.ToInt64(fields[6]) * 10000L).ToString("yyyy-MM-dd HH:mm:ss");
                        fields[6] = endTime;
                    }
                    for (int i = 7; i <= 14; i++)
                    {
                        if (fields[i] != "*")
                        {
                            fields[i] = (Convert.ToDouble(fields[i]) * 100.0).ToString();
                        }
                    }
                    string cmdText = DBWriter.FormatUpdateSQL(nRoleID, fields, nStartIndex, MerlinDBOperate.t_fieldNames, "t_merlin_magic_book", MerlinDBOperate.t_fieldTypes, "roleID");
                    GameDBManager.SystemServerSQLEvents.AddEvent(string.Format("+SQL: {0}", cmdText), EventLevels.Important);
                    MySQLCommand cmd = new MySQLCommand(cmdText, conn);
                    try
                    {
                        cmd.ExecuteNonQuery();
                        ret = true;
                    }
                    catch (Exception)
                    {
                        LogManager.WriteLog(LogTypes.Error, string.Format("写入数据库失败: {0}", cmdText), null, true);
                    }
                    cmd.Dispose();
                    cmd = null;
                }
                finally
                {
                    if (null != conn)
                    {
                        dbMgr.DBConns.PushDBConnection(conn);
                    }
                }
                result = ret;
            }
            return(result);
        }
Exemplo n.º 20
0
 private static int _ProcessSuperInputFanLi(DBManager dbMgr, DBUserInfo dbUserInfo, SingleChargeData chargeData, int addUserMoney, int ChargeID, string chargeTm)
 {
     try
     {
         string SuperInputFanLiKey = chargeData.SuperInputFanLiKey;
         if (string.IsNullOrEmpty(SuperInputFanLiKey))
         {
             return(0);
         }
         string[] KeyFileds = SuperInputFanLiKey.Split(new char[]
         {
             '_'
         });
         if (KeyFileds.Length != 2)
         {
             return(0);
         }
         DateTime startTime = DateTime.Parse(KeyFileds[0]);
         DateTime endTime   = DateTime.Parse(KeyFileds[1]);
         if (TimeUtil.NowDateTime() < startTime || TimeUtil.NowDateTime() > endTime)
         {
             return(0);
         }
         JieriSuperInputData configData = UserMoneyMgr.GetJieriSuperInputDataByChargeTm(chargeData, chargeTm);
         if (null == configData)
         {
             return(0);
         }
         string beginStr     = configData.BeginTime.ToString("yyyy-MM-dd HH:mm:ss").Replace(':', '$');
         string endStr       = configData.EndTime.ToString("yyyy-MM-dd HH:mm:ss").Replace(':', '$');
         string keyStr       = string.Format("res_{0}_{1}_{2}", beginStr, endStr, configData.ID);
         long   reservetimes = 0L;
         string lastgettime  = "";
         int    ret          = DBQuery.GetAwardHistoryForUser(dbMgr, dbUserInfo.UserID, 71, keyStr, out reservetimes, out lastgettime);
         if (reservetimes <= 0L)
         {
             return(0);
         }
         reservetimes -= 1L;
         lastgettime   = chargeTm;
         ret           = DBWriter.UpdateHongDongAwardRecordForUser(dbMgr, dbUserInfo.UserID, 71, keyStr, reservetimes, lastgettime);
         if (ret < 0)
         {
             ret = DBWriter.AddHongDongAwardRecordForUser(dbMgr, dbUserInfo.UserID, 71, keyStr, reservetimes, lastgettime);
         }
         return(configData.ID);
     }
     catch (Exception ex)
     {
         LogManager.WriteException("_ProcessSuperInputFanLi:" + ex.ToString());
     }
     return(0);
 }
        private bool CheckHaveUpGradeItem(string strReqItem, DBManager dbMgr, int nBangHuiID, int nRoleID, int nToLevel)
        {
            BangHuiBagData dataBangHuiBag = DBQuery.QueryBangHuiBagDataByID(dbMgr, nBangHuiID);

            string[] arrReqItems = strReqItem.Split(new char[]
            {
                '|'
            });
            int[] arrItemNums = new int[5];
            for (int i = 0; i < arrItemNums.Length; i++)
            {
                arrItemNums[i] = 0;
            }
            for (int i = 0; i < arrReqItems.Length; i++)
            {
                string[] arrItemInfo = arrReqItems[i].Split(new char[]
                {
                    ','
                });
                if (2 == arrItemInfo.Length)
                {
                    arrItemNums[i] = int.Parse(arrItemInfo[1]);
                }
            }
            bool result;

            if (dataBangHuiBag.Goods1Num < arrItemNums[0])
            {
                result = false;
            }
            else if (dataBangHuiBag.Goods2Num < arrItemNums[1])
            {
                result = false;
            }
            else if (dataBangHuiBag.Goods3Num < arrItemNums[2])
            {
                result = false;
            }
            else if (dataBangHuiBag.Goods4Num < arrItemNums[3])
            {
                result = false;
            }
            else if (dataBangHuiBag.Goods5Num < arrItemNums[4])
            {
                result = false;
            }
            else
            {
                DBWriter.UpdateBangHuiQiLevel(dbMgr, nBangHuiID, nToLevel, arrItemNums[0], arrItemNums[1], arrItemNums[2], arrItemNums[3], arrItemNums[4], 0);
                result = true;
            }
            return(result);
        }
Exemplo n.º 22
0
        public static void ClearBangHuiLingDi(DBManager dbMgr, int bhid)
        {
            lock (Global.BangHuiMutex)
            {
                GameDBManager.BangHuiJunQiMgr.RemoveBangHuiJunQi(bhid);
            }
            DBWriter.ClearBHLingDiByID(dbMgr, bhid);
            GameDBManager.BangHuiLingDiMgr.ClearBangHuiLingDi(bhid);
            string gmCmdData = string.Format("-synclingdi", new object[0]);

            ChatMsgManager.AddGMCmdChatMsg(-1, gmCmdData);
        }
Exemplo n.º 23
0
        public static void WriteTotalOnlineNumToDB(DBManager dbMgr)
        {
            DateTime dateTime = DateTime.Now;
            long     nowTicks = dateTime.Ticks / 10000L;

            if (nowTicks - OnlineUserNumMgr.LastWriteDBTicks >= 120000L)
            {
                OnlineUserNumMgr.LastWriteDBTicks = nowTicks;
                int    totalNum         = LineManager.GetTotalOnlineNum();
                string strMapOnlineInfo = LineManager.GetMapOnlineNum();
                DBWriter.AddNewOnlineNumItem(dbMgr, totalNum, dateTime, strMapOnlineInfo);
            }
        }
        private bool CheckHaveUpGradeItem(String strReqItem, DBManager dbMgr, int nBangHuiID, int nRoleID, int nToLevel)
        {
            BangHuiBagData dataBangHuiBag = DBQuery.QueryBangHuiBagDataByID(dbMgr, nBangHuiID);

            String[] arrReqItems = strReqItem.Split('|');
            int[]    arrItemNums = new int[5];
            for (int i = 0; i < arrItemNums.Length; i++)
            {
                arrItemNums[i] = 0;
            }

            for (int i = 0; i < arrReqItems.Length; i++)
            {
                String[] arrItemInfo = arrReqItems[i].Split(',');
                if (2 != arrItemInfo.Length)
                {
                    continue;
                }

                arrItemNums[i] = int.Parse(arrItemInfo[1]);
            }

            if (dataBangHuiBag.Goods1Num < arrItemNums[0])
            {
                return(false);
            }

            if (dataBangHuiBag.Goods2Num < arrItemNums[1])
            {
                return(false);
            }

            if (dataBangHuiBag.Goods3Num < arrItemNums[2])
            {
                return(false);
            }

            if (dataBangHuiBag.Goods4Num < arrItemNums[3])
            {
                return(false);
            }

            if (dataBangHuiBag.Goods5Num < arrItemNums[4])
            {
                return(false);
            }

            DBWriter.UpdateBangHuiQiLevel(dbMgr, nBangHuiID, nToLevel, arrItemNums[0], arrItemNums[1], arrItemNums[2], arrItemNums[3], arrItemNums[4], 0);
            return(true);
        }
Exemplo n.º 25
0
        public void ProcessClearYangZhouTotalTax(DBManager dbMgr)
        {
            long nowTicks = DateTime.Now.Ticks;

            if (nowTicks - this.LastClearYangZhouTotalTaxTicks >= 600000000L)
            {
                this.LastClearYangZhouTotalTaxTicks = nowTicks;
                int thisWeekID = BangHuiLingDiManager.WeekOfYear();
                if (thisWeekID != this.ThisWeekID)
                {
                    this.ThisWeekID = thisWeekID;
                    this.ClearBangHuiLingDiByID(3);
                    DBWriter.ClearBHLingDiTotalTaxByID(dbMgr, 3);
                }
            }
        }
Exemplo n.º 26
0
 private void dbGoodsBakTableWorker_DoWork(object sender, EventArgs e)
 {
     try
     {
         long ticks = TimeUtil.NOW();
         if (ticks - this.LastdbGoodsBakTableWorkerTicks >= 30000L)
         {
             this.LastdbGoodsBakTableWorkerTicks = ticks;
             DBWriter.SwitchGoodsBackupTable(DBManager.getInstance());
         }
     }
     catch (Exception ex)
     {
         DataHelper.WriteFormatExceptionLog(ex, "dbWriterWorker_DoWork", false, false);
     }
 }
Exemplo n.º 27
0
        public static void ScanLastMails(DBManager dbMgr)
        {
            long nowTicks = DateTime.Now.Ticks / 10000L;

            if (nowTicks - UserMailManager.LastScanMailTicks >= 30000L)
            {
                UserMailManager.LastScanMailTicks = nowTicks;
                Dictionary <int, int> lastMailDict = DBQuery.ScanLastMailIDListFromTable(dbMgr);
                if (lastMailDict != null && lastMailDict.Count > 0)
                {
                    string gmCmd        = "";
                    string mailIDsToDel = "";
                    foreach (KeyValuePair <int, int> item in lastMailDict)
                    {
                        int        roleID     = item.Key;
                        DBRoleInfo dbRoleInfo = dbMgr.GetDBRoleInfo(ref roleID);
                        if (null != dbRoleInfo)
                        {
                            if (gmCmd.Length > 0)
                            {
                                gmCmd += "_";
                            }
                            dbRoleInfo.LastMailID = item.Value;
                            gmCmd += string.Format("{0}|{1}", dbRoleInfo.RoleID, item.Value);
                        }
                        else
                        {
                            DBWriter.UpdateRoleLastMail(dbMgr, item.Key, item.Value);
                        }
                        if (mailIDsToDel.Length > 0)
                        {
                            mailIDsToDel += ",";
                        }
                        mailIDsToDel += item.Value;
                    }
                    if (gmCmd.Length > 0)
                    {
                        string gmCmdData = string.Format("-notifymail {0}", gmCmd);
                        ChatMsgManager.AddGMCmdChatMsg(-1, gmCmdData);
                    }
                    if (mailIDsToDel.Length >= 0)
                    {
                        DBWriter.DeleteLastScanMailIDs(dbMgr, lastMailDict);
                    }
                }
            }
        }
Exemplo n.º 28
0
        public int DelFuMoMailFromLimitContorl(DBManager dbMgr, int roleid, int num)
        {
            int result;

            if (num > 0)
            {
                List <FuMoMailData> dataList = null;
                if (FuMoMailManager.CurrUserMailDatas.TryGetValue(roleid, out dataList))
                {
                    int    temp                      = 0;
                    string removeMailIdList          = null;
                    List <FuMoMailData> tempDataList = new List <FuMoMailData>(dataList);
                    foreach (FuMoMailData itdata in dataList)
                    {
                        temp++;
                        if (temp > num)
                        {
                            break;
                        }
                        if (!tempDataList.Remove(itdata))
                        {
                            return(-1);
                        }
                        removeMailIdList = string.Format("{0}_{1}", itdata.MaillID, removeMailIdList);
                    }
                    FuMoMailManager.CurrUserMailDatas[roleid] = tempDataList;
                    if (removeMailIdList == null)
                    {
                        return(0);
                    }
                    string parem = this.MakeDelListSQL(removeMailIdList.Split(new char[]
                    {
                        '_'
                    }));
                    if (DBWriter.DeleteMailFuMoByMailIDList(dbMgr, roleid, parem))
                    {
                        return(1);
                    }
                }
                result = -1;
            }
            else
            {
                result = 0;
            }
            return(result);
        }
Exemplo n.º 29
0
        public static int UseLiPinMa(DBManager dbMgr, int roleID, int songLiID, string liPinMa, bool insertLiPinMa = false)
        {
            int result;

            if (null == LiPinMaManager._LiPinMaDict)
            {
                result = -1010;
            }
            else
            {
                Dictionary <string, LiPinMaItem> liPinMaDict = LiPinMaManager._LiPinMaDict;
                int usedNum = 0;
                liPinMa = liPinMa.ToUpper();
                lock (LiPinMaManager.Mutex)
                {
                    LiPinMaItem liPinMaItem = null;
                    if (!liPinMaDict.TryGetValue(liPinMa, out liPinMaItem))
                    {
                        return(-1020);
                    }
                    if (liPinMaItem.HuodongID != songLiID)
                    {
                        return(-1030);
                    }
                    if (liPinMaItem.MaxNum > 0 && liPinMaItem.UsedNum >= liPinMaItem.MaxNum)
                    {
                        return(-1040);
                    }
                    if (liPinMaItem.PingTaiRepeat <= 0)
                    {
                        int pingTaiID = DBQuery.QueryPingTaiIDByHuoDongID(dbMgr, liPinMaItem.HuodongID, roleID, liPinMaItem.PingTaiID);
                        if (pingTaiID == liPinMaItem.PingTaiID)
                        {
                            return(-10000);
                        }
                    }
                    DBWriter.AddUsedLiPinMa(dbMgr, liPinMaItem.HuodongID, liPinMaItem.LiPinMa, liPinMaItem.PingTaiID, roleID);
                    liPinMaItem.UsedNum++;
                    usedNum = liPinMaItem.UsedNum;
                }
                DBWriter.UpdateLiPinMaUsedNum(dbMgr, liPinMa, usedNum);
                result = 0;
            }
            return(result);
        }
        public WorkerTCPSocket(ServiceConfigurationSection config, Socket tcpSocket, DBWriter dbWriter, RawDataManager rawDataManager)
        {
            m_WorkerTCPSocketID = new Random().Next();
            myDBWriter          = dbWriter;
            myTCPSocket         = tcpSocket;
            myRawDataManager    = rawDataManager;
            myConfig            = config;

            firstChunk         = true;
            moreChunksExpected = false;
            dataBufferIndex    = 0;
            emptyRxCount       = 0;
            allChunksReceived  = false;

            // Mark the age of this worker object
            connectionTime = DateTime.Now;

            packetParser = null;
        }