yl
2022-10-25 dd651f9ce0156fc7db869da04e0c2004a1811c52
VueWebApi/Hubs/ChatHub.cs
@@ -1,14 +1,20 @@
using Dapper;
using Microsoft.AspNet.SignalR;
using Microsoft.AspNet.SignalR.Hubs;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using VueWebApi.Models;
using VueWebApi.Tools;
namespace VueWebApi.Hubs
{
    /// <summary>
    /// chatHub集线器类
    /// </summary>
    [HubName("chatHub")]
    public class ChatHub : Hub
    {
        /// <summary>
@@ -42,6 +48,36 @@
            Clients.Clients(FindPublicBaseDic).SendMessage("来自用户:" + name1 + " 内容:" + cont + "" + DateTime.Now.ToString("yyyy/MM/ddhh:mm:ss") + "的消息推送!");
        }
        /// <summary>
        /// 安灯呼叫提交时调用
        /// </summary>
        /// <param name="username">发起人</param>
        /// <param name="wkshpcode">车间编码</param>
        /// <param name="eqpcode">设备编码</param>
        /// <param name="json"></param>
        public void SendByGroupList(string username,string wkshpcode, string eqpcode, List<AnDnDate> json)
        {
            try
            {
                for (int i = 0; i < json.Count; i++)
                {
                    string cont = wkshpcode + "对应设备" + eqpcode + json[i].name.ToString();
                    var departmentIDs = json[i].children.ToList().Select(x => x.username).ToList();//获取推送人员
                    var FindPublicBaseDic = _connections.Where(d => departmentIDs.Contains(d.Key)).Select(x => x.Value).ToList(); //匹配已经登录的推送人员唯一码
                    LogHelper.WriteLogData("在线人数:"+FindPublicBaseDic.Count.ToString());
                    var FindPublicBaseDicName = _connections.Where(d => FindPublicBaseDic.Contains(d.Value)).Select(x => x.Key).ToList(); //根据唯一码匹配已经登录的推送人员名称
                    LogHelper.WriteLogData("在线人人员名称:" + FindPublicBaseDicName.ToString());
                    Clients.Clients(FindPublicBaseDic).SendMessage("来自用户:" + username + " 内容:" + cont + "时间" + DateTime.Now.ToString("yyyy/MM/ddhh:mm:ss") + "的消息通知!");
                }
            }
            catch (Exception ex)
            {
                LogHelper.WriteLogData("报错:"+ex.Message);
                throw;
            }
        }
        /// <summary>
        /// 用户上线函数(单用户)
@@ -49,7 +85,7 @@
        /// <param name="name">用户名</param>
        public void SendLogin(string name)
        {
            LogHelper.WriteLogData("登录人员:" + name);
            //LogHelper.WriteLogData("登录人员:" + name);
            if (!userList.Contains(name))
            {
                userList.Add(name);
@@ -60,6 +96,7 @@
            {
                //每次登陆id会发生变化
                _connections[name] = Context.ConnectionId;
                LogHelper.WriteLogData("执行关联:-->" + _connections[name]);
            }
            //新用户上线,服务器广播该用户名
            Clients.All.loginUser(userList);