Exemplo n.º 1
0
        /// <summary>
        /// 推送消息,不用提前保存
        /// </summary>
        /// <param name="sysBroadcast"></param>
        /// <returns></returns>
        public async Task <int> SendSysBroadcast(SysBroadcast sysBroadcast)
        {
            var c4Sended = 0;

            _iSysBroadcastService.Save(null, sysBroadcast);//消息编辑时间即为推送时间

            await _iSysBroadcastService.CommitAsync();

            var context = GlobalHost.ConnectionManager.GetHubContext <MessengerHub>();

            if (string.IsNullOrEmpty(sysBroadcast.AddresseeId))
            {
                //全体
                SendAll(sysBroadcast.Title);
                c4Sended++;
            }
            else
            {
                //推送给指定用户
                foreach (
                    var item in
                    _iSysSignalROnlineService.GetAll().Where(
                        a => a.GroupId == GroupId && sysBroadcast.AddresseeId.Contains(a.CreatedBy)))
                {
                    context.Clients.Client(item.ConnectionId).add(sysBroadcast.Title);
                    c4Sended++;
                }
            }
            return(c4Sended);
        }
Exemplo n.º 2
0
        /// <summary>
        /// 推送给有操作权限的用户
        /// </summary>
        /// <param name="action"></param>
        /// <param name="controller"></param>
        /// <param name="area"></param>
        /// <param name="sysBroadcast"></param>
        /// <returns></returns>
        public async Task <int> SendSysBroadcastByAction(string action, string controller, string area, SysBroadcast sysBroadcast)
        {
            var c4Sended = 0;

            var roles = _iSysRoleService.GetAll(a => a.SysRoleSysControllerSysActions.Any(b => b.SysControllerSysAction.SysAction.ActionName == action && b.SysControllerSysAction.SysController.ControllerName == controller && b.SysControllerSysAction.SysController.SysArea.AreaName == area));

            if (roles.Any())
            {
                var context = GlobalHost.ConnectionManager.GetHubContext <MessengerHub>();

                var q4UserIds = _iSysUserService.GetAll(a => a.Roles.Any(b => roles.Any(c => c.Id == b.RoleId))).Select(a => a.Id);

                sysBroadcast.AddresseeId = string.Join(",", q4UserIds);

                _iSysBroadcastService.Save(null, sysBroadcast);

                await _iSysBroadcastService.CommitAsync();

                foreach (var connection in _iSysSignalROnlineService.GetAll().Where(
                             a => a.GroupId == GroupId && q4UserIds.Any(q => q == a.CreatedBy && !a.Deleted)))
                {
                    context.Clients.Client(connection.ConnectionId).add(sysBroadcast.Title);
                    c4Sended++;
                }
            }
            return(c4Sended);
        }
 public void Send(SysBroadcast sysBroadcast)
 {
     //web消息
     _iSignalMessenger.SendMessage(sysBroadcast.AddresseeId, "<a title=\"消息\" data-ajax=\"true\" data-ajax-mode=\"replace\" data-ajax-update=\"#Main\" href=\"/Platform/MyMessage\">您有一条新的消息:" + sysBroadcast.Title + "</a>");
 }