/// <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); }
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); }
/// <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()); } } }
public object AcceptMsgAll(SendMsgDto dto) { ThreadPool.QueueUserWorkItem(new WaitCallback(SendAllAsync), dto); return(this.Success("接收成功"));; }