Ejemplo n.º 1
0
        /// <summary>
        /// 将sendMsgDto转为SendMsgToSendProcess,并赋值参数
        /// </summary>
        /// <param name="sendMsgDto"></param>
        /// <returns></returns>
        private SendProcessDto SendMsgToSendProcess(SendMsgDto sendMsgDto, string serialNO)
        {
            sendMsgDto.StartTime = sendMsgDto.StartTime.HasValue ? sendMsgDto.StartTime : DateTimeHelper.GetNow();
            SendProcessDto sendProcessDto = _mapper.Map <SendProcessDto>(sendMsgDto);

            sendProcessDto.AttachInfo    = sendMsgDto.AttachInfo == null ? null : JsonConvert.SerializeObject(sendMsgDto.AttachInfo);
            sendProcessDto.SerialNo      = serialNO;
            sendProcessDto.PriorityLevel = (int)PriorityLevelEnum.Middle;//默认优先级为中
            sendProcessDto.StartTime     = sendMsgDto.StartTime.Value;
            sendProcessDto.EndTime       = sendMsgDto.Timeliness.HasValue ? sendProcessDto.StartTime.AddMinutes(sendMsgDto.Timeliness.Value) : sendProcessDto.StartTime.AddMinutes(24 * 60);
            sendProcessDto.IsUsed        = false;
            sendProcessDto.ExpireTime    = sendProcessDto.StartTime;
            sendProcessDto.SendTime      = sendProcessDto.StartTime;
            sendProcessDto.DelayTimes    = 0;
            return(sendProcessDto);
        }
Ejemplo n.º 2
0
 public ErrCode CheckAcceptMsg(SendMsgDto model, out string retMsg)
 {
     retMsg = string.Empty;
     if (model == null)
     {
         retMsg = "推送消息为空";
         return(ErrCode.Failure);
     }
     if (model.Timeliness.HasValue && model.Timeliness <= 0)
     {
         retMsg = "时效时间(分钟)必须大于0";
         return(ErrCode.Failure);
     }
     //检查AppId是否存在
     if (!_tokenBrandLogic.CheckAppId(model.AppId, out retMsg))
     {
         return(ErrCode.AppNotExist);
     }
     return(ErrCode.Sucess);
 }
Ejemplo n.º 3
0
        /// <summary>
        /// 将消息发送给所有用户
        /// </summary>
        /// <param name="o"></param>
        private async void SendAllAsync(object o)
        {
            using (var scope = SherlockEngine.Current.CreateScope())
            {
                ILoggerFactory loggerFactory = scope.ServiceProvider.GetService(typeof(ILoggerFactory)) as ILoggerFactory;
                var            logger        = loggerFactory.CreateLogger <AcceptMsgController>();
                SendMsgDto     dto           = o as SendMsgDto;
                //获取App下所有的用户
                IPushTokenBrandService pushTokenBrandService = scope.ServiceProvider.GetService(typeof(IPushTokenBrandService)) as IPushTokenBrandService;
                //IPushTokenBrandService pushTokenBrandService = SherlockEngine.Current.GetService<IPushTokenBrandService>();//这样写不会Dispose资源
                var allTokenList = await pushTokenBrandService.GetAllTokenBrand(dto.AppId);

                if (allTokenList == null || allTokenList.Count == 0)
                {
                    return;
                }
                IMapper mapper = scope.ServiceProvider.GetService(typeof(IMapper)) as IMapper;
                var     req    = mapper.Map <SendMsgListRequest>(dto);
                req.TokenList = allTokenList;
                string retMsg = string.Empty;
                try
                {
                    //将消息拆解存到消息队列中
                    IMsgService msgService = scope.ServiceProvider.GetService(typeof(IMsgService)) as IMsgService;
                    //IMsgService msgService = SherlockEngine.Current.GetService<IMsgService>();
                    var ret = msgService.AcceptAllMsgList(req, out retMsg);
                    if (ret == ErrCode.Sucess)
                    {
                        logger.LogInformation("推送全体成功");
                    }
                    else
                    {
                        logger.LogInformation("推送全体失败:" + retMsg);
                    }
                }
                catch (Exception ex)
                {
                    logger.LogInformation("推送全体失败:" + ex.Message.ToString());
                }
            }
        }
Ejemplo n.º 4
0
 public object AcceptMsgAll(SendMsgDto dto)
 {
     ThreadPool.QueueUserWorkItem(new WaitCallback(SendAllAsync), dto);
     return(this.Success("接收成功"));;
 }