private void _ic_Notified(CVResult result, object obj) { if (result == CVResult.LogonSucceeded) { LoginPt lp = obj as LoginPt; _user = UserItem.From(lp); if (_user.Role == UserRole.Administrator || _user.Role == UserRole.SystemAdministrator) { Status = CVRInfoExStatus.Refused; Notified?.Invoke(CVRInfoExResult.PrivilegeHappened, _user.Role.ToString() + " 权限访问使用"); _ic.Shutdown(); } else { Status = CVRInfoExStatus.Ready; Notified?.Invoke(CVRInfoExResult.LogonSucceeded, _user); } } else if (result == CVResult.LogonFailed) { Status = CVRInfoExStatus.Offline; LoginPt lp = obj as LoginPt; Notified?.Invoke(CVRInfoExResult.LogonFailed, lp.msg); } else if (result == CVResult.OnlineUsersNotified) { LogonUserListPt lulp = obj as LogonUserListPt; foreach (LoginPt lp in lulp.logonUsers) { if (!_users.ContainsKey(lp.id)) { Add(lp.id, lp.username, lp.role); } } Notified?.Invoke(CVRInfoExResult.UserChanged, _users); } else if (result == CVResult.OnlineUserChanged) { LogoutPt lp = obj as LogoutPt; if (lp.state == 0) { //用户上线 UserItem ui = Add(lp.id, lp.username, lp.role); if (ui != null) { Notified?.Invoke(CVRInfoExResult.UserChanged, _users); } } else if (lp.state == 1) { //用户 _users.Remove(lp.id); Notified?.Invoke(CVRInfoExResult.UserChanged, _users); } } else if (result == CVResult.MessageReceived) { ChatTextPt ctp = obj as ChatTextPt; if (ctp.msg.Contains("\r")) { TeamworkItem ti = TeamworkItem.FromMsg(ctp.msg); ti.Item = MessageItem.From(ctp); Notified?.Invoke(CVRInfoExResult.TeamworkReceived, ti); } else { MessageItem mi = MessageItem.From(ctp); Notified?.Invoke(CVRInfoExResult.MessageReceived, mi); } } else if (result == CVResult.MessageNotified) { MessagePt mp = obj as MessagePt; Status = mp.msgtype == "101001" ? CVRInfoExStatus.Timeout: CVRInfoExStatus.Unknown; Notified?.Invoke(CVRInfoExResult.MessageNotified, mp.msg); } }