/// <summary> /// 创建新组 /// </summary> /// <param name="emoticonGroup"></param> /// <returns></returns> public EmoticonGroup CreateEmoticonGroup(int userID, string groupName) { if (!CanUseEmoticon(userID)) { ThrowError(new NoPermissionUseEmoticonError()); return(null); } if (groupName == null || groupName.Trim() == string.Empty) { ThrowError(new EmptyEmoticonGroupNameError("groupName")); return(null); } else { if (new InvalidFileNameRegex().IsMatch(HttpUtility.HtmlDecode(groupName))) { ThrowError(new InvalidEmoticonGroupNameError("groupName", groupName)); return(null); } } EmoticonGroup Group = EmoticonDao.Instance.CreateGroup(userID, groupName); if (Group != null) { RemoveCachedUserEmoticonGroups(userID); } return(Group); }
/// <summary> /// 当用户表情分组为0 的时候创建默认表情分组 /// </summary> /// <param name="userID"></param> /// <returns></returns> public EmoticonGroup CreateDefaultGroup(int userID) { if (!CanUseEmoticon(userID)) { return(null); } EmoticonGroup Group = EmoticonDao.Instance.CreateGroup(userID, Lang.Emoticon_DefaultGroupName); EmoticonGroupCollection groups = new EmoticonGroupCollection(); groups.Add(Group); CacheUserEmoticonGroups(userID, groups); return(Group); }
public EmoticonGroup GetEmoticonGroup(int userID, int groupID) { string cacheKey = string.Format(cacheKey_EmoticonUserGroups, userID); EmoticonGroupCollection groups; if (CacheUtil.TryGetValue <EmoticonGroupCollection>(cacheKey, out groups)) { if (groups.GetValue(groupID) != null) { return(groups.GetValue(groupID)); } } else { EmoticonGroup group = EmoticonDao.Instance.GetEmoticonGroup(userID, groupID); //并不进行单个分组缓存, 通常是用户的全部分组缓存 CacheUtil.Remove(cacheKey); return(group); } return(null); }
/// <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); } } }