public static void PrepareMessage(LoggingSessionInfo loggingSessionInfo, dynamic paramter, out int channelID, out string message) { channelID = 0; message = ""; TimingPushMessageRuleEntity timingPushMessageRuleEntity = (TimingPushMessageRuleEntity)paramter; if (timingPushMessageRuleEntity.TimingPushMessageRuleID.HasValue) { String sql = @"SELECT tpm.ChannelID, pam.Message FROM [TimingPushMessageRuleModelMapping] tpmrmm LEFT JOIN [TimingPushMessage] tpm ON tpmrmm.TimingPushMessageRuleModelMappingID = tpm.TimingPushMessageRuleModelMappingID LEFT JOIN PushAndroidMessage pam ON tpm.ObjectID = pam.AndroidMessageID WHERE TimingPushMessageRuleID='{0}' AND tpm.ClientID = '{1}'"; TimingPushMessageDAO timingPushMessageDAO = new TimingPushMessageDAO(loggingSessionInfo); SqlDataReader sqlDataReader = timingPushMessageDAO.ExcuteSQL(string.Format(sql, timingPushMessageRuleEntity.TimingPushMessageRuleID.ToString(), loggingSessionInfo.ClientID)); if (sqlDataReader.Read()) { channelID = int.Parse(sqlDataReader["ChannelID"].ToString()); message = sqlDataReader["Message"].ToString(); } } }
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; } } } }
/// <summary> /// 更新 /// </summary> /// <param name="pEntity">实体实例</param> /// <param name="pTran">事务实例,可为null,如果为null,则不使用事务来更新</param> public void Update(TimingPushMessageRuleEntity pEntity, IDbTransaction pTran) { Update(pEntity, true, pTran); }
public void Update(TimingPushMessageRuleEntity pEntity, bool pIsUpdateNullField, IDbTransaction pTran) { _currentDAO.Update(pEntity, pIsUpdateNullField, pTran); }
/// <summary> /// 创建一个新实例 /// </summary> /// <param name="pEntity">实体实例</param> public void Create(TimingPushMessageRuleEntity pEntity) { _currentDAO.Create(pEntity); }
/// <summary> /// 在事务内创建一个新实例 /// </summary> /// <param name="pEntity">实体实例</param> /// <param name="pTran">事务实例,可为null,如果为null,则不使用事务来更新</param> public void Create(TimingPushMessageRuleEntity pEntity, IDbTransaction pTran) { _currentDAO.Create(pEntity, pTran); }
/// <summary> /// 分页根据实体条件查询实体 /// </summary> /// <param name="pQueryEntity">以实体形式传入的参数</param> /// <param name="pOrderBys">排序组合</param> /// <returns>符合条件的实体集</returns> public PagedQueryResult <TimingPushMessageRuleEntity> PagedQueryByEntity(TimingPushMessageRuleEntity pQueryEntity, OrderBy[] pOrderBys, int pPageSize, int pCurrentPageIndex) { return(_currentDAO.PagedQueryByEntity(pQueryEntity, pOrderBys, pPageSize, pCurrentPageIndex)); }
/// <summary> /// 根据实体条件查询实体 /// </summary> /// <param name="pQueryEntity">以实体形式传入的参数</param> /// <param name="pOrderBys">排序组合</param> /// <returns>符合条件的实体集</returns> public TimingPushMessageRuleEntity[] QueryByEntity(TimingPushMessageRuleEntity pQueryEntity, OrderBy[] pOrderBys) { return(_currentDAO.QueryByEntity(pQueryEntity, pOrderBys)); }
/// <summary> /// 删除 /// </summary> /// <param name="pEntity"></param> public void Delete(TimingPushMessageRuleEntity pEntity) { _currentDAO.Delete(pEntity); }
public void Update(TimingPushMessageRuleEntity pEntity, bool pIsUpdateNullField) { _currentDAO.Update(pEntity, pIsUpdateNullField); }
/// <summary> /// 更新 /// </summary> /// <param name="pEntity">实体实例</param> public void Update(TimingPushMessageRuleEntity pEntity) { Update(pEntity, true); }