Пример #1
0
        /// <summary>
        /// “关注”指定的目标用户(异步)
        /// </summary>
        /// <param name="userId">用户编号</param>
        /// <param name="targetUserId">被关注的目标用户编号</param>
        public static async void FollowedTargetUser(int userId, int targetUserId)
        {
            await Task.Run(() =>
            {
                UserFollowed uFollowed = new UserFollowed {
                    UserId = userId, FollowedUserId = targetUserId, CreateDate = DateTime.Now
                };
                bool result = SocialData.ChangedFollowedWithTargetUser(uFollowed, 1);
                if (result)
                {
                    SocialConfig config = SocialConfigs.GetSocialConfigCache();

                    if (config.BeFollowedExpChanged != 0)
                    {
                        UserBiz.UpdateUserExp(targetUserId, config.BeFollowedExpChanged, "被关注");
                    }

                    if (config.BeFollowedCoinChanged != 0)
                    {
                        UserBiz.UpdateUserCoin(targetUserId, config.BeFollowedCoinChanged, "被关注");
                    }

                    UserBiz.SetUserCacheInfo(userId);
                    UserBiz.SetUserCacheInfo(targetUserId);

                    //发送系统消息给被关注对象,提醒该用户被“关注”
                    //Todo....
                }
            });
        }
Пример #2
0
        /// <summary>
        /// 创建群组
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="groupName"></param>
        /// <param name="interest"></param>
        /// <param name="iconData"></param>
        /// <param name="iconExtName"></param>
        /// <returns></returns>
        public static GroupInfo CreateGroup(int userId, string groupName, string interest, byte[] iconData, string iconExtName)
        {
            SocialConfig config    = SocialConfigs.GetSocialConfigCache();
            GroupInfo    groupInfo = new GroupInfo
            {
                GroupName      = groupName,
                GroupIcon      = config.DefaultGroupIcon,
                Comment        = string.Empty,
                CreatorId      = userId,
                GroupType      = 0,
                InterestCode   = interest,
                QuickJoinCode  = string.Empty,
                MaxMemberCount = config.GroupMaxMemberCount < 1 ? 20 : config.GroupMaxMemberCount,
                MemberCount    = 0,
                CreateDate     = DateTime.Now
            };

            UserCacheInfo userCache = UserBiz.ReadUserCacheInfo(userId);

            SocialData.CreateGroup(groupInfo, userCache.UserSite);

            if (groupInfo.GroupId > 0)
            {
                //更新快速加入码和图标
                groupInfo.QuickJoinCode = Convert.ToBase64String(groupInfo.GroupId.GetIntOffsetBytes()).TrimEnd('=').ToUpper();
                string iconUrl = iconData.SaveMediaFile(FileTarget.Group, groupInfo.GroupId, MediaType.Image, iconExtName);
                if (!string.IsNullOrEmpty(iconUrl))
                {
                    groupInfo.GroupIcon = iconUrl;
                }

                SocialData.UpdateGroupInfo(groupInfo);

                //缓存群信息和成员列表信息
                groupInfo.MemberCount++;
                SetGroupCacheInfo(groupInfo.GroupId, groupInfo);

                List <UserCacheInfo> memberList = new List <UserCacheInfo>(1)
                {
                    UserBiz.ReadUserCacheInfo(userId)
                };
                SetGroupMembersCacheInfo(groupInfo.GroupId, memberList);

                return(groupInfo);
            }
            return(null);
        }