public GroupMessageEntity GetGroupMessage(Guid id)
        {
            GroupMessageEntity groupMessage = new GroupMessageEntity();

            groupMessage.Id = id;

            if (_dataBase.Fill <GroupMessageEntity>(groupMessage))
            {
                if (groupMessage.GroupId.HasValue)
                {
                    groupMessage.FilterOption = "分组:";
                    MemberGroupEntity memberGroup = _memberGroupManager.GetMemberGroup(groupMessage.Domain, groupMessage.AppId, groupMessage.GroupId.Value);
                    if (memberGroup != null)
                    {
                        groupMessage.FilterOption += memberGroup.Name;
                    }
                }
                else
                {
                    groupMessage.FilterOption = "全部";
                }
                return(groupMessage);
            }
            else
            {
                return(null);
            }
        }
示例#2
0
 public static GroupMessage ToContract(this GroupMessageEntity groupMessageEntity)
 {
     return(new GroupMessage
     {
         Id = groupMessageEntity.Id,
         GroupId = groupMessageEntity.GroupId,
         Message = groupMessageEntity.Message,
         SendDate = groupMessageEntity.SendDate
     });
 }
示例#3
0
        public async Task <GroupMessage> CreateMessageInGroup(int groupId, int userId, [FromBody] GroupMessage message)
        {
            GroupUserEntity userGroup = await DbContext.GroupsUsersRepo.GetByUserIdAndGroupId(userId, groupId);

            if (userGroup == null)
            {
                ThrowHttpResponseException(System.Net.HttpStatusCode.Unauthorized, "Access is denied.");
            }
            ValidateUserAsAuthenticated(userId);

            GroupEntity group = await DbContext.GroupsRepo.GetSingleOrDefaultAsync(groupId);

            if (group == null)
            {
                ThrowHttpResponseException(System.Net.HttpStatusCode.NotFound, string.Format("Group with id {0} was not found.", groupId));
            }

            GroupMessageEntity entity = await DbContext.GroupMessagesRepo.CreateAsync(message.ToEntity());

            return(entity.ToContract());
        }
        public string SendGroupMessage(DomainContext domainContext, SendGroupMessageArgs args)
        {
            if (args == null)
            {
                return("参数错误。");
            }

            GroupMessageEntity groupMessage = new GroupMessageEntity();

            groupMessage.AppId = domainContext.AppId;

            if (args.GroupId >= 0)
            {
                groupMessage.IsToAll = false;
                groupMessage.GroupId = args.GroupId;
            }
            else
            {
                groupMessage.IsToAll = true;
            }

            groupMessage.Type      = args.Type;
            groupMessage.Content   = args.Content;
            groupMessage.Url       = args.Url;
            groupMessage.Name      = args.Name;
            groupMessage.MediaId   = args.MediaId;
            groupMessage.ArticleId = args.ArticleId;

            WeixinGroupMessageSendAllArgs apiArgs = null;

            switch (groupMessage.Type)
            {
            case EnumGroupMessageType.Text:
                WeixinGroupMessageSendAllArgs_Text textMsg = new WeixinGroupMessageSendAllArgs_Text();
                textMsg.Content.Content = groupMessage.Content;
                apiArgs = textMsg;
                break;

            case EnumGroupMessageType.Image:
                WeixinGroupMessageSendAllArgs_Image imageMsg = new WeixinGroupMessageSendAllArgs_Image();
                imageMsg.Image.MediaId = groupMessage.MediaId;
                apiArgs = imageMsg;
                break;

            case EnumGroupMessageType.Article:
                string mediaId = _materialManager.GetArticleMaterialMediaId(args.ArticleId.Value);
                if (String.IsNullOrEmpty(mediaId) == false)
                {
                    WeixinGroupMessageSendAllArgs_Mpnews articleMsg = new WeixinGroupMessageSendAllArgs_Mpnews();
                    articleMsg.Mpnews.MediaId = mediaId;
                    apiArgs = articleMsg;
                }
                break;

            default:
                break;
            }

            if (apiArgs == null)
            {
                return("参数错误。");
            }

            //先往微信后台添加,成功后写数据库
            apiArgs.Filter.IsToAll = groupMessage.IsToAll;
            if (groupMessage.GroupId.HasValue && groupMessage.GroupId >= 0)
            {
                apiArgs.Filter.GroupId = groupMessage.GroupId.ToString();
            }
            // apiArgs.MsgType
            RequestApiResult <WeixinGroupMessageSendAllResult> sendAllResult =
                GroupMessageApiWrapper.SendAll(domainContext, apiArgs);

            if (sendAllResult.Success == false)
            {
                return(sendAllResult.Message);
            }

            groupMessage.MsgId     = sendAllResult.ApiResult.MsgId;
            groupMessage.MsgDataId = sendAllResult.ApiResult.MsgDataId;
            groupMessage.Domain    = domainContext.Domain.Id;
            _dataBase.Insert(groupMessage);

            return(null);
        }