예제 #1
0
        private void InitByDb(DBGroupShop dbData)
        {
            GroupShop.DbData = dbData;
            var delList = new List <DBGroupShopOne>();

            foreach (var item in GroupShop.DbData.ItemList)
            {
                List <GroupShopOne> list;
                if (GroupShop.StoreList.TryGetValue(item.GroupShopId, out list))
                {
                    var temp = new GroupShopOne();
                    temp.InitByDB(item);
                    GroupShop.Datas.Add(temp.Guid, temp);
                    list.Add(temp);
                }
                else
                {
                    delList.Add(item);
                }
            }
            if (delList.Count > 0)
            {
                GroupShop.DbData.ItemList.RemoveAll(i => delList.Contains(i));
            }
            //移除过期的历史
            var overTime = DateTime.Now.AddDays(-7).ToBinary();
            var count    = GroupShop.DbData.OldItems.RemoveAll(item => item.OverTime <= overTime);

            if (count > 0)
            {
                GroupShop.Dirty = true;
            }
            foreach (var item in GroupShop.DbData.OldItems)
            {
                var temp = new GroupShopOne();
                temp.InitByDB(item);
                if (GroupShop.OldDatas.ContainsKey(temp.Guid))
                {
                    PlayerLog.WriteLog((int)LogType.GroupShopOldDatasKeySame, "GroupShop.OldDatas has duplicate key!");
                    Logger.Fatal(
                        "----------------------------GroupShop.OldDatas has duplicate key!--------------------------------");
                    continue;
                }
                GroupShop.OldDatas.Add(temp.Guid, temp);
            }
            CheckTableChange();
        }