Ejemplo n.º 1
0
        /// <summary>
        /// 关注用户/取消关注动态处理
        /// </summary>
        /// <param name="sender">关注实体</param>
        /// <param name="eventArgs">事件参数</param>
        void FollowActivityEventModule_After(FollowEntity sender, CommonEventArgs eventArgs)
        {
            ActivityService activityService = new ActivityService();

            if (EventOperationType.Instance().Create() == eventArgs.EventOperationType)
            {
                UserService userService = new UserService();
                IUser       user        = userService.GetUser(sender.UserId);
                if (user == null)
                {
                    return;
                }

                Activity activity = Activity.New();

                activity.ActivityItemKey = ActivityItemKeys.Instance().FollowUser();
                activity.OwnerType       = ActivityOwnerTypes.Instance().User();
                activity.OwnerId         = sender.UserId;
                activity.OwnerName       = user.DisplayName;
                activity.UserId          = sender.UserId;
                activity.ReferenceId     = sender.FollowedUserId;
                activity.TenantTypeId    = TenantTypeIds.Instance().User();

                activityService.Generate(activity, false);

                activityService.TraceBackInboxAboutOwner(sender.UserId, sender.FollowedUserId, ActivityOwnerTypes.Instance().User());
            }
            else if (EventOperationType.Instance().Delete() == eventArgs.EventOperationType)
            {
                activityService.RemoveInboxAboutOwner(sender.UserId, sender.FollowedUserId, ActivityOwnerTypes.Instance().User());
            }
        }
 public int GetOneByFollowerAndFollowed(int FollowerId, int FollowedId)
 {
     using (SqlConnection c = new SqlConnection(ConfigurationManager.ConnectionStrings["API"].ConnectionString))
     {
         using (SqlCommand cmd = c.CreateCommand())
         {
             cmd.CommandText = "SELECT * FROM Follow WHERE FollowerId = @FollowerId AND FollowedId = @FollowedId";
             cmd.Parameters.AddWithValue("FollowerId", FollowerId);
             cmd.Parameters.AddWithValue("FollowedId", FollowedId);
             c.Open();
             using (SqlDataReader Tab = cmd.ExecuteReader())
             {
                 if (Tab.Read())
                 {
                     FollowEntity S = new FollowEntity()
                     {
                         Id         = (int)Tab["Id"],
                         FollowerId = (int)Tab["FollowerId"],
                         FollowedId = (int)Tab["FollowedId"],
                     };
                     return(S.Id);
                 }
                 else
                 {
                     return(0);
                 }
             }
         }
     }
 }
Ejemplo n.º 3
0
        /// <summary>
        /// 取消关注后更新缓存
        /// </summary>
        /// <param name="sender">关注实体</param>
        /// <param name="eventArgs">事件参数</param>
        void CancelFollowEventModule_After(FollowEntity sender, CommonEventArgs eventArgs)
        {
            if (eventArgs.EventOperationType == EventOperationType.Instance().Delete())
            {
                CategoryService service = new CategoryService();
                service.ClearCategoriesFromItem(sender.Id, sender.UserId, TenantTypeIds.Instance().User());

                //更新用户缓存
                ICacheService       cacheService        = DIContainer.Resolve <ICacheService>();
                RealTimeCacheHelper realTimeCacheHelper = EntityData.ForType(typeof(User)).RealTimeCacheHelper;
                if (cacheService.EnableDistributedCache)
                {
                    realTimeCacheHelper.IncreaseEntityCacheVersion(sender.UserId);
                }
                else
                {
                    string cacheKey = realTimeCacheHelper.GetCacheKeyOfEntity(sender.UserId);
                    User   user     = cacheService.Get <User>(cacheKey);
                    if (user != null && user.FollowedCount > 0)
                    {
                        user.FollowedCount--;
                    }
                }
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 用户积分处理
        /// </summary>
        /// <param name="sender">关注实体</param>
        /// <param name="eventArgs">事件参数</param>
        void FollowPointModule_After(FollowEntity sender, CommonEventArgs eventArgs)
        {
            IUserService userservice  = DIContainer.Resolve <IUserService>();
            IUser        followedUser = userservice.GetUser(sender.FollowedUserId);

            if (followedUser == null)
            {
                return;
            }

            string       pointItemKey = string.Empty;
            PointService pointService = new PointService();
            string       description  = string.Format(ResourceAccessor.GetString("PointRecord_Pattern_FollowUser"), followedUser.DisplayName);

            #region 设置积分项Key

            if (EventOperationType.Instance().Create() == eventArgs.EventOperationType)
            {
                pointItemKey = PointItemKeys.Instance().FollowUser();
            }
            else if (EventOperationType.Instance().Delete() == eventArgs.EventOperationType)
            {
                pointItemKey = PointItemKeys.Instance().CancelFollowUser();
            }

            #endregion

            pointService.GenerateByRole(sender.UserId, pointItemKey, description);
        }
Ejemplo n.º 5
0
    public void Convert(Entity entity, EntityManager dstManager, GameObjectConversionSystem conversionSystem)
    {
        FollowEntity followEntity = followerObject.GetComponent <FollowEntity>();

        if (followEntity == null)
        {
            followEntity = followerObject.AddComponent <FollowEntity>();
        }

        followEntity.entityToFollow = entity;
    }
Ejemplo n.º 6
0
        private void FollowUser_After(FollowEntity followEntity, CommonEventArgs eventArgs)
        {
            if (eventArgs.EventOperationType == EventOperationType.Instance().Update() || eventArgs.EventOperationType == EventOperationType.Instance().Delete())
            {
                if (searcher == null)
                {
                    searcher = (FollowUserSearcher)SearcherFactory.GetSearcher(FollowUserSearcher.CODE);
                }

                searcher.Update(followEntity.UserId);
            }
        }
Ejemplo n.º 7
0
        // id is the follower, userId is followee aka person that the follower is following
        public async Task <bool> FollowUserAsync(int id, int userId)
        {
            if (id == userId)
            {
                return(false);
            }

            var follow = new FollowEntity(userId, id); // convert
            await _context.FollowEntities.AddAsync(follow);

            await _context.SaveChangesAsync();

            return(true);
        }
Ejemplo n.º 8
0
        public async Task DoFollowBackAsync(int currentUserId, int followedId, CancellationToken cancellationToken)
        {
            var newEntity = new FollowEntity {
                FollowerId = currentUserId,
                FollowedId = followedId
            };

            await _dbContext.Follows
            .AddAsync(newEntity, cancellationToken)
            .ConfigureAwait(false);

            await _dbContext
            .SaveChangesAsync(cancellationToken)
            .ConfigureAwait(false);
        }
Ejemplo n.º 9
0
        public static FollowEntity ToEntity(this FollowModel FM)
        {
            if (FM != null)
            {
                FollowEntity FE = new FollowEntity();
                FE.FollowedId = FM.Followed.Id;
                FE.FollowerId = FM.Follower.Id;

                return(FE);
            }
            else
            {
                return(null);
            }
        }
Ejemplo n.º 10
0
 public static FollowModel ToModel(this FollowEntity FE)
 {
     if (FE != null)
     {
         UserRepository repoU = new UserRepository();
         FollowModel    FM    = new FollowModel();
         FM.Followed = repoU.GetOne(FE.FollowedId).MapTo <UserModel>();
         FM.Follower = repoU.GetOne(FE.FollowerId).MapTo <UserModel>();
         return(FM);
     }
     else
     {
         return(null);
     }
 }
Ejemplo n.º 11
0
        /// <summary>
        /// 生成通知
        /// </summary>
        /// <param name="sender">关注实体</param>
        /// <param name="eventArgs">事件参数</param>
        void FollowNoticeModule_After(FollowEntity sender, CommonEventArgs eventArgs)
        {
            if (EventOperationType.Instance().Create() == eventArgs.EventOperationType)
            {
                if (sender.IsQuietly)
                {
                    return;
                }
                IUserService userService = DIContainer.Resolve <IUserService>();

                //关注用户
                IUser user = userService.GetUser(sender.UserId);
                if (user == null)
                {
                    return;
                }

                IUser followedUser = userService.GetUser(sender.FollowedUserId);
                if (followedUser == null)
                {
                    return;
                }

                NoticeService service = new NoticeService();
                Notice        notice  = Notice.New();
                notice.TypeId             = NoticeTypeIds.Instance().Hint();
                notice.TemplateName       = "FollowUser";
                notice.UserId             = followedUser.UserId;
                notice.LeadingActorUserId = user.UserId;
                notice.LeadingActor       = user.DisplayName;
                notice.LeadingActorUrl    = SiteUrls.FullUrl(SiteUrls.Instance().SpaceHome(user.UserName));
                notice.RelativeObjectId   = followedUser.UserId;
                notice.RelativeObjectName = followedUser.DisplayName;
                notice.RelativeObjectUrl  = SiteUrls.FullUrl(SiteUrls.Instance().SpaceHome(followedUser.UserName));

                service.Create(notice);
            }
            else if (eventArgs.EventOperationType == EventOperationType.Instance().Delete())
            {
                NoticeService        service = new NoticeService();
                IEnumerable <Notice> notices = service.GetTops(sender.FollowedUserId, 20).Where(n => n.TemplateName == "FollowUser").Where(n => n.LeadingActorUserId == sender.UserId);
                foreach (var notice in notices)
                {
                    service.Delete(notice.Id);
                }
            }
        }
 public void Create(FollowEntity T)
 {
     using (SqlConnection c = new SqlConnection(ConfigurationManager.ConnectionStrings["API"].ConnectionString))
     {
         using (SqlCommand cmd = c.CreateCommand())
         {
             if (T != null && T.FollowedId != 0 && T.FollowerId != 0)
             {
                 cmd.CommandText = "SP_AddFollow";
                 cmd.CommandType = CommandType.StoredProcedure;
                 SqlParameter FollowerId = new SqlParameter("FollowerId", T.FollowerId);
                 SqlParameter FollowedId = new SqlParameter("FollowedId", T.FollowedId);
                 cmd.Parameters.Add(FollowerId);
                 cmd.Parameters.Add(FollowedId);
                 c.Open();
                 cmd.ExecuteNonQuery();
             }
         }
     }
 }
Ejemplo n.º 13
0
 /// <summary>
 /// 关注后更新缓存
 /// </summary>
 /// <param name="sender">关注实体</param>
 /// <param name="eventArgs">事件参数</param>
 void FollowUpdateCountModule_After(FollowEntity sender, CommonEventArgs eventArgs)
 {
     if (eventArgs.EventOperationType == EventOperationType.Instance().Create())
     {
         //更新用户缓存
         ICacheService       cacheService        = DIContainer.Resolve <ICacheService>();
         RealTimeCacheHelper realTimeCacheHelper = EntityData.ForType(typeof(User)).RealTimeCacheHelper;
         if (cacheService.EnableDistributedCache)
         {
             realTimeCacheHelper.IncreaseEntityCacheVersion(sender.UserId);
         }
         else
         {
             string cacheKey = realTimeCacheHelper.GetCacheKeyOfEntity(sender.UserId);
             User   user     = cacheService.Get <User>(cacheKey);
             if (user != null)
             {
                 user.FollowedCount++;
             }
         }
     }
 }
Ejemplo n.º 14
0
    public void Convert(Entity entity, EntityManager dstManager, GameObjectConversionSystem conversionSystem)
    {
        FollowEntity followEntity = Follower.GetComponent <FollowEntity>();

        if (followEntity == null)
        {
            followEntity = Follower.AddComponent <FollowEntity>();
        }
        followEntity.entityToFollow = entity;

        var controller = new ControllerData
        {
            lookSpeedH = speedH,
            lookSpeedV = speedV,
            zoomSpeed  = zoom,
            dragSpeed  = drag,
            Position   = transform.position,
            Rotation   = transform.rotation.eulerAngles
        };

        dstManager.AddComponentData(entity, controller);
    }
        public static List <FollowEntity> ToFollowEntities(User user)
        {
            user.NullCheck(nameof(user));

            var result = new List <FollowEntity>();

            if (user.Followers != null)
            {
                foreach (var follower in user.Followers)
                {
                    var newFollower = new FollowEntity
                    {
                        FollowerId = follower.Id,
                        FolloweeId = user.Id
                    };
                    result.Add(newFollower);
                }
            }
            ;

            return(result);
        }
Ejemplo n.º 16
0
        public async Task DoAcceptFollowRequestAsync(int currentUserId, int followerId, CancellationToken cancellationToken)
        {
            var entity = await _dbContext.FollowRequests
                         .Where(_ => _.SourceId == followerId &&
                                _.TargetId == currentUserId)
                         .FirstOrDefaultAsync(cancellationToken)
                         .ConfigureAwait(false);

            _dbContext.FollowRequests.Remove(entity !);

            var newEntity = new FollowEntity {
                FollowerId = followerId,
                FollowedId = currentUserId
            };

            await _dbContext.Follows
            .AddAsync(newEntity, cancellationToken)
            .ConfigureAwait(false);

            await _dbContext
            .SaveChangesAsync(cancellationToken)
            .ConfigureAwait(false);
        }
Ejemplo n.º 17
0
 public FollowModel(FollowEntity entity)
 {
     Entity = entity;
 }
Ejemplo n.º 18
0
 public static FollowModel ToModel(this FollowEntity entity) => new()
        public static UserEntity ToUserEntity(User user)
        {
            user.NullCheck(nameof(user));
            user.FirstName.EnforceNameCharacters(nameof(user.FirstName));
            user.LastName.EnforceNameCharacters(nameof(user.LastName));
            user.Email.EnforceEmailCharacters(nameof(user.Email));

            if (!user.PhoneNumber.IsNullOrEmpty())
            {
                user.PhoneNumber.EnforcePhoneNumberCharacters(nameof(user.PhoneNumber));
            }

            if (!user.Status.IsNullOrEmpty())
            {
                user.Status.EnforceNoSpecialCharacters(nameof(user.Status));
            }

            var result = new UserEntity
            {
                Id = user.Id,
                ProfilePictureUrl = user.ProfilePictureUrl,
                FirstName         = user.FirstName,
                LastName          = user.LastName,
                Email             = user.Email,
                PhoneNumber       = user.PhoneNumber,
                BirthDate         = user.BirthDate,
                Status            = user.Status,
                Followees         = new List <FollowEntity>(),
                Followers         = new List <FollowEntity>()
            };

            // Check for all people the user is following, assign a new follow entity with the followee as the person this user is following
            if (user.Followees != null)
            {
                var followees = user.Followees;
                foreach (var person in followees)
                {
                    var newFollowee = new FollowEntity()
                    {
                        FollowerId = result.Id,
                        FolloweeId = person.Id
                    };
                    result.Followees.Add(newFollowee);
                }
            }
            ;
            // Vice versa
            if (user.Followers != null)
            {
                var followers = user.Followers;
                foreach (var person in followers)
                {
                    var newFollower = new FollowEntity()
                    {
                        FollowerId = person.Id,
                        FolloweeId = result.Id
                    };
                    result.Followers.Add(newFollower);
                }
            }
            ;
            return(result);
        }