Пример #1
0
        public void GroupImportEmoticon(int userID, Dictionary <string, List <EmoticonItem> > groupedEmoticonDatas
                                        , out int groupCount, out int fileCount, out int saveGroupcount, out int saveFileCount)
        {
            bool stopSaveFile = false;
            long maxEmotcionSize;                                                    //单个文件最大限制
            long canUseSpcaeSize;                                                    //总可用空间大小
            int  canUploadEmoticonCount;                                             //总可用表情数量
            int  usedEmoticonCount;
            long usedspaceSize = GetUserEmoticonStat(userID, out usedEmoticonCount); //已用空间大小

            canUseSpcaeSize        = MaxEmoticonSpace(userID);                       //取得最大可用空间
            canUploadEmoticonCount = MaxEmoticonCount(userID);                       //取得最大表情数
            maxEmotcionSize        = MaxEmticonFileSize(userID);                     //获取单个表情的最大限制

            int currentFileSizes = 0;


            string imgUrl;

            groupCount     = 0;
            saveGroupcount = 0;
            fileCount      = 0;
            saveFileCount  = 0;

            Dictionary <string, EmoticonCollection> groupedEmoticons = new Dictionary <string, EmoticonCollection>();

            foreach (KeyValuePair <string, List <EmoticonItem> > groups in groupedEmoticonDatas)
            {
                groupCount++;
                EmoticonCollection emoticons = new EmoticonCollection();
                bool hasFileSaved            = false;

                foreach (EmoticonItem item in groups.Value)
                {
                    fileCount++;
                    if (usedspaceSize + currentFileSizes + item.Size > canUseSpcaeSize)
                    {
                        if (!stopSaveFile)
                        {
                            ThrowError(new EmoticonSpaceOverflow(canUseSpcaeSize));
                            stopSaveFile = true;
                        }
                        break;
                    }

                    if (saveFileCount + usedEmoticonCount >= canUploadEmoticonCount)
                    {
                        if (!stopSaveFile)
                        {
                            ThrowError(new EmoticonFileCountOverflow(canUploadEmoticonCount));
                            stopSaveFile = true;
                        }
                        break;
                    }


                    switch (SaveEmoticonFile(userID, item.Data, item.MD5, item.FileName, out imgUrl))
                    {
                    case EmoticonSaveStatus.Success:
                        Emoticon emote = new Emoticon();
                        emote.ImageSrc = imgUrl;
                        emote.MD5      = item.MD5;
                        emote.Shortcut = item.Shortcut;
                        emote.FileSize = item.Data.Length;
                        emoticons.Add(emote);

                        hasFileSaved = true;
                        saveFileCount++;
                        currentFileSizes += item.Size;
                        break;
                    }
                }

                if (hasFileSaved)
                {
                    groupedEmoticons.Add(groups.Key, emoticons);
                }

                //if (stopSaveFile)
                //    break;
            }

            if (groupCount > 0 && saveFileCount > 0)
            {
                CreateEmoticonsAndGroups(userID, groupedEmoticons);
                saveGroupcount = groupedEmoticons.Count;
                CacheUtil.RemoveBySearch(string.Format(cacheKey_ByGroupRoot, userID));
            }
        }
Пример #2
0
        /// <summary>
        /// 不分组导入
        /// </summary>
        /// <param name="userID"></param>
        /// <param name="groupID"></param>
        /// <param name="emotes"></param>
        /// <param name="fileCount"></param>
        /// <param name="saveCount"></param>
        public void BatchImportEmoticon(int userID, int groupID, Dictionary <string, List <EmoticonItem> > emotes, out int fileCount, out int saveCount)
        {
            long maxEmotcionSize;                                                    //单个文件最大限制
            long canUseSpcaeSize;                                                    //总可用空间大小
            int  canUploadEmoticonCount;                                             //总可用表情数量
            int  usedEmoticonCount;
            long usedspaceSize = GetUserEmoticonStat(userID, out usedEmoticonCount); //已用空间大小

            canUseSpcaeSize        = MaxEmoticonSpace(userID);                       //取得最大可用空间
            canUploadEmoticonCount = MaxEmoticonCount(userID);                       //取得最大表情数
            maxEmotcionSize        = MaxEmticonFileSize(userID);                     //获取单个表情的最大限制

            int currentFileSizes = 0;

            EmoticonGroup currentGroup = GetEmoticonGroup(userID, groupID);

            saveCount = 0; fileCount = 0;
            EmoticonCollection emoticons = new EmoticonCollection();
            Emoticon           tempEmote;
            string             imgUrl;

            if (emotes.Count > 0)
            {
                bool stopSaveFile = false;
                foreach (KeyValuePair <string, List <EmoticonItem> > group in emotes)
                {
                    foreach (EmoticonItem item in group.Value)
                    {
                        fileCount++;


                        if (usedspaceSize + currentFileSizes + item.Size > canUseSpcaeSize)
                        {
                            if (!stopSaveFile)
                            {
                                ThrowError(new EmoticonSpaceOverflow(canUseSpcaeSize));
                                stopSaveFile = true;
                            }
                            break;
                        }

                        if (saveCount + usedEmoticonCount >= canUploadEmoticonCount)
                        {
                            if (!stopSaveFile)
                            {
                                ThrowError(new EmoticonFileCountOverflow(canUploadEmoticonCount));
                                stopSaveFile = true;
                            }
                            break;
                        }



                        switch (SaveEmoticonFile(userID, item.Data, item.MD5, item.FileName, out imgUrl))
                        {
                        case EmoticonSaveStatus.Success:
                            tempEmote          = new Emoticon();
                            tempEmote.UserID   = userID;
                            tempEmote.GroupID  = groupID;
                            tempEmote.FileSize = item.Size;
                            tempEmote.Shortcut = item.Shortcut;
                            tempEmote.MD5      = item.MD5;
                            tempEmote.ImageSrc = imgUrl;
                            emoticons.Add(tempEmote);

                            currentFileSizes += item.Size;
                            saveCount++;
                            break;
                        }
                    }

                    //if (stopSaveFile)
                    //    break;
                }

                if (emoticons.Count > 0)
                {
                    CreateEmoticons(userID, emoticons);
                    currentGroup.TotalSizes     += currentFileSizes;
                    currentGroup.TotalEmoticons += saveCount;
                    RemoveCacheByGroup(userID, groupID);
                }
            }
        }