/// <summary> /// 群主-加人 /// </summary> /// <param name="model"></param> /// <returns></returns> public object GM_AddUsers(IGM_AddUsers model) { var mOGM_AddUsers = new OGM_AddUsers(); var group = new IM_Group(); var users_add = new List <IM_User>(); var db_result = 0; using (var db = new ModelAC()) { #region db group = db.IM_Group.SingleOrDefault(p => p.App_Id == APP_GUID && p.GroupId == model.GroupId); users_add = db.IM_User.Where(p => p.App_Id == APP_GUID && model.Accounts.Contains(p.UserId)).ToList(); foreach (var user in users_add) { var mIm_UserGroup = new Im_UserGroup(); mIm_UserGroup.IM_User_Id = user.Id; mIm_UserGroup.IM_Group_Id = group.Id; mIm_UserGroup.GroupPosition = IM_GroupPosition.Memeber; db.Im_UserGroup.Add(mIm_UserGroup); } db_result = db.SaveChanges(); #endregion } if (db_result > 0) { mOGM_AddUsers.Success = true; mOGM_AddUsers.Msg = "添加群成员成功!"; #region 连接组维护 var app_accounts = users_add.Select(p => HubKey.App__Account(app: APP, account: p.UserId)).ToList(); var connectionIDs = Base_GetConnectionIds(app_accounts); foreach (var connectionId in connectionIDs) { //将连接添加到指定的组 Groups.Add(connectionId, group.Id.ToString()); } #endregion #region 更新相关群组聊表信息-发送系统通知 Update_GM_AddUsers(group); #endregion return(CommonJson.camelObject(mOGM_AddUsers)); } else { mOGM_AddUsers.Success = false; mOGM_AddUsers.Msg = "添加群成员失败!"; return(CommonJson.camelObject(mOGM_AddUsers)); } }
/// <summary> /// 通知→群组人员变更 /// </summary> /// <param name="group"></param> private void Update_GM_AddUsers(IM_Group group) {//通知所有群组成员 var resMembers = Get_GroupMembers(group.GroupId); var app_accounts = resMembers.Select(p => HubKey.App__Account(app: APP, account: p.Account)).ToList(); var connectionIDs = Base_GetConnectionIds(app_accounts); foreach (var connectionId in connectionIDs) { var groupInfo = new OFG_GetGroups() { Id = group.Id.ToString(), GroupId = group.GroupId, GroupName = group.GroupName, GroupPosition = IM_GroupPosition.Memeber,//管理员功能暂不实现 Members = resMembers.ToArray <object>(), }; //发送系统通知 Clients.Client(connectionId).GM_AddUsers(CommonJson.camelObject(groupInfo)); } }
/// <summary> /// 发送-图片消息 /// </summary> /// <returns></returns> public object Single_SendPicture(ISingle_SendText model) { var msg = new IM_MsgSingle(); var db_result = 0; using (var db = new ModelAC()) { #region db msg.App_Id = APP_GUID; msg.MsgClientId = model.MsgClientId; msg.From_UserId = db.IM_User.SingleOrDefault(p => p.App_Id == APP_GUID && p.UserId == model.From_UserId).Id; msg.To_UserId = db.IM_User.SingleOrDefault(p => p.App_Id == APP_GUID && p.UserId == model.To_UserId).Id; msg.MsgTime = DateTime.Now; msg.IsRead = false; msg.MsgType = model.MsgType; msg.MsgBody = model.MsgBody; db.IM_MsgSingle.Add(msg); db_result = db.SaveChanges(); #endregion } var session_result = Single_updateSession(msg); if (db_result == 1) { var mOSingle_SendText = new OSingle_SendText() { #region 输出 Id = msg.Id.ToString(), MsgClientId = msg.MsgClientId, From_UserId = model.From_UserId, To_UserId = model.To_UserId, MsgTime = msg.MsgTime, IsRead = msg.IsRead, MsgType = msg.MsgType, MsgBody = msg.MsgBody, #endregion }; var jsonResult = CommonJson.camelObject(mOSingle_SendText); #region 消息分发 string to__Account = HubKey.App__Account(app: APP, account: model.To_UserId); using (var db = new SignalR_MapUsersModel()) { var connections = db.Connections.Where(p => p.User_UserName == to__Account && p.Connected == true).ToList(); for (int i = 0; i < connections.Count(); i++) { Clients.Client(connections[i].ConnectionID).Single_SendPicture(jsonResult); } } #endregion return(jsonResult); } else { return(null); } }