/// <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()); } }
/// <summary> /// 动态处理程序 /// </summary> /// <param name="groupMember"></param> /// <param name="eventArgs"></param> private void TopicMemberActivityModule_After(TopicMember groupMember, CommonEventArgs eventArgs) { ActivityService activityService = new ActivityService(); if (eventArgs.EventOperationType == EventOperationType.Instance().Create()) { //生成动态 if (groupMember == null) { return; } var group = new TopicService().Get(groupMember.TopicId); if (group == null) { return; } //生成Owner为专题的动态 Activity actvityOfTopic = Activity.New(); actvityOfTopic.ActivityItemKey = ActivityItemKeys.Instance().CreateTopicMember(); actvityOfTopic.ApplicationId = TopicConfig.Instance().ApplicationId; actvityOfTopic.IsOriginalThread = true; actvityOfTopic.IsPrivate = !group.IsPublic; actvityOfTopic.UserId = groupMember.UserId; actvityOfTopic.ReferenceId = 0; actvityOfTopic.ReferenceTenantTypeId = string.Empty; actvityOfTopic.SourceId = groupMember.Id; actvityOfTopic.TenantTypeId = TenantTypeIds.Instance().User(); actvityOfTopic.OwnerId = group.TopicId; actvityOfTopic.OwnerName = group.TopicName; actvityOfTopic.OwnerType = ActivityOwnerTypes.Instance().Topic(); activityService.Generate(actvityOfTopic, false); //生成Owner为用户的动态 Activity actvityOfUser = Activity.New(); actvityOfUser.ActivityItemKey = ActivityItemKeys.Instance().JoinTopic(); actvityOfUser.ApplicationId = actvityOfTopic.ApplicationId; actvityOfUser.HasImage = actvityOfTopic.HasImage; actvityOfUser.HasMusic = actvityOfTopic.HasMusic; actvityOfUser.HasVideo = actvityOfTopic.HasVideo; actvityOfUser.IsOriginalThread = actvityOfTopic.IsOriginalThread; actvityOfUser.IsPrivate = actvityOfTopic.IsPrivate; actvityOfUser.UserId = actvityOfTopic.UserId; actvityOfUser.ReferenceId = actvityOfTopic.ReferenceId; actvityOfTopic.ReferenceTenantTypeId = actvityOfTopic.ReferenceTenantTypeId; actvityOfUser.SourceId = actvityOfTopic.SourceId; actvityOfUser.TenantTypeId = actvityOfTopic.TenantTypeId; actvityOfUser.OwnerId = groupMember.UserId; actvityOfUser.OwnerName = groupMember.User.DisplayName; actvityOfUser.OwnerType = ActivityOwnerTypes.Instance().User(); activityService.Generate(actvityOfUser, false); } else if (eventArgs.EventOperationType == EventOperationType.Instance().Delete()) //删除动态 { activityService.DeleteSource(TenantTypeIds.Instance().User(), groupMember.UserId); } }
/// <summary> /// 动态处理程序 /// </summary> /// <param name="groupMember"></param> /// <param name="eventArgs"></param> private void GroupMemberActivityModule_After(GroupMember groupMember, CommonEventArgs eventArgs) { ActivityService activityService = new ActivityService(); if (eventArgs.EventOperationType == EventOperationType.Instance().Create()) { //生成动态 if (groupMember == null) { return; } var group = new GroupService().Get(groupMember.GroupId); if (group == null) { return; } //生成Owner为群组的动态 Activity actvityOfGroup = Activity.New(); actvityOfGroup.ActivityItemKey = ActivityItemKeys.Instance().CreateGroupMember(); actvityOfGroup.ApplicationId = GroupConfig.Instance().ApplicationId; actvityOfGroup.IsOriginalThread = true; actvityOfGroup.IsPrivate = !group.IsPublic; actvityOfGroup.UserId = groupMember.UserId; actvityOfGroup.ReferenceId = group.GroupId; actvityOfGroup.ReferenceTenantTypeId = TenantTypeIds.Instance().Group(); actvityOfGroup.SourceId = groupMember.UserId; actvityOfGroup.TenantTypeId = TenantTypeIds.Instance().User(); actvityOfGroup.OwnerId = group.GroupId; actvityOfGroup.OwnerName = group.GroupName; actvityOfGroup.OwnerType = ActivityOwnerTypes.Instance().Group(); activityService.Generate(actvityOfGroup, false); //生成Owner为用户的动态 Activity actvityOfUser = Activity.New(); actvityOfUser.ActivityItemKey = ActivityItemKeys.Instance().JoinGroup(); actvityOfUser.ApplicationId = actvityOfGroup.ApplicationId; actvityOfUser.HasImage = actvityOfGroup.HasImage; actvityOfUser.HasMusic = actvityOfGroup.HasMusic; actvityOfUser.HasVideo = actvityOfGroup.HasVideo; actvityOfUser.IsOriginalThread = actvityOfGroup.IsOriginalThread; actvityOfUser.IsPrivate = actvityOfGroup.IsPrivate; actvityOfUser.UserId = actvityOfGroup.UserId; actvityOfUser.ReferenceId = actvityOfGroup.ReferenceId; actvityOfGroup.ReferenceTenantTypeId = actvityOfGroup.ReferenceTenantTypeId; actvityOfUser.SourceId = actvityOfGroup.SourceId; actvityOfUser.TenantTypeId = actvityOfGroup.TenantTypeId; actvityOfUser.OwnerId = groupMember.UserId; actvityOfUser.OwnerName = groupMember.User.DisplayName; actvityOfUser.OwnerType = ActivityOwnerTypes.Instance().User(); activityService.Generate(actvityOfUser, false); } else if (eventArgs.EventOperationType == EventOperationType.Instance().Delete()) //删除动态 { activityService.DeleteSource(TenantTypeIds.Instance().User(), groupMember.UserId); } }
/// <summary> /// 兑换商品时处理积分,动态 /// </summary> /// <param name="record">兑换申请</param> /// <param name="eventArgs"></param> public void RecordAcitivityEventModule_After(PointGiftExchangeRecord record, CommonEventArgs eventArgs) { //生成动态 ActivityService activityService = new ActivityService(); if (eventArgs.EventOperationType == EventOperationType.Instance().Approved()) { //初始化Owner为用户的动态 Activity activity = Activity.New(); activity.ActivityItemKey = ActivityItemKeys.Instance().ExchangeGift(); activity.ApplicationId = PointMallConfig.Instance().ApplicationId; activity.HasImage = true; activity.HasMusic = false; activity.HasVideo = false; activity.IsOriginalThread = true; activity.IsPrivate = false; activity.UserId = record.PayerUserId; activity.ReferenceId = record.GiftId; activity.ReferenceTenantTypeId = TenantTypeIds.Instance().PointGift(); activity.SourceId = record.RecordId; activity.TenantTypeId = TenantTypeIds.Instance().PointGiftExchangeRecord(); activity.OwnerId = record.PayerUserId; activity.OwnerName = record.Payer; activity.OwnerType = ActivityOwnerTypes.Instance().User(); activityService.Generate(activity, true); //通知 Notice notice = Notice.New(); notice.UserId = record.PayerUserId; notice.ApplicationId = PointMallConfig.Instance().ApplicationId; notice.TypeId = NoticeTypeIds.Instance().Hint(); notice.LeadingActor = record.Payer; notice.LeadingActorUrl = SiteUrls.FullUrl(SiteUrls.Instance().SpaceHome(record.PayerUserId)); notice.RelativeObjectName = record.GiftName; notice.RelativeObjectUrl = SiteUrls.FullUrl(SiteUrls.Instance().GiftDetail(record.GiftId)); notice.TemplateName = NoticeTemplateNames.Instance().ApplyRecord(); noticeService.Create(notice); } else if (eventArgs.EventOperationType == EventOperationType.Instance().Disapproved()) { //通知 Notice notice = Notice.New(); notice.UserId = record.PayerUserId; notice.ApplicationId = PointMallConfig.Instance().ApplicationId; notice.TypeId = NoticeTypeIds.Instance().Hint(); notice.LeadingActor = record.Payer; notice.LeadingActorUrl = SiteUrls.FullUrl(SiteUrls.Instance().SpaceHome(record.PayerUserId)); notice.RelativeObjectName = record.GiftName; notice.RelativeObjectUrl = SiteUrls.FullUrl(SiteUrls.Instance().GiftDetail(record.GiftId)); notice.TemplateName = NoticeTemplateNames.Instance().CancelRecord(); noticeService.Create(notice); } }
/// <summary> /// 动态处理程序 /// </summary> /// <param name="blogThread"></param> /// <param name="eventArgs"></param> private void BlogThreadActivityModule_After(BlogThread blogThread, AuditEventArgs eventArgs) { //生成动态 ActivityService activityService = new ActivityService(); AuditService auditService = new AuditService(); bool?auditDirection = auditService.ResolveAuditDirection(eventArgs.OldAuditStatus, eventArgs.NewAuditStatus); if (auditDirection == true) { //初始化Owner为用户的动态 Activity activityOfUser = Activity.New(); activityOfUser.ActivityItemKey = ActivityItemKeys.Instance().CreateBlogThread(); activityOfUser.ApplicationId = BlogConfig.Instance().ApplicationId; //判断是否有图片、音频、视频 AttachmentService attachmentService = new AttachmentService(TenantTypeIds.Instance().BlogThread()); IEnumerable <Attachment> attachments = attachmentService.GetsByAssociateId(blogThread.ThreadId); if (attachments != null && attachments.Any(n => n.MediaType == MediaType.Image)) { activityOfUser.HasImage = true; } activityOfUser.HasMusic = false; activityOfUser.HasVideo = false; activityOfUser.IsOriginalThread = !blogThread.IsReproduced; activityOfUser.IsPrivate = blogThread.PrivacyStatus == PrivacyStatus.Private ? true : false; activityOfUser.UserId = blogThread.UserId; activityOfUser.ReferenceId = 0; activityOfUser.ReferenceTenantTypeId = string.Empty; activityOfUser.SourceId = blogThread.ThreadId; activityOfUser.TenantTypeId = TenantTypeIds.Instance().BlogThread(); activityOfUser.OwnerId = blogThread.UserId; activityOfUser.OwnerName = blogThread.Author; activityOfUser.OwnerType = ActivityOwnerTypes.Instance().User(); //是否是公开的(用于是否推送站点动态) bool isPublic = blogThread.PrivacyStatus == PrivacyStatus.Public ? true : false; //生成动态 activityService.Generate(activityOfUser, true, isPublic); } //删除动态 else if (auditDirection == false) { activityService.DeleteSource(TenantTypeIds.Instance().BlogThread(), blogThread.ThreadId); } }
void BarRatingEventModule_After(BarRating sender, CommonEventArgs eventArgs) { ActivityService activityService = new ActivityService(); if (eventArgs.EventOperationType == EventOperationType.Instance().Create()) { Activity actvity = Activity.New(); actvity.ActivityItemKey = ActivityItemKeys.Instance().CreateBarRating(); actvity.ApplicationId = BarConfig.Instance().ApplicationId; BarThreadService barThreadService = new BarThreadService(); BarThread barThread = barThreadService.Get(sender.ThreadId); if (barThread == null) { return; } var barUrlGetter = BarUrlGetterFactory.Get(barThread.TenantTypeId); if (barUrlGetter == null) { return; } actvity.IsOriginalThread = true; actvity.IsPrivate = barUrlGetter.IsPrivate(barThread.SectionId); actvity.OwnerId = barThread.SectionId; actvity.OwnerName = barThread.BarSection.Name; actvity.OwnerType = barUrlGetter.ActivityOwnerType; actvity.ReferenceId = barThread.ThreadId; actvity.ReferenceTenantTypeId = TenantTypeIds.Instance().BarThread(); actvity.SourceId = sender.RatingId; actvity.TenantTypeId = TenantTypeIds.Instance().BarRating(); actvity.UserId = sender.UserId; //自己回复自己时,不向自己的动态收件箱推送动态 if (actvity.UserId == barThread.UserId) { activityService.Generate(actvity, false); } else { activityService.Generate(actvity, true); } } else { activityService.DeleteSource(TenantTypeIds.Instance().BarRating(), sender.RatingId); } }
/// <summary> /// 评论资讯动态处理程序 /// </summary> /// <param name="comment"></param> /// <param name="eventArgs"></param> private void CmsCommentActivityEventModule_After(Comment comment, AuditEventArgs eventArgs) { NoticeService noticeService = new NoticeService(); ContentItem contentItem = null; if (comment.TenantTypeId == TenantTypeIds.Instance().ContentItem()) { //生成动态 ActivityService activityService = new ActivityService(); AuditService auditService = new AuditService(); bool? auditDirection = auditService.ResolveAuditDirection(eventArgs.OldAuditStatus, eventArgs.NewAuditStatus); if (auditDirection == true) { //创建评论的动态[关注评论者的粉丝可以看到该评论] Activity activity = Activity.New(); activity.ActivityItemKey = ActivityItemKeys.Instance().CreateCmsComment(); activity.ApplicationId = CmsConfig.Instance().ApplicationId; ContentItemService contentItemService = new ContentItemService(); contentItem = contentItemService.Get(comment.CommentedObjectId); if (contentItem == null || contentItem.UserId == comment.UserId) { return; } activity.IsOriginalThread = true; activity.IsPrivate = false; activity.OwnerId = comment.UserId; activity.OwnerName = comment.Author; activity.OwnerType = ActivityOwnerTypes.Instance().User(); activity.ReferenceId = contentItem.ContentItemId; activity.ReferenceTenantTypeId = TenantTypeIds.Instance().ContentItem(); activity.SourceId = comment.Id; activity.TenantTypeId = TenantTypeIds.Instance().Comment(); activity.UserId = comment.UserId; activityService.Generate(activity, false); } else if (auditDirection == false) { activityService.DeleteSource(TenantTypeIds.Instance().Comment(), comment.Id); } } }
/// <summary> /// 动态处理程序 /// </summary> private void PhotoActivityModule_After(Album album, AuditEventArgs eventArgs) { //生成动态 ActivityService activityService = new ActivityService(); AuditService auditService = new AuditService(); bool?auditDirection = auditService.ResolveAuditDirection(eventArgs.OldAuditStatus, eventArgs.NewAuditStatus); if (auditDirection == true) { //如果是新上传了照片,则更新最后修改时间 if (activityService.UpdateLastModified(TenantTypeIds.Instance().Album(), album.AlbumId)) { return; } //初始化Owner为用户的动态 Activity activity = Activity.New(); activity.ActivityItemKey = ActivityItemKeys.Instance().CreatePhoto(); activity.ApplicationId = PhotoConfig.Instance().ApplicationId; activity.HasImage = true; activity.HasMusic = false; activity.HasVideo = false; activity.IsOriginalThread = true; activity.IsPrivate = album.PrivacyStatus == PrivacyStatus.Private ? true : false; activity.UserId = album.UserId; activity.ReferenceId = 0; activity.ReferenceTenantTypeId = string.Empty; activity.SourceId = album.AlbumId; activity.TenantTypeId = TenantTypeIds.Instance().Album(); activity.OwnerId = album.UserId; activity.OwnerName = album.Author; activity.OwnerType = ActivityOwnerTypes.Instance().User(); //是否是公开的(用于是否推送站点动态) bool isPublic = album.PrivacyStatus == PrivacyStatus.Public ? true : false; activityService.Generate(activity, true, isPublic); } else if (auditDirection == false) //删除动态 { activityService.DeleteSource(TenantTypeIds.Instance().Album(), album.AlbumId); } }
/// <summary> /// 评论动态处理 /// </summary> /// <param name="comment"></param> /// <param name="eventArgs"></param> private void CommentActivityEventModule_After(Comment comment, AuditEventArgs eventArgs) { bool? auditDirection = auditService.ResolveAuditDirection(eventArgs.OldAuditStatus, eventArgs.NewAuditStatus); Photo photo = null; if (comment.TenantTypeId == TenantTypeIds.Instance().Photo() && comment.UserId != comment.ToUserId) { if (auditDirection == true) { photo = photoService.GetPhoto(comment.CommentedObjectId); Activity activityOfFollower = Activity.New(); activityOfFollower.ActivityItemKey = ActivityItemKeys.Instance().CommentPhoto(); activityOfFollower.ApplicationId = PhotoConfig.Instance().ApplicationId; activityOfFollower.HasImage = false; activityOfFollower.HasMusic = false; activityOfFollower.HasVideo = false; activityOfFollower.IsOriginalThread = true; activityOfFollower.IsPrivate = photo.PrivacyStatus == PrivacyStatus.Private ? true : false; activityOfFollower.UserId = comment.UserId; activityOfFollower.ReferenceId = photo.PhotoId; activityOfFollower.ReferenceTenantTypeId = TenantTypeIds.Instance().Photo(); activityOfFollower.SourceId = comment.Id; activityOfFollower.TenantTypeId = TenantTypeIds.Instance().Comment(); activityOfFollower.OwnerId = comment.UserId; activityOfFollower.OwnerName = comment.Author; activityOfFollower.OwnerType = ActivityOwnerTypes.Instance().User(); //是否是公开的(用于是否推送站点动态) bool isPublic = photo.PrivacyStatus == PrivacyStatus.Public ? true : false; activityService.Generate(activityOfFollower, true, isPublic); } else { activityService.DeleteSource(TenantTypeIds.Instance().Comment(), comment.Id); } } }
/// <summary> /// 圈人动态处理 /// </summary> private void LabelPhotoActivityModule_After(PhotoLabel photoLabel, CommonEventArgs eventArgs) { Photo photo = photoService.GetPhoto(photoLabel.PhotoId); if (eventArgs.EventOperationType == EventOperationType.Instance().Create()) { //初始化Owner为用户的动态 Activity activity = Activity.New(); activity.ActivityItemKey = ActivityItemKeys.Instance().LabelPhoto(); activity.ApplicationId = PhotoConfig.Instance().ApplicationId; activity.HasImage = true; activity.HasMusic = false; activity.HasVideo = false; activity.IsOriginalThread = true; activity.IsPrivate = photoLabel.Photo.PrivacyStatus == PrivacyStatus.Private ? true : false; activity.UserId = photo.UserId; activity.ReferenceId = photoLabel.PhotoId; activity.ReferenceTenantTypeId = TenantTypeIds.Instance().Photo(); activity.SourceId = photoLabel.LabelId; activity.TenantTypeId = TenantTypeIds.Instance().PhotoLabel(); activity.OwnerId = photo.UserId; activity.OwnerName = photo.Author; activity.OwnerType = ActivityOwnerTypes.Instance().User(); //是否是公开的(用于是否推送站点动态) bool isPublic = photoLabel.Photo.PrivacyStatus == PrivacyStatus.Public ? true : false; activityService.Generate(activity, true, isPublic); //再为被圈用户生成动态 new ActivityRepository().InsertUserInboxs(activity.ActivityId, new long[] { photoLabel.ObjetId }); } else { activityService.DeleteSource(TenantTypeIds.Instance().PhotoLabel(), photoLabel.LabelId); } }
/// <summary> /// 动态处理程序 /// </summary> /// <param name="group"></param> /// <param name="eventArgs"></param> private void GroupEntityActivityModule_After(GroupEntity group, AuditEventArgs eventArgs) { //生成动态 ActivityService activityService = new ActivityService(); AuditService auditService = new AuditService(); bool? auditDirection = auditService.ResolveAuditDirection(eventArgs.OldAuditStatus, eventArgs.NewAuditStatus); if (auditDirection == true) //生成动态 { if (group == null) { return; } //生成Owner为用户的动态 Activity actvityOfBar = Activity.New(); actvityOfBar.ActivityItemKey = ActivityItemKeys.Instance().CreateGroup(); actvityOfBar.ApplicationId = GroupConfig.Instance().ApplicationId; actvityOfBar.IsOriginalThread = true; actvityOfBar.IsPrivate = !group.IsPublic; actvityOfBar.UserId = group.UserId; actvityOfBar.ReferenceId = 0;//没有涉及到的实体 actvityOfBar.ReferenceTenantTypeId = string.Empty; actvityOfBar.SourceId = group.GroupId; actvityOfBar.TenantTypeId = TenantTypeIds.Instance().Group(); actvityOfBar.OwnerId = group.UserId; actvityOfBar.OwnerName = group.User.DisplayName; actvityOfBar.OwnerType = ActivityOwnerTypes.Instance().User(); activityService.Generate(actvityOfBar, true); } else if (auditDirection == false) //删除动态 { activityService.DeleteSource(TenantTypeIds.Instance().Group(), group.GroupId); } }
/// <summary> /// 发布微博动态项 /// </summary> public static string CreateMicroblog(this ActivityItemKeys activityItemKeys) { return("CreateMicroblog"); }
/// <summary> /// 评论的相关事件处理 /// </summary> private void CommentEventModule_After(Comment comment, AuditEventArgs eventArgs) { if (comment.TenantTypeId != TenantTypeIds.Instance().AskQuestion() && comment.TenantTypeId != TenantTypeIds.Instance().AskAnswer()) { return; } bool? auditDirection = auditService.ResolveAuditDirection(eventArgs.OldAuditStatus, eventArgs.NewAuditStatus); AskQuestion question = null; //评论问题 if (comment.TenantTypeId == TenantTypeIds.Instance().AskQuestion()) { //生成动态 if (auditDirection == true) { question = askService.GetQuestion(comment.CommentedObjectId); if (question.UserId != comment.UserId) { //创建评论的动态[关注评论者的粉丝可以看到该评论] Activity activityOfFollower = Activity.New(); activityOfFollower.ActivityItemKey = ActivityItemKeys.Instance().CommentAskQuestion(); activityOfFollower.ApplicationId = AskConfig.Instance().ApplicationId; activityOfFollower.IsOriginalThread = true; activityOfFollower.IsPrivate = false; activityOfFollower.TenantTypeId = TenantTypeIds.Instance().Comment(); activityOfFollower.SourceId = comment.Id; activityOfFollower.UserId = comment.UserId; activityOfFollower.ReferenceId = question.QuestionId; activityOfFollower.ReferenceTenantTypeId = TenantTypeIds.Instance().AskQuestion(); activityOfFollower.OwnerId = comment.UserId; activityOfFollower.OwnerName = comment.Author; activityOfFollower.OwnerType = ActivityOwnerTypes.Instance().User(); activityService.Generate(activityOfFollower, true); //创建评论的动态[关注该问题的用户可以看到该评论] Activity activityOfQuestionSubscriber = Activity.New(); activityOfQuestionSubscriber.ActivityItemKey = ActivityItemKeys.Instance().CommentAskQuestion(); activityOfQuestionSubscriber.ApplicationId = AskConfig.Instance().ApplicationId; activityOfQuestionSubscriber.IsOriginalThread = true; activityOfQuestionSubscriber.IsPrivate = false; activityOfQuestionSubscriber.TenantTypeId = TenantTypeIds.Instance().Comment(); activityOfQuestionSubscriber.SourceId = comment.Id; activityOfQuestionSubscriber.UserId = comment.UserId; activityOfQuestionSubscriber.ReferenceId = question.QuestionId; activityOfQuestionSubscriber.ReferenceTenantTypeId = TenantTypeIds.Instance().AskQuestion(); activityOfQuestionSubscriber.OwnerId = question.QuestionId; activityOfQuestionSubscriber.OwnerName = question.Subject; activityOfQuestionSubscriber.OwnerType = ActivityOwnerTypes.Instance().AskQuestion(); activityService.Generate(activityOfQuestionSubscriber, false); } } else if (auditDirection == false) { activityService.DeleteSource(TenantTypeIds.Instance().Comment(), comment.Id); } } //评论回答 else if (comment.TenantTypeId == TenantTypeIds.Instance().AskAnswer()) { //生成动态 if (auditDirection == true) { AskAnswer answer = askService.GetAnswer(comment.CommentedObjectId); question = answer.Question; if (answer.UserId != comment.UserId) { //创建评论的动态[关注评论者的粉丝可以看到该评论] Activity activityOfFollower = Activity.New(); activityOfFollower.ActivityItemKey = ActivityItemKeys.Instance().CommentAskAnswer(); activityOfFollower.ApplicationId = AskConfig.Instance().ApplicationId; activityOfFollower.IsOriginalThread = true; activityOfFollower.IsPrivate = false; activityOfFollower.TenantTypeId = TenantTypeIds.Instance().Comment(); activityOfFollower.SourceId = comment.Id; activityOfFollower.UserId = comment.UserId; activityOfFollower.ReferenceId = answer.AnswerId; activityOfFollower.ReferenceTenantTypeId = TenantTypeIds.Instance().AskAnswer(); activityOfFollower.OwnerId = comment.UserId; activityOfFollower.OwnerName = comment.Author; activityOfFollower.OwnerType = ActivityOwnerTypes.Instance().User(); activityService.Generate(activityOfFollower, true); //创建评论的动态[关注该问题的用户可以看到该评论] Activity activityOfQuestionSubscriber = Activity.New(); activityOfQuestionSubscriber.ActivityItemKey = ActivityItemKeys.Instance().CommentAskAnswer(); activityOfQuestionSubscriber.ApplicationId = AskConfig.Instance().ApplicationId; activityOfQuestionSubscriber.IsOriginalThread = true; activityOfQuestionSubscriber.IsPrivate = false; activityOfQuestionSubscriber.TenantTypeId = TenantTypeIds.Instance().Comment(); activityOfQuestionSubscriber.SourceId = comment.Id; activityOfQuestionSubscriber.UserId = comment.UserId; activityOfQuestionSubscriber.ReferenceId = answer.AnswerId; activityOfQuestionSubscriber.ReferenceTenantTypeId = TenantTypeIds.Instance().AskAnswer(); activityOfQuestionSubscriber.OwnerId = question.QuestionId; activityOfQuestionSubscriber.OwnerName = question.Subject; activityOfQuestionSubscriber.OwnerType = ActivityOwnerTypes.Instance().AskQuestion(); activityService.Generate(activityOfQuestionSubscriber, false); } } else if (auditDirection == false) { activityService.DeleteSource(TenantTypeIds.Instance().Comment(), comment.Id); } } ////关注的问题有新评论时,自动通知关注者 //IEnumerable<long> userIds = subscribeService.GetUserIdsOfObject(question.QuestionId); //foreach (var userId in userIds) //{ // //通知的对象排除掉自己 // if (userId == comment.UserId) // { // continue; // } // Notice notice = Notice.New(); // notice.UserId = userId; // notice.ApplicationId = AskConfig.Instance().ApplicationId; // notice.TypeId = NoticeTypeIds.Instance().Hint(); // notice.LeadingActor = comment.Author; // notice.LeadingActorUrl =SiteUrls.FullUrl(SiteUrls.Instance().AskUser(UserIdToUserNameDictionary.GetUserName(comment.UserId))); // notice.RelativeObjectName = HtmlUtility.TrimHtml(question.Subject, 64); // notice.RelativeObjectUrl = SiteUrls.FullUrl(SiteUrls.Instance().AskQuestionDetail(question.QuestionId)); // notice.TemplateName = NoticeTemplateNames.Instance().NewAskComment(); // noticeService.Create(notice); //} //评论者自动关注该问题 if (!subscribeService.IsSubscribed(question.QuestionId, comment.UserId)) { subscribeService.Subscribe(question.QuestionId, comment.UserId); //问题关注数计数,用于“可能感兴趣的问题”关联表查询 countService.ChangeCount(CountTypes.Instance().QuestionFollowerCount(), question.QuestionId, question.UserId, 1, false); } }
/// <summary> /// 问题审核状态变更事件 /// </summary> private void AskQuestionAuditEventModule_After(AskQuestion question, AuditEventArgs eventArgs) { bool?auditDirection = auditService.ResolveAuditDirection(eventArgs.OldAuditStatus, eventArgs.NewAuditStatus); //审核状态发生变化时处理积分 string pointItemKey = string.Empty; string eventOperationType = string.Empty; if (auditDirection == true) //加积分 { pointItemKey = PointItemKeys.Instance().Ask_CreateQuestion(); if (eventArgs.OldAuditStatus == null) { eventOperationType = EventOperationType.Instance().Create(); } else { eventOperationType = EventOperationType.Instance().Approved(); } } else if (auditDirection == false) //减积分 { pointItemKey = PointItemKeys.Instance().Ask_DeleteQuestion(); if (eventArgs.NewAuditStatus == null) { eventOperationType = EventOperationType.Instance().Delete(); } else { eventOperationType = EventOperationType.Instance().Disapproved(); } } if (!string.IsNullOrEmpty(pointItemKey)) { string description = string.Format(ResourceAccessor.GetString("PointRecord_Pattern_" + eventOperationType), "问题", question.Subject); pointService.GenerateByRole(question.UserId, pointItemKey, description, eventOperationType == EventOperationType.Instance().Create() || eventOperationType == EventOperationType.Instance().Delete() && eventArgs.OperatorInfo.OperatorUserId == question.UserId); //记录用户的威望 PointItem pointItem = pointService.GetPointItem(pointItemKey); ownerDataService.Change(question.UserId, OwnerDataKeys.Instance().UserAskReputation(), pointItem.ReputationPoints); } //审核状态发生变化时生成动态 if (auditDirection == true) { //1.创建发布问题的动态[关注发布者的粉丝可以看到该动态] Activity activityOfFollower = Activity.New(); activityOfFollower.ActivityItemKey = ActivityItemKeys.Instance().CreateAskQuestion(); activityOfFollower.ApplicationId = AskConfig.Instance().ApplicationId; //判断是否有图片、音频、视频 AttachmentService attachmentService = new AttachmentService(TenantTypeIds.Instance().AskQuestion()); IEnumerable <Attachment> attachments = attachmentService.GetsByAssociateId(question.QuestionId); if (attachments != null && attachments.Any(n => n.MediaType == MediaType.Image)) { activityOfFollower.HasImage = true; } activityOfFollower.IsOriginalThread = true; activityOfFollower.IsPrivate = false; activityOfFollower.TenantTypeId = TenantTypeIds.Instance().AskQuestion(); activityOfFollower.SourceId = question.QuestionId; activityOfFollower.UserId = question.UserId; activityOfFollower.ReferenceId = 0; activityOfFollower.ReferenceTenantTypeId = string.Empty; activityOfFollower.OwnerId = question.UserId; activityOfFollower.OwnerName = question.Author; activityOfFollower.OwnerType = ActivityOwnerTypes.Instance().User(); activityService.Generate(activityOfFollower, true); //2.创建发布问题的动态[关注问题所属标签的用户可以看到该动态] Activity activityOfTagSubscriber = Activity.New(); activityOfTagSubscriber.ActivityItemKey = ActivityItemKeys.Instance().CreateAskQuestion(); activityOfTagSubscriber.ApplicationId = AskConfig.Instance().ApplicationId; activityOfTagSubscriber.HasImage = activityOfFollower.HasImage; activityOfTagSubscriber.IsOriginalThread = true; activityOfTagSubscriber.IsPrivate = false; activityOfTagSubscriber.TenantTypeId = TenantTypeIds.Instance().AskQuestion(); activityOfTagSubscriber.SourceId = question.QuestionId; activityOfTagSubscriber.UserId = question.UserId; activityOfTagSubscriber.ReferenceId = 0; activityOfTagSubscriber.ReferenceTenantTypeId = string.Empty; IEnumerable <Tag> tags = tagService.GetTopTagsOfItem(question.QuestionId, 100); foreach (var tag in tags) { activityOfTagSubscriber.OwnerId = tag.TagId; activityOfTagSubscriber.OwnerName = tag.TagName; activityOfTagSubscriber.OwnerType = ActivityOwnerTypes.Instance().AskTag(); activityService.Generate(activityOfTagSubscriber, false); } } //删除动态 else if (auditDirection == false) { activityService.DeleteSource(TenantTypeIds.Instance().AskQuestion(), question.QuestionId); } }
/// <summary> /// 评论回答 /// </summary> public static string CommentAskAnswer(this ActivityItemKeys activityItemKeys) { return("CommentAskAnswer"); }
/// <summary> /// 动态处理程序 /// </summary> /// <param name="barThread"></param> /// <param name="eventArgs"></param> private void BarThreadActivityModule_After(BarThread barThread, AuditEventArgs eventArgs) { //1、通过审核的内容才生成动态;(不满足) //2、把通过审核的内容设置为未通过审核或者删除内容,需要移除动态;(不满足) //3、把未通过审核的内容通过审核,需要添加动态; (不满足) //4、详见动态需求说明 //生成动态 ActivityService activityService = new ActivityService(); AuditService auditService = new AuditService(); bool? auditDirection = auditService.ResolveAuditDirection(eventArgs.OldAuditStatus, eventArgs.NewAuditStatus); if (auditDirection == true) //生成动态 { if (barThread.BarSection == null) { return; } var barUrlGetter = BarUrlGetterFactory.Get(barThread.TenantTypeId); if (barUrlGetter == null) { return; } //生成Owner为帖吧的动态 Activity actvityOfBar = Activity.New(); actvityOfBar.ActivityItemKey = ActivityItemKeys.Instance().CreateBarThread(); actvityOfBar.ApplicationId = BarConfig.Instance().ApplicationId; AttachmentService attachmentService = new AttachmentService(TenantTypeIds.Instance().BarThread()); IEnumerable <Attachment> attachments = attachmentService.GetsByAssociateId(barThread.ThreadId); if (attachments != null && attachments.Any(n => n.MediaType == MediaType.Image)) { actvityOfBar.HasImage = true; } actvityOfBar.IsOriginalThread = true; actvityOfBar.IsPrivate = false; actvityOfBar.UserId = barThread.UserId; actvityOfBar.ReferenceId = 0;//没有涉及到的实体 actvityOfBar.ReferenceTenantTypeId = string.Empty; actvityOfBar.SourceId = barThread.ThreadId; actvityOfBar.TenantTypeId = TenantTypeIds.Instance().BarThread(); actvityOfBar.OwnerId = barThread.SectionId; actvityOfBar.OwnerName = barThread.BarSection.Name; actvityOfBar.OwnerType = barUrlGetter.ActivityOwnerType; activityService.Generate(actvityOfBar, false); if (!barUrlGetter.IsPrivate(barThread.SectionId)) { //生成Owner为用户的动态 Activity actvityOfUser = Activity.New(); actvityOfUser.ActivityItemKey = actvityOfBar.ActivityItemKey; actvityOfUser.ApplicationId = actvityOfBar.ApplicationId; actvityOfUser.HasImage = actvityOfBar.HasImage; actvityOfUser.HasMusic = actvityOfBar.HasMusic; actvityOfUser.HasVideo = actvityOfBar.HasVideo; actvityOfUser.IsOriginalThread = actvityOfBar.IsOriginalThread; actvityOfUser.IsPrivate = actvityOfBar.IsPrivate; actvityOfUser.UserId = actvityOfBar.UserId; actvityOfUser.ReferenceId = actvityOfBar.ReferenceId; actvityOfUser.SourceId = actvityOfBar.SourceId; actvityOfUser.TenantTypeId = actvityOfBar.TenantTypeId; actvityOfUser.OwnerId = barThread.UserId; actvityOfUser.OwnerName = barThread.User.DisplayName; actvityOfUser.OwnerType = ActivityOwnerTypes.Instance().User(); activityService.Generate(actvityOfUser, false); } } else if (auditDirection == false) //删除动态 { activityService.DeleteSource(TenantTypeIds.Instance().BarThread(), barThread.ThreadId); } }
/// <summary> /// 发布回答 /// </summary> public static string CreateAskAnswer(this ActivityItemKeys activityItemKeys) { return("CreateAskAnswer"); }
/// <summary> /// 文章评论 /// </summary> public static string CreateBlogComment(this ActivityItemKeys activityItemKeys) { return("CreateBlogComment"); }
/// <summary> /// 发布文章 /// </summary> public static string CreateBlogThread(this ActivityItemKeys activityItemKeys) { return("CreateBlogThread"); }
/// <summary> /// 动态处理程序 /// </summary> /// <param name="sender"></param> /// <param name="eventArgs"></param> private void BarPostActivityModule_After(BarPost sender, AuditEventArgs eventArgs) { ActivityService activityService = new ActivityService(); AuditService auditService = new AuditService(); bool? auditDirection = auditService.ResolveAuditDirection(eventArgs.OldAuditStatus, eventArgs.NewAuditStatus); if (auditDirection == true) //生成动态 { BarThreadService barThreadService = new BarThreadService(); BarThread barThread = barThreadService.Get(sender.ThreadId); if (barThread == null) { return; } if (sender.UserId == barThread.UserId) { return; } var barUrlGetter = BarUrlGetterFactory.Get(barThread.TenantTypeId); if (barUrlGetter == null) { return; } if (sender.ParentId > 0) { BarPost parentPost = new BarPostService().Get(sender.ParentId); if (parentPost == null) { return; } if (parentPost.UserId == sender.UserId) { return; } } Activity actvity = Activity.New(); actvity.ActivityItemKey = ActivityItemKeys.Instance().CreateBarPost(); actvity.ApplicationId = BarConfig.Instance().ApplicationId; //仅一级回复可以上传附件 if (sender.ParentId == 0) { AttachmentService attachmentService = new AttachmentService(TenantTypeIds.Instance().BarPost()); IEnumerable <Attachment> attachments = attachmentService.GetsByAssociateId(sender.PostId); if (attachments != null && attachments.Any(n => n.MediaType == MediaType.Image)) { actvity.HasImage = true; } //actvity.HasMusic = barThread.HasMusic; //actvity.HasVideo = barThread.HasVideo; } actvity.IsOriginalThread = true; actvity.IsPrivate = barUrlGetter.IsPrivate(barThread.SectionId); actvity.OwnerId = barThread.SectionId; actvity.OwnerName = barThread.BarSection.Name; actvity.OwnerType = barUrlGetter.ActivityOwnerType; actvity.ReferenceId = barThread.ThreadId; actvity.ReferenceTenantTypeId = TenantTypeIds.Instance().BarThread(); actvity.SourceId = sender.PostId; actvity.TenantTypeId = TenantTypeIds.Instance().BarPost(); actvity.UserId = sender.UserId; //创建从属内容,不向自己的动态收件箱推送动态 activityService.Generate(actvity, false); } else if (auditDirection == false) //删除动态 { activityService.DeleteSource(TenantTypeIds.Instance().BarPost(), sender.PostId); } }
/// <summary> /// 回答被赞同的相关事件处理 /// </summary> private void AskAnswerSupportEventModule_After(long objectId, SupportOpposeEventArgs eventArgs) { if (eventArgs.TenantTypeId == TenantTypeIds.Instance().AskAnswer()) { //如果不是第一次顶踩,则不处理 if (!eventArgs.FirstTime) { return; } if (eventArgs.EventOperationType == EventOperationType.Instance().Support()) { AskAnswer answer = askService.GetAnswer(objectId); AskQuestion question = answer.Question; //创建顶回答的动态[关注回答者的粉丝可以看到该顶信息] Activity activityOfFollower = Activity.New(); activityOfFollower.ActivityItemKey = ActivityItemKeys.Instance().SupportAskAnswer(); activityOfFollower.ApplicationId = AskConfig.Instance().ApplicationId; activityOfFollower.IsOriginalThread = true; activityOfFollower.IsPrivate = false; activityOfFollower.TenantTypeId = TenantTypeIds.Instance().AskAnswer(); activityOfFollower.SourceId = answer.AnswerId; activityOfFollower.UserId = eventArgs.UserId; activityOfFollower.ReferenceId = answer.AnswerId; activityOfFollower.ReferenceTenantTypeId = TenantTypeIds.Instance().AskAnswer(); activityOfFollower.OwnerId = eventArgs.UserId; activityOfFollower.OwnerName = userService.GetFullUser(eventArgs.UserId).DisplayName; activityOfFollower.OwnerType = ActivityOwnerTypes.Instance().User(); activityService.Generate(activityOfFollower, true); //创建顶回答的动态[关注该问题的用户可以看到该顶信息] Activity activityOfQuestionSubscriber = Activity.New(); activityOfQuestionSubscriber.ActivityItemKey = ActivityItemKeys.Instance().SupportAskAnswer(); activityOfQuestionSubscriber.ApplicationId = AskConfig.Instance().ApplicationId; activityOfQuestionSubscriber.IsOriginalThread = true; activityOfQuestionSubscriber.IsPrivate = false; activityOfQuestionSubscriber.TenantTypeId = TenantTypeIds.Instance().AskAnswer(); activityOfQuestionSubscriber.SourceId = answer.AnswerId; activityOfQuestionSubscriber.UserId = eventArgs.UserId; activityOfQuestionSubscriber.ReferenceId = answer.AnswerId; activityOfQuestionSubscriber.ReferenceTenantTypeId = TenantTypeIds.Instance().AskAnswer(); activityOfQuestionSubscriber.OwnerId = question.QuestionId; activityOfQuestionSubscriber.OwnerName = question.Subject; activityOfQuestionSubscriber.OwnerType = ActivityOwnerTypes.Instance().AskQuestion(); activityService.Generate(activityOfQuestionSubscriber, false); //处理积分和威望 string pointItemKey = PointItemKeys.Instance().Ask_BeSupported(); //回答收到赞同时产生积分 string eventOperationType = EventOperationType.Instance().Support(); string description = string.Format(ResourceAccessor.GetString("PointRecord_Pattern_" + eventOperationType), "回答", question.Subject); pointService.GenerateByRole(answer.UserId, pointItemKey, description); //记录用户的威望 PointItem pointItem = pointService.GetPointItem(pointItemKey); ownerDataService.Change(answer.UserId, OwnerDataKeys.Instance().UserAskReputation(), pointItem.ReputationPoints); //赞同者自动关注问题 if (!subscribeService.IsSubscribed(question.QuestionId, eventArgs.UserId)) { subscribeService.Subscribe(question.QuestionId, eventArgs.UserId); //问题关注数计数,用于“可能感兴趣的问题”关联表查询 countService.ChangeCount(CountTypes.Instance().QuestionFollowerCount(), question.QuestionId, question.UserId, 1, false); } //增加赞同的用户计数 ownerDataService.Change(answer.UserId, OwnerDataKeys.Instance().AnswerSupportCount(), 1); } else if (eventArgs.EventOperationType == EventOperationType.Instance().Oppose()) { AskAnswer answer = askService.GetAnswer(objectId); AskQuestion question = answer.Question; //处理积分和威望 string pointItemKey = PointItemKeys.Instance().Ask_BeOpposed(); //回答收到反对时产生积分 string eventOperationType = EventOperationType.Instance().Oppose(); string description = string.Format(ResourceAccessor.GetString("PointRecord_Pattern_" + eventOperationType), "回答", question.Subject); pointService.GenerateByRole(answer.UserId, pointItemKey, description); //记录用户的威望 PointItem pointItem = pointService.GetPointItem(pointItemKey); ownerDataService.Change(answer.UserId, OwnerDataKeys.Instance().UserAskReputation(), pointItem.ReputationPoints); //反对者自动关注问题 if (!subscribeService.IsSubscribed(question.QuestionId, eventArgs.UserId)) { subscribeService.Subscribe(answer.QuestionId, eventArgs.UserId); //问题关注数计数,用于“可能感兴趣的问题”关联表查询 countService.ChangeCount(CountTypes.Instance().QuestionFollowerCount(), question.QuestionId, question.UserId, 1, false); } //增加反对的用户计数 ownerDataService.Change(answer.UserId, OwnerDataKeys.Instance().AnswerOpposeCount(), 1); } } }
/// <summary> /// 回答审核状态变更事件 /// </summary> private void AskAnswerAuditEventModule_After(AskAnswer answer, AuditEventArgs eventArgs) { bool?auditDirection = auditService.ResolveAuditDirection(eventArgs.OldAuditStatus, eventArgs.NewAuditStatus); //审核状态发生变化时处理积分 string pointItemKey = string.Empty; string eventOperationType = string.Empty; if (auditDirection == true) //加积分 { pointItemKey = PointItemKeys.Instance().Ask_CreateAnswer(); if (eventArgs.OldAuditStatus == null) { eventOperationType = EventOperationType.Instance().Create(); } else { eventOperationType = EventOperationType.Instance().Approved(); } } else if (auditDirection == false) //减积分 { pointItemKey = PointItemKeys.Instance().Ask_DeleteAnswer(); if (eventArgs.NewAuditStatus == null) { eventOperationType = EventOperationType.Instance().Delete(); } else { eventOperationType = EventOperationType.Instance().Disapproved(); } } if (!string.IsNullOrEmpty(pointItemKey)) { AskQuestion question = answer.Question; string description = string.Format(ResourceAccessor.GetString("PointRecord_Pattern_" + eventOperationType), "回答", HtmlUtility.TrimHtml(answer.Body, 10)); pointService.GenerateByRole(answer.UserId, pointItemKey, description, eventOperationType == EventOperationType.Instance().Create() || eventOperationType == EventOperationType.Instance().Delete()); //记录用户的威望 PointItem pointItem = pointService.GetPointItem(pointItemKey); ownerDataService.Change(answer.UserId, OwnerDataKeys.Instance().UserAskReputation(), pointItem.ReputationPoints); } //审核状态发生变化时生成动态 if (auditDirection == true) { AskQuestion question = answer.Question; //创建回答的动态[关注回答者的粉丝可以看到该回答] Activity activityOfFollower = Activity.New(); activityOfFollower.ActivityItemKey = ActivityItemKeys.Instance().CreateAskAnswer(); activityOfFollower.ApplicationId = AskConfig.Instance().ApplicationId; //判断是否有图片、音频、视频 AttachmentService attachmentService = new AttachmentService(TenantTypeIds.Instance().AskAnswer()); IEnumerable <Attachment> attachments = attachmentService.GetsByAssociateId(answer.AnswerId); if (attachments != null && attachments.Any(n => n.MediaType == MediaType.Image)) { activityOfFollower.HasImage = true; } activityOfFollower.IsOriginalThread = true; activityOfFollower.IsPrivate = false; activityOfFollower.TenantTypeId = TenantTypeIds.Instance().AskAnswer(); activityOfFollower.SourceId = answer.AnswerId; activityOfFollower.UserId = answer.UserId; activityOfFollower.ReferenceId = answer.QuestionId; activityOfFollower.ReferenceTenantTypeId = TenantTypeIds.Instance().AskQuestion(); activityOfFollower.OwnerId = answer.UserId; activityOfFollower.OwnerName = answer.Author; activityOfFollower.OwnerType = ActivityOwnerTypes.Instance().User(); activityService.Generate(activityOfFollower, true); //创建回答的动态[关注该问题的用户可以看到该回答] Activity activityOfQuestionSubscriber = Activity.New(); activityOfQuestionSubscriber.ActivityItemKey = ActivityItemKeys.Instance().CreateAskAnswer(); activityOfQuestionSubscriber.ApplicationId = AskConfig.Instance().ApplicationId; activityOfQuestionSubscriber.HasImage = activityOfFollower.HasImage; activityOfQuestionSubscriber.IsOriginalThread = true; activityOfQuestionSubscriber.IsPrivate = false; activityOfQuestionSubscriber.TenantTypeId = TenantTypeIds.Instance().AskAnswer(); activityOfQuestionSubscriber.SourceId = answer.AnswerId; activityOfQuestionSubscriber.UserId = answer.UserId; activityOfQuestionSubscriber.ReferenceId = answer.QuestionId; activityOfQuestionSubscriber.ReferenceTenantTypeId = TenantTypeIds.Instance().AskQuestion(); activityOfQuestionSubscriber.OwnerId = question.QuestionId; activityOfQuestionSubscriber.OwnerName = question.Subject; activityOfQuestionSubscriber.OwnerType = ActivityOwnerTypes.Instance().AskQuestion(); activityService.Generate(activityOfQuestionSubscriber, false); } else if (auditDirection == false) { activityService.DeleteSource(TenantTypeIds.Instance().AskAnswer(), answer.AnswerId); } }
/// <summary> /// 发布问题 /// </summary> public static string CreateAskQuestion(this ActivityItemKeys activityItemKeys) { return("CreateAskQuestion"); }
/// <summary> /// 微博动态 /// </summary> /// <param name="sender">微博实体</param> /// <param name="eventArgs">事件参数</param> private void MicroblogActivityModule_After(MicroblogEntity sender, AuditEventArgs eventArgs) { ActivityService activityService = new ActivityService(); bool? auditDirection = new AuditService().ResolveAuditDirection(eventArgs.OldAuditStatus, eventArgs.NewAuditStatus); if (auditDirection == true) { var microblogUrlGetter = MicroblogUrlGetterFactory.Get(sender.TenantTypeId); if (microblogUrlGetter == null) { return; } Activity actvity = Activity.New(); actvity.ActivityItemKey = ActivityItemKeys.Instance().CreateMicroblog(); actvity.ApplicationId = MicroblogConfig.Instance().ApplicationId; actvity.HasImage = sender.HasPhoto; actvity.HasMusic = sender.HasMusic; actvity.HasVideo = sender.HasVideo; actvity.IsOriginalThread = !sender.IsForward; actvity.IsPrivate = false; actvity.SourceId = sender.MicroblogId; actvity.TenantTypeId = TenantTypeIds.Instance().Microblog(); actvity.UserId = sender.UserId; //生成Owner为用户的动态 if (microblogUrlGetter.ActivityOwnerType == ActivityOwnerTypes.Instance().User()) { Activity actvityOfUser = Activity.New(); actvityOfUser.ActivityItemKey = actvity.ActivityItemKey; actvityOfUser.ApplicationId = actvity.ApplicationId; actvityOfUser.HasImage = actvity.HasImage; actvityOfUser.HasMusic = actvity.HasMusic; actvityOfUser.HasVideo = actvity.HasVideo; actvityOfUser.IsOriginalThread = actvity.IsOriginalThread; actvityOfUser.IsPrivate = actvity.IsPrivate; actvityOfUser.UserId = actvity.UserId; actvityOfUser.ReferenceId = actvity.ReferenceId; actvityOfUser.SourceId = actvity.SourceId; actvityOfUser.TenantTypeId = actvity.TenantTypeId; actvityOfUser.OwnerId = sender.UserId; actvityOfUser.OwnerName = sender.User.DisplayName; actvityOfUser.OwnerType = ActivityOwnerTypes.Instance().User(); activityService.Generate(actvityOfUser, true); } else { actvity.OwnerId = sender.OwnerId; actvity.OwnerType = microblogUrlGetter.ActivityOwnerType; actvity.OwnerName = microblogUrlGetter.GetOwnerName(sender.OwnerId); activityService.Generate(actvity, false); //生成Owner为用户的动态 if (!microblogUrlGetter.IsPrivate(sender.OwnerId)) { Activity actvityOfUser = Activity.New(); actvityOfUser.ActivityItemKey = actvity.ActivityItemKey; actvityOfUser.ApplicationId = actvity.ApplicationId; actvityOfUser.HasImage = actvity.HasImage; actvityOfUser.HasMusic = actvity.HasMusic; actvityOfUser.HasVideo = actvity.HasVideo; actvityOfUser.IsOriginalThread = actvity.IsOriginalThread; actvityOfUser.IsPrivate = actvity.IsPrivate; actvityOfUser.UserId = actvity.UserId; actvityOfUser.ReferenceId = actvity.ReferenceId; actvityOfUser.SourceId = actvity.SourceId; actvityOfUser.TenantTypeId = actvity.TenantTypeId; actvityOfUser.OwnerId = sender.UserId; actvityOfUser.OwnerName = sender.User.DisplayName; actvityOfUser.OwnerType = ActivityOwnerTypes.Instance().User(); activityService.Generate(actvityOfUser, false); } } } else if (auditDirection == false) //删除动态 { activityService.DeleteSource(TenantTypeIds.Instance().Microblog(), sender.MicroblogId); } }
/// <summary> /// 评论问题 /// </summary> public static string CommentAskQuestion(this ActivityItemKeys activityItemKeys) { return("CommentAskQuestion"); }
/// <summary> /// 兑换商品 /// </summary> public static string ExchangeGift(this ActivityItemKeys activityItemKeys) { return("ExchangeGift"); }
/// <summary> /// 赞同回答 /// </summary> public static string SupportAskAnswer(this ActivityItemKeys activityItemKeys) { return("SupportAskAnswer"); }
/// <summary> /// 评论日志动态处理程序 /// </summary> /// <param name="comment"></param> /// <param name="eventArgs"></param> private void BlogCommentActivityEventModule_After(Comment comment, AuditEventArgs eventArgs) { NoticeService noticeService = new NoticeService(); BlogThread blogThread = null; if (comment.TenantTypeId == TenantTypeIds.Instance().BlogThread()) { //生成动态 ActivityService activityService = new ActivityService(); AuditService auditService = new AuditService(); bool? auditDirection = auditService.ResolveAuditDirection(eventArgs.OldAuditStatus, eventArgs.NewAuditStatus); if (auditDirection == true) { //创建评论的动态[关注评论者的粉丝可以看到该评论] Activity activity = Activity.New(); activity.ActivityItemKey = ActivityItemKeys.Instance().CreateBlogComment(); activity.ApplicationId = BlogConfig.Instance().ApplicationId; BlogService blogService = new BlogService(); blogThread = blogService.Get(comment.CommentedObjectId); if (blogThread == null || blogThread.UserId == comment.UserId) { return; } activity.IsOriginalThread = true; activity.IsPrivate = false; activity.OwnerId = comment.UserId; activity.OwnerName = comment.Author; activity.OwnerType = ActivityOwnerTypes.Instance().User(); activity.ReferenceId = blogThread.ThreadId; activity.ReferenceTenantTypeId = TenantTypeIds.Instance().BlogThread(); activity.SourceId = comment.Id; activity.TenantTypeId = TenantTypeIds.Instance().Comment(); activity.UserId = comment.UserId; //是否是公开的(用于是否推送站点动态) bool isPublic = blogThread.PrivacyStatus == PrivacyStatus.Public ? true : false; activityService.Generate(activity, false, isPublic); //创建评论的动态[关注该日志的用户可以看到该评论] Activity activityOfBlogComment = Activity.New(); activityOfBlogComment.ActivityItemKey = activity.ActivityItemKey; activityOfBlogComment.ApplicationId = activity.ApplicationId; activityOfBlogComment.IsOriginalThread = activity.IsOriginalThread; activityOfBlogComment.IsPrivate = activity.IsPrivate; activityOfBlogComment.ReferenceId = activity.ReferenceId; activityOfBlogComment.ReferenceTenantTypeId = activity.ReferenceTenantTypeId; activityOfBlogComment.SourceId = activity.SourceId; activityOfBlogComment.TenantTypeId = activity.TenantTypeId; activityOfBlogComment.UserId = activity.UserId; activityOfBlogComment.OwnerId = blogThread.ThreadId; activityOfBlogComment.OwnerName = blogThread.ResolvedSubject; activityOfBlogComment.OwnerType = ActivityOwnerTypes.Instance().Blog(); activityService.Generate(activityOfBlogComment, false, isPublic); } else if (auditDirection == false) { activityService.DeleteSource(TenantTypeIds.Instance().Comment(), comment.Id); } } }
/// <summary> /// 关注用户动态项 /// </summary> public static string FollowUser(this ActivityItemKeys activityItemKeys) { return("FollowUser"); }
/// <summary> /// 帖子评分动态项 /// </summary> public static string CreateBarRating(this ActivityItemKeys activityItemKeys) { return("CreateBarRating"); }