/// <summary>
        /// 通过appId和channelId更新批次号
        /// </summary>
        /// <param name="domainModel"></param>
        /// <returns></returns>
        public async Task <int> UpdateBatchNOByAppIdAndChannelIdAsync(BatchProcessParmsDomainModel domainModel)
        {
            var sql = "UPDATE push_send_process SET batch_no=@BatchNO,batch_expire_time=@ExpireTime "
                      + "WHERE push_send_process.id IN ( "
                      + "SELECT id FROM ( "
                      + "SELECT id, (CASE delay_times WHEN 0 THEN 100 ELSE delay_times END) DT "
                      + "FROM push_send_process "
                      + "WHERE start_time<=@TimeNow AND (batch_no IS NULL OR batch_expire_time<=@TimeNow) AND app_id=@AppId AND channel_id=@ChannelId "
                      + "ORDER BY DT DESC,priority_level,start_time "
                      + "LIMIT @TopNum ) T ) "
                      + "AND brand_id IS NOT NULL AND channel_id IS NOT NULL AND device_token IS NOT NULL ";

            return(await Context.GetConnection().ExecuteAsync(sql, domainModel));
        }
示例#2
0
 /// <summary>
 /// 从Process表取出待发送的BatchNO
 /// </summary>
 /// <param name="retMsg"></param>
 /// <returns></returns>
 public string GetProcessBatchNO(out string retMsg)
 {
     retMsg = "";
     try
     {
         var timeNow = DateTimeHelper.GetNow();
         PushSendProcessAppChannelDomainModel pushSendProcessAppChannelDomainModel = _pushSendProcessService.GetAppIdAndChannelIdAsync(timeNow).Result;
         //AppChannelDto appChannelDto = _mapper.Map<AppChannelDto>(pushSendProcessAppChannelDomainModel);
         //获取第一条推送消息的AppId和ChannelId,如果没有,返回批次号为空
         if (pushSendProcessAppChannelDomainModel == null)
         {
             return(string.Empty);
         }
         Guid batchNO    = Guid.NewGuid();
         var  expireTime = timeNow.AddMinutes(3);
         //获取通道
         ChannelDto channelDto;
         if (!_channelLogic.CheckChannel(pushSendProcessAppChannelDomainModel.ChannelId, out channelDto, out retMsg))
         {
             return(string.Empty);
         }
         int topNum = channelDto.PushNum.HasValue ? channelDto.PushNum.Value : 200;//可以从配置中获取数据,默认给200
         BatchProcessParmsDomainModel batchProcessParmsDomainModel = new BatchProcessParmsDomainModel
         {
             TopNum     = topNum,
             AppId      = pushSendProcessAppChannelDomainModel.AppId,
             ChannelId  = pushSendProcessAppChannelDomainModel.ChannelId,
             BatchNo    = batchNO,
             TimeNow    = timeNow,
             ExpireTime = expireTime
         };
         var updateNum = _pushSendProcessService.UpdateBatchNOByAppIdAndChannelIdAsync(batchProcessParmsDomainModel).Result;
         if (updateNum == 0)
         {
             return(string.Empty);
         }
         return(batchNO.ToString());
     }
     catch (Exception ex)
     {
         retMsg = ex.StackTrace + "\r\n" + ex.Message;
         return(null);
     }
 }
示例#3
0
 public async Task <int> UpdateBatchNOByAppIdAndChannelIdAsync(BatchProcessParmsDomainModel domainModel)
 {
     return(await _pushSendProcessRepository.UpdateBatchNOByAppIdAndChannelIdAsync(domainModel));
 }