示例#1
0
        /// <summary>
        /// 根据Id回复图文消息 Jermyn20140512
        /// </summary>
        /// <param name="objectId">对象标识</param>
        /// <param name="KeywordType">1=关键字回复 2=关注回复 3=自动回复</param>
        /// <param name="ObjectDataFrom">1=关键字 2=菜单</param>
        public void ReplyNewsJermyn(string objectId, int KeywordType, int ObjectDataFrom)
        {
            var dsMaterialText = new WMaterialTextDAO(requestParams.LoggingSessionInfo).GetMaterialTextByIDJermyn(objectId, ObjectDataFrom);

            if (dsMaterialText != null && dsMaterialText.Tables.Count > 0 && dsMaterialText.Tables[0].Rows.Count > 0)
            {
                var newsList = new List <WMaterialTextEntity>();

                foreach (DataRow dr in dsMaterialText.Tables[0].Rows)
                {
                    var url = dr["OriginalUrl"].ToString();

                    #region 分享业务 链接后面加上openId和userId

                    if (url.IndexOf("ParAll=") != -1)
                    {
                        var vipId = string.Empty;

                        VipBLL vipService = new VipBLL(requestParams.LoggingSessionInfo);
                        var    vipEntity  = vipService.QueryByEntity(new VipEntity {
                            WeiXinUserId = requestParams.OpenId, WeiXin = requestParams.WeixinId
                        }, null);
                        if (vipEntity != null && vipEntity.Length > 0)
                        {
                            vipId = vipEntity.FirstOrDefault().VIPID;
                        }

                        url += "&openId=" + requestParams.OpenId + "&userId=" + vipId;
                    }

                    #endregion

                    newsList.Add(new WMaterialTextEntity()
                    {
                        Title         = dr["Title"].ToString(),
                        Text          = dr["Author"].ToString(),
                        CoverImageUrl = dr["CoverImageUrl"].ToString(),
                        OriginalUrl   = url
                    });
                }

                commonService.ResponseNewsMessage(requestParams.WeixinId, requestParams.OpenId, newsList, httpContext, requestParams);
            }
        }
        private void SendWeixinMessage(TimingPushMessageRuleEntity timingPushMessageRuleEntity)
        {
            //得到可以发送的人员列表
            WUserMessageBLL wUserMessageBll = new WUserMessageBLL(loggingSessionInfo);

            WUserMessageEntity[] wUserMessageEntities = wUserMessageBll.GetActiveUserMessageList();
            if (wUserMessageEntities.Length == 0)
            {
                return;
            }
            WApplicationInterfaceEntity applicationInterfaceEntity = null;

            foreach (var vipEntity in wUserMessageEntities)
            {
                //TODO:默认为一个客户一个微信,为了性能增加如下代码。如果多个用多个微信,则要将null判断取消
                if (applicationInterfaceEntity == null)
                {
                    applicationInterfaceEntity =
                        new WApplicationInterfaceBLL(loggingSessionInfo).QueryByEntity(new WApplicationInterfaceEntity
                    {
                        WeiXinID = vipEntity.WeiXinId
                    }, null)[0];
                }

                string appID     = applicationInterfaceEntity.AppID;
                string appSecret = applicationInterfaceEntity.AppSecret;

                CommonBLL commonService = new CommonBLL();
                //获取对应模型列表
                TimingPushMessageRuleModelMappingBLL      ruleModelMappingBll      = new TimingPushMessageRuleModelMappingBLL(loggingSessionInfo);
                TimingPushMessageRuleModelMappingEntity[] ruleModelMappingEntities =
                    ruleModelMappingBll.QueryByEntity(new TimingPushMessageRuleModelMappingEntity
                {
                    TimingPushMessageRuleID = timingPushMessageRuleEntity.TimingPushMessageRuleID
                }, null);
                foreach (var timingPushMessageRuleModelMappingEntity in ruleModelMappingEntities)
                {
                    WModelEntity modelEntity =
                        new WModelBLL(loggingSessionInfo).GetByID(timingPushMessageRuleModelMappingEntity.ModelID);
                    //得到当前用户当前模型已经发送的最后文章ID
                    TimingPushMessageVipLastRecordBLL lastRecordBll =
                        new TimingPushMessageVipLastRecordBLL(loggingSessionInfo);
                    TimingPushMessageVipLastRecordEntity[] lastRecordEntities = lastRecordBll.QueryByEntity(new TimingPushMessageVipLastRecordEntity
                    {
                        VipID       = vipEntity.VipId,
                        LastModelID = modelEntity.ModelId
                    }, null);
                    TimingPushMessageVipLastRecordEntity lastRecordEntity = new TimingPushMessageVipLastRecordEntity();
                    if (lastRecordEntities.Length > 0)
                    {
                        lastRecordEntity = lastRecordEntities[0];
                    }


                    switch (modelEntity.MaterialTypeId)
                    {
                    case 1:
                        var dsMaterialWriting = new WMaterialWritingDAO(loggingSessionInfo).GetWMaterialWritingByID(modelEntity.MaterialId);

                        if (dsMaterialWriting != null && dsMaterialWriting.Tables.Count > 0 && dsMaterialWriting.Tables[0].Rows.Count > 0)
                        {
                            DataRow[] content = GetCurrentArticle(dsMaterialWriting, lastRecordEntity, 1);
                            if (content == null)
                            {
                                return;
                            }
                            //推送消息
                            if (content.Length > 0)
                            {
                                SendMessageEntity sendInfo = new SendMessageEntity();
                                sendInfo.msgtype = "text";
                                sendInfo.touser  = vipEntity.OpenId;
                                sendInfo.content = content[0]["Content"].ToString();
                                ResultEntity msgResultObj = commonService.SendMessage(sendInfo, appID, appSecret,
                                                                                      loggingSessionInfo);
                                //保存发送记录
                                TimingPushMessageBLL    timingPushMessageBll    = new TimingPushMessageBLL(loggingSessionInfo);
                                TimingPushMessageEntity timingPushMessageEntity = new TimingPushMessageEntity();
                                timingPushMessageEntity.ClientID            = loggingSessionInfo.ClientID;
                                timingPushMessageEntity.IsDelete            = 0;
                                timingPushMessageEntity.CreateBy            = "System";
                                timingPushMessageEntity.CreateTime          = DateTime.Now;
                                timingPushMessageEntity.TimingPushMessageID = Guid.NewGuid();
                                timingPushMessageEntity.MemberID            = vipEntity.VipId;
                                timingPushMessageEntity.ObjectID            = content[0]["WritingId"].ToString();
                                timingPushMessageEntity.Status = 1;
                                timingPushMessageBll.Create(timingPushMessageEntity);
                                //保存最后一条记录
                                if (lastRecordEntity != null && lastRecordEntity.LastContentID != null)
                                {
                                    lastRecordBll.Update(new TimingPushMessageVipLastRecordEntity
                                    {
                                        TimingPushMessageVipLastRecordID = lastRecordEntity.TimingPushMessageVipLastRecordID,
                                        ClientID                = loggingSessionInfo.ClientID,
                                        CreateBy                = "System",
                                        CreateTime              = DateTime.Now,
                                        CSPipelineID            = timingPushMessageRuleEntity.CSPipelineID,
                                        TimingPushMessageRuleID = timingPushMessageRuleEntity.TimingPushMessageRuleID,
                                        VipID            = vipEntity.VipId,
                                        IsDelete         = 0,
                                        LastContentID    = content[0]["WritingId"].ToString(),
                                        LastContentIndex = lastRecordEntity.LastContentIndex + 1,
                                        LastModelID      = modelEntity.ModelId
                                    });
                                }
                                else
                                {
                                    lastRecordBll.Create(new TimingPushMessageVipLastRecordEntity
                                    {
                                        TimingPushMessageVipLastRecordID = Guid.NewGuid(),
                                        ClientID   = loggingSessionInfo.ClientID,
                                        CreateBy   = "System",
                                        CreateTime = DateTime.Now,
                                        TimingPushMessageRuleID = timingPushMessageRuleEntity.TimingPushMessageRuleID,
                                        CSPipelineID            = timingPushMessageRuleEntity.CSPipelineID,
                                        VipID            = vipEntity.VipId,
                                        IsDelete         = 0,
                                        LastContentID    = content[0]["WritingId"].ToString(),
                                        LastContentIndex = 1,
                                        LastModelID      = modelEntity.ModelId
                                    });
                                }
                            }
                        }
                        break;

                    case 2:
                        break;

                    case 3:
                        var dsMaterialText = new WMaterialTextDAO(loggingSessionInfo).GetMaterialTextByID(modelEntity.MaterialId);
                        if (dsMaterialText != null && dsMaterialText.Tables.Count > 0 && dsMaterialText.Tables[0].Rows.Count > 0)
                        {
                            DataRow[] content = GetCurrentArticle(dsMaterialText, lastRecordEntity, 3);
                            if (content == null)
                            {
                                return;
                            }
                            var newsList = new List <NewsEntity>();
                            foreach (DataRow dr in content)
                            {
                                var url = dr["OriginalUrl"].ToString();
                                newsList.Add(new NewsEntity()
                                {
                                    title       = dr["Title"].ToString(),
                                    description = "",
                                    picurl      = dr["CoverImageUrl"].ToString(),
                                    url         = url
                                });
                            }

                            //推送消息
                            SendMessageEntity sendInfo = new SendMessageEntity();
                            sendInfo.msgtype  = "news";
                            sendInfo.touser   = vipEntity.OpenId;
                            sendInfo.articles = newsList;

                            ResultEntity msgResultObj = commonService.SendMessage(sendInfo, appID, appSecret, loggingSessionInfo);

                            //保存发送记录
                            TimingPushMessageBLL    timingPushMessageBll    = new TimingPushMessageBLL(loggingSessionInfo);
                            TimingPushMessageEntity timingPushMessageEntity = new TimingPushMessageEntity();
                            timingPushMessageEntity.ClientID            = loggingSessionInfo.ClientID;
                            timingPushMessageEntity.IsDelete            = 0;
                            timingPushMessageEntity.CreateBy            = "System";
                            timingPushMessageEntity.CreateTime          = DateTime.Now;
                            timingPushMessageEntity.TimingPushMessageID = Guid.NewGuid();
                            timingPushMessageEntity.MemberID            = vipEntity.VipId;
                            timingPushMessageEntity.ObjectID            = content[0]["TextId"].ToString();
                            timingPushMessageEntity.Status = 1;
                            timingPushMessageBll.Create(timingPushMessageEntity);

                            //保存最后一条记录
                            if (lastRecordEntity != null && lastRecordEntity.LastContentID != null)
                            {
                                lastRecordBll.Update(new TimingPushMessageVipLastRecordEntity
                                {
                                    TimingPushMessageVipLastRecordID = lastRecordEntity.TimingPushMessageVipLastRecordID,
                                    ClientID   = loggingSessionInfo.ClientID,
                                    CreateBy   = "System",
                                    CreateTime = DateTime.Now,
                                    TimingPushMessageRuleID = timingPushMessageRuleEntity.TimingPushMessageRuleID,
                                    CSPipelineID            = timingPushMessageRuleEntity.CSPipelineID,
                                    IsDelete         = 0,
                                    VipID            = vipEntity.VipId,
                                    LastContentID    = content[0]["TextId"].ToString(),
                                    LastContentIndex = lastRecordEntity.LastContentIndex + 1,
                                    LastModelID      = modelEntity.ModelId
                                });
                            }
                            else
                            {
                                lastRecordBll.Create(new TimingPushMessageVipLastRecordEntity
                                {
                                    TimingPushMessageVipLastRecordID = Guid.NewGuid(),
                                    ClientID   = loggingSessionInfo.ClientID,
                                    CreateBy   = "System",
                                    CreateTime = DateTime.Now,
                                    TimingPushMessageRuleID = timingPushMessageRuleEntity.TimingPushMessageRuleID,
                                    CSPipelineID            = timingPushMessageRuleEntity.CSPipelineID,
                                    VipID            = vipEntity.VipId,
                                    IsDelete         = 0,
                                    LastContentID    = content[0]["TextId"].ToString(),
                                    LastContentIndex = 1,
                                    LastModelID      = modelEntity.ModelId
                                });
                            }
                        }

                        break;
                    }
                }
            }
        }
示例#3
0
 /// <summary>
 /// 构造函数
 /// </summary>
 public WMaterialTextBLL(LoggingSessionInfo pUserInfo)
 {
     this.CurrentUserInfo = pUserInfo;
     this._currentDAO     = new WMaterialTextDAO(pUserInfo);
 }
示例#4
0
        /// <summary>
        /// 推送图文消息
        /// </summary>
        /// <param name="materialId"></param>
        public void GetImageText(string materialId, string WeiXin, string OpenId)
        {
            Loggers.Debug(new DebugLogInfo()
            {
                Message = string.Format("中欧扫描--关注materialId 进入 materialId:{0},WeiXin:{1},OpenId:{2}", materialId, WeiXin, OpenId)
            });
            try
            {
                var dsMaterialText = new WMaterialTextDAO(loggingSessionInfo).GetMaterialTextByID(materialId);
                Loggers.Debug(new DebugLogInfo()
                {
                    Message = string.Format("中欧扫描--关注loggingSessionInfo 进入 loggingSessionInfo:{0}", loggingSessionInfo.CurrentUser.customer_id)
                });
                if (dsMaterialText != null && dsMaterialText.Tables.Count > 0 && dsMaterialText.Tables[0].Rows.Count > 0)
                {
                    Loggers.Debug(new DebugLogInfo()
                    {
                        Message = string.Format("中欧扫描--关注materialId 进入 dsMaterialText:")
                    });
                    var newsList = new List <NewsEntity>();

                    foreach (DataRow dr in dsMaterialText.Tables[0].Rows)
                    {
                        newsList.Add(new NewsEntity()
                        {
                            title       = dr["Title"].ToString(),
                            description = dr["Author"].ToString(),
                            picurl      = dr["CoverImageUrl"].ToString(),
                            url         = dr["OriginalUrl"].ToString()
                        });
                    }
                    JIT.CPOS.BS.BLL.WX.CommonBLL commonService = new WX.CommonBLL();
                    SendMessageEntity            sendInfo      = new SendMessageEntity();
                    sendInfo.msgtype  = "news";
                    sendInfo.touser   = OpenId;
                    sendInfo.articles = newsList;
                    WApplicationInterfaceBLL waServer = new WApplicationInterfaceBLL(loggingSessionInfo);
                    var waObj = waServer.QueryByEntity(new WApplicationInterfaceEntity
                    {
                        WeiXinID = WeiXin
                    }, null);
                    if (waObj == null || waObj.Length == 0 || waObj[0] == null)
                    {
                        Loggers.Debug(new DebugLogInfo()
                        {
                            Message = string.Format("中欧扫描--关注materialId 进入 waObj为空:}")
                        });
                    }
                    else
                    {
                        string appID     = string.Empty;
                        string appSecret = string.Empty;
                        appID     = waObj[0].AppID;
                        appSecret = waObj[0].AppSecret;
                        JIT.CPOS.BS.Entity.WX.ResultEntity resultInfo = new JIT.CPOS.BS.Entity.WX.ResultEntity();
                        resultInfo = commonService.SendMessage(sendInfo, appID, appSecret, loggingSessionInfo);
                        Loggers.Debug(new DebugLogInfo()
                        {
                            Message = string.Format("中欧扫描--关注materialId 进入 waObj:appID:{0},appSecret {1}", appID, appSecret)
                        });
                    }
                }
            }
            catch (Exception ex) {
                Loggers.Debug(new DebugLogInfo()
                {
                    Message = string.Format("中欧扫描--关注GetImageText 进入 错误:{0}", ex.ToString())
                });
            }
        }