rtx 二次开发,查找所有部门
1>rtx二次开发操作类
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Web;
- using System.Xml;
- using System.Xml.Linq;
- using Newtonsoft.Json;
- using Newtonsoft.Json.Linq;
- using System.Configuration;
- using RTXServerApi;
- namespace RTXHelper
- {
- public class RTX
- {
- private RTXSAPILib.IRTXSAPIRootObj rootObj;
- /// <summary>
- /// 默认的RTX服务器的地址和端口是本机,如果夸服务器则从配置文件中读取
- /// 默认值:IP(127.0.0.1) port(8006)
- /// </summary>
- public RTX()
- {
- rootObj = new RTXSAPILib.RTXSAPIRootObjClass();
- WebConfigHelper webConfig = new WebConfigHelper();
- rootObj.ServerIP = webConfig.RTXServerIP;
- rootObj.ServerPort = webConfig.RTXServerPort;
- }
- public RTX(String rtxServerIP, Int16 rtxServerPort)
- {
- rootObj = new RTXSAPILib.RTXSAPIRootObjClass();
- rootObj.ServerIP = rtxServerIP;
- rootObj.ServerPort = rtxServerPort;
- }
- public bool SignatureAuth(string bstrUserName, string bstrSign)
- {
- RTXSAPILib.IRTXSAPIUserAuthObj2 AuthObj2 = (RTXSAPILib.IRTXSAPIUserAuthObj2)rootObj.UserAuthObj;
- return AuthObj2.SignatureAuth(bstrUserName, bstrSign);
- }
- public void SendIM(string bstrSender, string bstrPwd, string bstrReceivers, string bstrMsg, string bstrSessionID)
- {
- rootObj.SendIM(bstrSender, bstrPwd, bstrReceivers, bstrMsg, string.Format("{0}{1}{2}", "{", bstrSessionID, "}"));
- }
- public void SendIM(string bstrSender, string bstrReceivers, string bstrMsg)
- {
- rootObj.SendIM(bstrSender, "", bstrReceivers, bstrMsg, string.Format("{0}{1}{2}", "{", Guid.NewGuid().ToString(), "}"));
- }
- public void SendNotify(string bstrReceiver, string bstrTitle, int lDelayTime, string bstrMsg)
- {
- rootObj.SendNotify(bstrReceiver, bstrTitle, lDelayTime, bstrMsg);
- }
- public string GetDepartment(string userId)
- {
- short d = rootObj.Login("124065", "2");
- rootObj.UserManager.SetUserPwd("124065", "2");
- rootObj.UserManager.SetUserMd5Pwd("060637", "2");
- return rootObj.GetBUinPwd();
- }
- public short Login(string userId, string pwd)
- {
- return rootObj.Login(userId, pwd);
- }
- public void SendDisGroupIM(string bstrSender, string bstrpwd, int lDisGroupId, string bstrtitle, string bstrMsg, string bstrSessionId)
- {
- rootObj.SendDisGroupIM(bstrSender, bstrpwd, lDisGroupId, bstrtitle, bstrMsg, string.Format("{0}{1}{2}", "{", Guid.NewGuid().ToString(), "}"));
- }
- public void SendRCAIM(string bstrSender, string bstrpwd, string bstrReceivers, string bstrMsg, string bstrSessionId)
- {
- rootObj.SendRCAIM(bstrSender, bstrpwd, bstrReceivers, bstrMsg, string.Format("{0}{1}{2}", "{", bstrSessionId, "}"));
- }
- public string GetAllUsers()
- {
- XDocument xDoc = XDocument.Parse(rootObj.DeptManager.GetChildDepts(""));
- return rootObj.DisGroupManager.GetAllDisGroupIds();
- }
- /// <summary>
- /// 查找部门下的所有用户
- /// </summary>
- /// <param name="deptName">部门路径,比如:"生产技术部\\信息中心"</param>
- /// <returns>返回部门下所有用户的账户,不包含子部门下的用户</returns>
- public string[] GetDeptUsers(string deptName)
- {
- List<string> result = new List<string>();
- string users = rootObj.DeptManager.GetDeptUsers(deptName);
- XDocument xdoc = XDocument.Parse(users);
- foreach (var userItem in xdoc.Root.Elements("User"))
- {
- result.Add(userItem.Attribute("Name").Value);
- }
- return result.ToArray();
- }
- /// <summary>
- /// 查找部门下的所有用户
- /// </summary>
- /// <param name="deptName">部门路径,比如:"生产技术部\\信息中心"</param>
- /// <returns>返回部门下所有用户的账户,不包含子部门下的用户</returns>
- public string GetDeptUsersJson(string deptName)
- {
- JArray jArray = new JArray();
- string users = rootObj.DeptManager.GetDeptUsers(deptName);
- XDocument xdoc = XDocument.Parse(users);
- foreach (var userItem in xdoc.Root.Elements("User"))
- {
- string staffId = userItem.Attribute("Name").Value;
- string pbstrName = "";
- int plGender = 0;
- string pbstrMobile = "";
- string pbstrEMail = "";
- string pbstrPhone = "";
- int plAuthType = 0;
- try
- {
- rootObj.UserManager.GetUserBasicInfo(staffId,
- out pbstrName,
- out plGender,
- out pbstrMobile,
- out pbstrEMail,
- out pbstrPhone,
- out plAuthType);
- }
- catch (Exception)
- {
- pbstrName = "获取用户失败";
- }
- finally
- {
- jArray.Add(new JObject(
- new JProperty("UserName", staffId),
- new JProperty("Name", pbstrName),
- new JProperty("Gender", plGender),
- new JProperty("Mobile", pbstrMobile),
- new JProperty("EMail", pbstrEMail),
- new JProperty("Phone", pbstrPhone),
- new JProperty("AuthType", plAuthType)));
- }
- }
- return jArray.ToString();
- }
- /// <summary>
- /// 从rtx中获取所有部门和用户
- /// </summary>
- /// <param name="serverIp">rtx服务器ip</param>
- /// <param name="serverPort">SDKServerPort,默认6000</param>
- public string GetALLDeptAndUserXml(string serverIp, int sdkServerPort)
- {
- JArray jArray = new JArray();
- RTXServerApi.RTXObject RTXObj = new RTXServerApi.RTXObject();
- RTXServerApi.RTXCollection RTXParams = new RTXServerApi.RTXCollection();
- RTXObj.ServerIP = serverIp;
- RTXObj.ServerPort = sdkServerPort;
- RTXObj.Name = "USERSYNC";
- RTXParams.Add("MODIFYMODE", 1);
- RTXParams.Add("XMLENCODE", @"<?xml version=" + "\"" + "1.0" + "\"" + " encoding=" + "\"" + "gb2312" + "\"" + " ?>");
- string deptUsersXml = RTXObj.Call2(
- enumCommand_.PRO_SYNC_FROM_RTX, RTXParams).ToString();
- XmlDocument xmlDoc = new XmlDocument();
- xmlDoc.LoadXml(deptUsersXml);
- return xmlDoc.OuterXml;
- }
- /// <summary>
- /// 从rtx中获取所有部门和用户
- /// </summary>
- /// <param name="serverIp">rtx服务器ip</param>
- /// <param name="serverPort">SDKServerPort,默认6000</param>
- /// <param name="deptName">部门路径,比如:"生产技术部\\信息中心"</param>
- public string GetDeptAndUserXml(string serverIp, int sdkServerPort, string deptName)
- {
- JArray jArray = new JArray();
- RTXServerApi.RTXObject RTXObj = new RTXServerApi.RTXObject();
- RTXServerApi.RTXCollection RTXParams = new RTXServerApi.RTXCollection();
- RTXObj.ServerIP = serverIp;
- RTXObj.ServerPort = sdkServerPort;
- RTXObj.Name = "USERSYNC";
- RTXParams.Add("MODIFYMODE", 1);
- RTXParams.Add("XMLENCODE", @"<?xml version=" + "\"" + "1.0" + "\"" + " encoding=" + "\"" + "gb2312" + "\"" + " ?>");
- string deptUsersXml = RTXObj.Call2(
- enumCommand_.PRO_SYNC_FROM_RTX, RTXParams).ToString();
- XmlDocument xmlDoc = new XmlDocument();
- xmlDoc.LoadXml(deptUsersXml);
- XmlNode xmlNode =
- xmlDoc.SelectSingleNode(GetXpath(deptName));
- foreach (XmlNode item in xmlNode.SelectNodes("department"))
- {
- xmlNode.RemoveChild(item);
- }
- return xmlNode.OuterXml;
- }
- private string GetXpath(string pathName)
- {
- StringBuilder sb = new StringBuilder();
- sb.Append("//departments");
- string[] paths = pathName.Split(
- new string[] { "\\" },
- StringSplitOptions.RemoveEmptyEntries);
- foreach (var item in paths)
- {
- sb.AppendFormat("/department[@name='{0}']", item);
- }
- return sb.ToString();
- }
- }
- }
程序员的基础教程:菜鸟程序员
rtx 二次开发,查找所有部门的更多相关文章
- RTX二次开发笔记2
问题一:关于DLL文件的引用 在安装文件夹内 APIObject.dll==>RTXSAPI.dll 服务器API接口 RTXCAPI.DLL ==> 客户端API接口 问题二:RTX二次 ...
- RTX二次开发(一)(基于ASP.NET)
腾讯通RTX是(Real Time eXpert)是腾讯公司推出的企业级实时通信平台,致力于帮助企业提高运作效率.降低沟通成本.拓展商业机会,是一种高度可管理.低成本.易部署的IT平台.RTX集成了丰 ...
- RTX二次开发SDK需要注意的地方
1.如果是ASP.net二次开发调用的,线程池必须开发 Enable 32-bit Applications设置为true. 因为RTX的调用接口很多是32位的.否则会报一下错误 RootObj = ...
- 腾讯RTX二次开发相关的一些注意事项
http://www.cnblogs.com/netWild/p/4241650.html —————————————————————————————————————————————————————— ...
- [原创] 腾讯RTX二次开发相关的一些注意事项
在企业即时通信方面,腾讯的RTX在国内的占有率应该是很高的 所以,就避免不了要与其他系统进行消息集成 腾讯为此提供了二次开发的工具包,支持JAVA.C#.VB等多种开发语言 但是,目前为止,腾讯官方提 ...
- RTX二次开发(二)(基于ASP.NET)
上一篇,我们讲到我开发环境的配置,还没配置好开发环境或再看一遍开发环境配置?接下来,我们开始coding...... 在coding之前,我们先添加引用. 我们在SDK的安装目录中引用这个文件. 引用 ...
- RTX二次开发集成
1,rtx服务器端有很多端口,二次发的程序与这些打开的端口交互.打开端口的方法在rtx服务管理器中,默认http服务未启用.需要手动启用http端口如下: 如果打开rtx服务器没有启用http的801 ...
- RTX二次开发笔记1
在客户端,一个rtx用户给另一个rtx用户发送消息! 我的解决方案:在rtx服务端部署一个 wcf服务 或 webservice 服务,然后程序在客户端调用服务就行. 1,C#版 (服务端需要4个DL ...
- RTX二次开发::检索 COM 类工厂中 CLSID 为 {79210E58-99EB-45D0-8890-763EFEAA143F} 的组件失败,
解决方法: 1.Interop.RTXSAPILib.dll这个是32位的 将IIS 应用程序池 启用32位应用程序 设置为true就可以了, 2.把编译好的程序选择X86平台运行,就好了 程序员的基 ...
随机推荐
- CSS基本样式简单介绍
具体详情内容请查阅<css参考手册> 一.基本结构样式 width 宽度 height 高度 background 背景 border 边框 padding 内边距 margin 外边距 ...
- Codeforces 982C(dfs+思维)
C. Cut 'em all! time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...
- 杂项:Vue.js
ylbtech-杂项:Vue.js Vue.js(读音 /vjuː/, 类似于 view)是一个构建数据驱动的 web 界面的渐进式框架.Vue.js 的目标是通过尽可能简单的 API 实现响应的数据 ...
- webpack快速入门(三):资源管理
上一章说了基本的webpack是用,包括命令行打包,npm脚本打包等基础的东西. 这篇说一下webpack的资源管理,包括(图片,字体,数据),首先调整一下项目结构成: webpack-demo |- ...
- Spring MVC中发布Restful Web服务
对于企业应用来说,数据是许多业务的命脉,软件通常是可替换的,但是多年积累的数据是永远不能替换的. 近些年来,以信息为中心的表述性状态转移(Representational State Tran ...
- UISegmentedControl-iOS
//建立UISegmentedControl的数组 NSArray *segmentedArray = [NSArray arrayWithObjects:@"线下培训",@&qu ...
- 【UVALive】3029 City Game(悬线法)
题目 传送门:QWQ 分析 以前见到过差不多的这题. xhk说是单调栈水题,但我又不会单调栈,于是当时就放下了. 这么久过去了我还是不会用单调栈做这题,用的是悬线法. 非常好写 代码 #include ...
- 《Effective C++(第三版)》-笔记
1. 让自己习惯C++ 条款01: 视C++为一个语言联邦 1.1 C++ 是一个多重泛型编程语言(multiparadigm programming),支持:过程形式(procedural),面向对 ...
- Linux 之不同运维人员共用root 账户权限审计
一.为什么? 在中小型企业,公司不同运维人员基本都是以root 账户进行服务器的登陆管理,缺少了账户权限审计制度.不出问题还好,出了问题,就很难找出源头. 这里介绍下,如何利用编译bash 使不同的客 ...
- 你知道的,javascript语言的执行环境是"单线程模式",这种模式的好处是实现起来比较简单,执行环境相对单纯;坏处是只要有一个任务耗时很长,后面的任务都必须排队等着,会拖延整个程序的执行,因此很多时候需要进行“异步模式”,请列举js异步编程的方法。
回调函数,这是异步编程最基本的方法. 事件监听,另一种思路是采用事件驱动模式.任务的执行不取决于代码的顺序,而取决于某个事件是否发生. 发布/订阅,上一节的"事件",完全可以理解成 ...