/// <summary> /// 更换群主 /// </summary> /// <param name="groupId">专题Id</param> /// <param name="newOwnerUserId">新群主UserId</param> public void ChangeTopicOwner(long groupId, long newOwnerUserId) { //更换群主后,原群主转换成专题成员,如果新群主是专题成员则从成员中移除 TopicEntity group = groupRepository.Get(groupId); long oldOwnerUserId = group.UserId; group.UserId = newOwnerUserId; groupRepository.ChangeTopicOwner(groupId, newOwnerUserId); //原群主的专题数-1,加入专题数+1 OwnerDataService ownerDataService = new OwnerDataService(TenantTypeIds.Instance().User()); ownerDataService.Change(oldOwnerUserId, OwnerDataKeys.Instance().CreatedTopicCount(), -1); ownerDataService.Change(oldOwnerUserId, OwnerDataKeys.Instance().JoinedTopicCount(), 1); //原群主转换成专题成员 TopicMember TopicMember = TopicMember.New(); TopicMember.TopicId = groupId; TopicMember.UserId = oldOwnerUserId; TopicMemberRepository.Insert(TopicMember); //新群主的专题数+1,加入专题数-1 ownerDataService.Change(newOwnerUserId, OwnerDataKeys.Instance().CreatedTopicCount(), 1); //如果新群主是专题成员则从成员中移除 if (IsMember(groupId, newOwnerUserId)) { DeleteTopicMember(groupId, newOwnerUserId); } }
void SetStatusInvitationnForJoinTopicEventModule_After(Invitation sender, CommonEventArgs eventArgs) { if (eventArgs.EventOperationType == EventOperationType.Instance().Update()) { InvitationService invitationService = DIContainer.Resolve <InvitationService>(); Invitation invitation = invitationService.Get(sender.Id); if (invitation != null && invitation.InvitationTypeKey == InvitationTypeKeys.Instance().InviteJoinTopic() && invitation.Status == InvitationStatus.Accept) { TopicService groupService = new TopicService(); TopicMember member = TopicMember.New(); member.TopicId = sender.RelativeObjectId; member.UserId = sender.UserId; member.IsManager = false; groupService.CreateTopicMember(member); } else if (invitation != null && invitation.InvitationTypeKey == InvitationTypeKeys.Instance().ApplyJoinTopic() && invitation.Status == InvitationStatus.Accept) { TopicService groupService = new TopicService(); TopicMember member = TopicMember.New(); member.TopicId = sender.RelativeObjectId; member.UserId = sender.SenderUserId; member.IsManager = false; groupService.CreateTopicMember(member); IEnumerable <long> a = groupService.GetTopicMemberApplies(sender.RelativeObjectId, TopicMemberApplyStatus.Pending, 20, 1).Where(n => n.UserId == sender.SenderUserId).Select(m => m.Id); groupService.ApproveTopicMemberApply(a, true); } else if (invitation != null && invitation.InvitationTypeKey == InvitationTypeKeys.Instance().ApplyJoinTopic() && invitation.Status == InvitationStatus.Refuse) { TopicService groupService = new TopicService(); IEnumerable <long> a = groupService.GetTopicMemberApplies(sender.RelativeObjectId, TopicMemberApplyStatus.Pending, 20, 1).Where(n => n.UserId == sender.SenderUserId).Select(m => m.Id); groupService.ApproveTopicMemberApply(a, false); } } }
/// <summary> /// 接受/拒绝专题加入申请 /// </summary> /// <param name="groupIds">申请Id列表</param> /// <param name="isApproved">是否接受</param> public void ApproveTopicMemberApply(IEnumerable <long> applyIds, bool isApproved) { //设计要点: //1、仅允许对待处理状态的申请变更状态; //2、通过批准的申请,直接创建TopicMember IEnumerable <TopicMemberApply> TopicMemberApplies = TopicMemberApplyRepository.PopulateEntitiesByEntityIds(applyIds); TopicMemberApplyStatus applyStatus = isApproved ? TopicMemberApplyStatus.Approved : TopicMemberApplyStatus.Disapproved; string operationType = isApproved ? EventOperationType.Instance().Approved() : EventOperationType.Instance().Disapproved(); foreach (var apply in TopicMemberApplies) { if (apply.ApplyStatus != TopicMemberApplyStatus.Pending) { continue; } apply.ApplyStatus = applyStatus; TopicMemberApplyRepository.Update(apply); EventBus <TopicMemberApply> .Instance().OnAfter(apply, new CommonEventArgs(operationType)); if (isApproved) { TopicMember member = TopicMember.New(); member.UserId = apply.UserId; member.TopicId = apply.TopicId; CreateTopicMember(member); } } }