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)); } }
/// <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); } } }