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;
                    }
                }
            }
        }
Ejemplo n.º 2
0
 /// <summary>
 /// 更新
 /// </summary>
 /// <param name="pEntity">实体实例</param>
 /// <param name="pTran">事务实例,可为null,如果为null,则不使用事务来更新</param>
 public void Update(TimingPushMessageEntity pEntity, IDbTransaction pTran)
 {
     Update(pEntity, true, pTran);
 }
Ejemplo n.º 3
0
 public void Update(TimingPushMessageEntity pEntity, bool pIsUpdateNullField, IDbTransaction pTran)
 {
     _currentDAO.Update(pEntity, pIsUpdateNullField, pTran);
 }
Ejemplo n.º 4
0
 /// <summary>
 /// 创建一个新实例
 /// </summary>
 /// <param name="pEntity">实体实例</param>
 public void Create(TimingPushMessageEntity pEntity)
 {
     _currentDAO.Create(pEntity);
 }
Ejemplo n.º 5
0
 /// <summary>
 /// 在事务内创建一个新实例
 /// </summary>
 /// <param name="pEntity">实体实例</param>
 /// <param name="pTran">事务实例,可为null,如果为null,则不使用事务来更新</param>
 public void Create(TimingPushMessageEntity pEntity, IDbTransaction pTran)
 {
     _currentDAO.Create(pEntity, pTran);
 }
Ejemplo n.º 6
0
 /// <summary>
 /// 分页根据实体条件查询实体
 /// </summary>
 /// <param name="pQueryEntity">以实体形式传入的参数</param>
 /// <param name="pOrderBys">排序组合</param>
 /// <returns>符合条件的实体集</returns>
 public PagedQueryResult <TimingPushMessageEntity> PagedQueryByEntity(TimingPushMessageEntity pQueryEntity, OrderBy[] pOrderBys, int pPageSize, int pCurrentPageIndex)
 {
     return(_currentDAO.PagedQueryByEntity(pQueryEntity, pOrderBys, pPageSize, pCurrentPageIndex));
 }
Ejemplo n.º 7
0
 /// <summary>
 /// 根据实体条件查询实体
 /// </summary>
 /// <param name="pQueryEntity">以实体形式传入的参数</param>
 /// <param name="pOrderBys">排序组合</param>
 /// <returns>符合条件的实体集</returns>
 public TimingPushMessageEntity[] QueryByEntity(TimingPushMessageEntity pQueryEntity, OrderBy[] pOrderBys)
 {
     return(_currentDAO.QueryByEntity(pQueryEntity, pOrderBys));
 }
Ejemplo n.º 8
0
 /// <summary>
 /// 删除
 /// </summary>
 /// <param name="pEntity"></param>
 public void Delete(TimingPushMessageEntity pEntity)
 {
     _currentDAO.Delete(pEntity);
 }
Ejemplo n.º 9
0
 public void Update(TimingPushMessageEntity pEntity, bool pIsUpdateNullField)
 {
     _currentDAO.Update(pEntity, pIsUpdateNullField);
 }
Ejemplo n.º 10
0
 /// <summary>
 /// 更新
 /// </summary>
 /// <param name="pEntity">实体实例</param>
 public void Update(TimingPushMessageEntity pEntity)
 {
     Update(pEntity, true);
 }