Пример #1
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);
                    }
                }
            }
        }
Пример #2
0
        public BangHuiListData GetBangHuiListData(DBManager DBMgr, int isVerify, int startIndex, int endIndex)
        {
            BangHuiListData BHListData = null;

            lock (this.BangHuiListMutex)
            {
                if (isVerify >= 0)
                {
                    BHListData = new BangHuiListData();
                    BHListData.BangHuiItemDataList = new List <BangHuiItemData>();
                    foreach (BangHuiItemData data in this.BangHuiListCacheData.BangHuiItemDataList)
                    {
                        if (isVerify == data.IsVerfiy)
                        {
                            BHListData.BangHuiItemDataList.Add(data);
                            BHListData.TotalBangHuiItemNum++;
                        }
                    }
                }
                else
                {
                    BHListData = this.BangHuiListCacheData;
                }
            }
            return(BHListData);
        }
Пример #3
0
        /// <summary>
        /// 重新计算帮会的人数
        /// </summary>
        /// <param name="dbMgr"></param>
        public static void RecalcBangHuiNumLevel(DBManager dbMgr)
        {
            long ticks = DateTime.Now.Ticks;

            if (ticks - LastQueryTimeTicks < MaxQueryTimeSlotTicks)
            {
                return; //禁止频繁操作
            }

            LastQueryTimeTicks = ticks;

            //获取帮会列表数据
            BangHuiListData bangHuiListData = DBQuery.GetBangHuiItemDataList(dbMgr, -1, 0, 10000);

            if (null != bangHuiListData && null != bangHuiListData.BangHuiItemDataList)
            {
                List <BangHuiNumLevelItem> bangHuiNumLevelItemList = new List <BangHuiNumLevelItem>();
                for (int i = 0; i < bangHuiListData.BangHuiItemDataList.Count; i++)
                {
                    bangHuiNumLevelItemList.Add(new BangHuiNumLevelItem()
                    {
                        BHID             = bangHuiListData.BangHuiItemDataList[i].BHID,
                        TotalNum         = DBQuery.QueryBHMemberNum(dbMgr, bangHuiListData.BangHuiItemDataList[i].BHID),
                        TotalLevel       = DBQuery.QueryBHMemberLevel(dbMgr, bangHuiListData.BangHuiItemDataList[i].BHID),
                        TotalCombatForce = DBQuery.QueryBHMemberTotalCombatForce(dbMgr, bangHuiListData.BangHuiItemDataList[i].BHID),
                    });
                }

                for (int i = 0; i < bangHuiNumLevelItemList.Count; i++)
                {
                    //更新帮会的人员个数和级别总和
                    DBWriter.UpdateBangHuiNumLevel(dbMgr, bangHuiNumLevelItemList[i].BHID, bangHuiNumLevelItemList[i].TotalNum,
                                                   bangHuiNumLevelItemList[i].TotalLevel, bangHuiNumLevelItemList[i].TotalCombatForce);
                }
            }
        }