| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 | using Microsoft.AspNetCore.SignalR;using OASystem.API.OAMethodLib;using OASystem.API.OAMethodLib.Hub.HubClients;using OASystem.API.OAMethodLib.Hub.Hubs;using OASystem.API.OAMethodLib.SignalR.Hubs;namespace OASystem.API.Controllers{    /// <summary>    /// 消息客户端    /// </summary>    [Route("api/[controller]/[action]")]    public class ClientHubController : ControllerBase    {        private readonly ILogger<ClientHubController> _logger;        private readonly IHubContext<ChatHub, IChatClient> _hubContext;        /// <summary>        ///         /// </summary>        /// <param name="logger"></param>        /// <param name="hubContext"></param>        public ClientHubController(ILogger<ClientHubController> logger, IHubContext<ChatHub, IChatClient> hubContext)        {            _logger = logger;            _hubContext = hubContext;        }        /// <summary>        /// 获取在线用户        /// </summary>        /// <returns></returns>        [HttpGet("GetOnlineUsers", Name = "GetOnlineUsers")]        public List<UserModel> GetOnlineUsers()        {            return UserStore.OnlineUser;        }        /// <summary>        /// 发送消息给客户端        /// </summary>        /// <param name="msg"></param>        /// <returns></returns>        [HttpPost("SendAllUserMessage", Name = "SendAllUserMessage")]        public async Task<IActionResult> SendAllUserMessage(string msg)        {            await _hubContext.Clients.All.ReceiveMessage(msg);            return Ok("Send Successful!");        }        /// <summary>        /// 发送指定的消息给指定的客户端        /// </summary>        /// <param name="userIds"></param>        /// <param name="title"></param>        /// <param name="content"></param>        /// <returns></returns>        [HttpPost("SendCustomUserMessage", Name = "SendCustomUserMessage")]        public async Task<IActionResult> SendCustomUserMessage(List<int> userIds, string title, string content)        {            string connId = string.Empty;            //UserModel user = UserStore.OnlineUser.Where(it => it.UserId == userId).FirstOrDefault();            //if (user != null)            //{            //    connId = user.ConnectionId;            //}            //else            //{            //    return Ok("Send Failed! User Not Online!");            //}            //await _hubContext.Clients.Client(connId).ReceiveMessage(date);            await GeneralMethod.MessageIssueAndNotification(MessageTypeEnum.Announcement, title, content, userIds);            return Ok("Send Successful!");        }        /// <summary>        /// 消息 发布And 通知        /// </summary>        /// <param name="msgTypeEnum"></param>        /// <param name="title"></param>        /// <param name="content"></param>        /// <param name="userIds"></param>        /// <returns></returns>        [HttpPost("MessageIssuserAndNotification", Name = "MessageIssuserAndNotification")]        public async Task<IActionResult> MessageIssuserAndNotification(MessageTypeEnum msgTypeEnum, string title, string content, List<int> userIds)        {            var status = await GeneralMethod.MessageIssueAndNotification(msgTypeEnum, title, content, userIds);            if (status)            {                return Ok("Operation Successful!");            }            else            {                return Ok("Operation Fail!");            }        }    }}
 |