Пример #1
0
        /// <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);
         }
     }
 }
Пример #3
0
        /// <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);
                }
            }
        }