Example #1
0
        /// <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);
        }
Example #2
0
        /// <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);
        }
Example #3
0
        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);
        }
Example #4
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);
                }
            }
        }