Пример #1
0
        public ActionResult SendGroupMessage()
        {
            SendGroupMessageArgs args = RequestArgs <SendGroupMessageArgs>();

            if (args == null)
            {
                return(RespondResult(false, "参数无效。"));
            }

            string result = _groupMessageManager.SendGroupMessage(DomainContext, args);

            ApiResult apiResult = new ApiResult();

            if (String.IsNullOrEmpty(result))
            {
                apiResult.Success = true;
            }
            else
            {
                apiResult.Message = result;
            }

            #region 操作日志

            _operatedLogManager.Create(new OperatedLogEntity()
            {
                Domain      = DomainContext.Domain.Id,
                AppId       = DomainContext.AppId,
                User        = UserContext.User.Id,
                IP          = Request.UserHostAddress,
                Module      = EnumModule.Member,
                Description = "群发消息"
            });

            #endregion

            return(RespondResult(apiResult));
        }
        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);
        }