1>rtx二次开发操作类

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Web;
  6.  
  7. using System.Xml;
  8. using System.Xml.Linq;
  9. using Newtonsoft.Json;
  10. using Newtonsoft.Json.Linq;
  11. using System.Configuration;
  12. using RTXServerApi;
  13.  
  14. namespace RTXHelper
  15. {
  16. public class RTX
  17. {
  18.  
  19. private RTXSAPILib.IRTXSAPIRootObj rootObj;
  20.  
  21. /// <summary>
  22. /// 默认的RTX服务器的地址和端口是本机,如果夸服务器则从配置文件中读取
  23. /// 默认值:IP(127.0.0.1) port(8006)
  24. /// </summary>
  25. public RTX()
  26. {
  27. rootObj = new RTXSAPILib.RTXSAPIRootObjClass();
  28. WebConfigHelper webConfig = new WebConfigHelper();
  29. rootObj.ServerIP = webConfig.RTXServerIP;
  30. rootObj.ServerPort = webConfig.RTXServerPort;
  31. }
  32.  
  33. public RTX(String rtxServerIP, Int16 rtxServerPort)
  34. {
  35. rootObj = new RTXSAPILib.RTXSAPIRootObjClass();
  36. rootObj.ServerIP = rtxServerIP;
  37. rootObj.ServerPort = rtxServerPort;
  38. }
  39.  
  40. public bool SignatureAuth(string bstrUserName, string bstrSign)
  41. {
  42. RTXSAPILib.IRTXSAPIUserAuthObj2 AuthObj2 = (RTXSAPILib.IRTXSAPIUserAuthObj2)rootObj.UserAuthObj;
  43. return AuthObj2.SignatureAuth(bstrUserName, bstrSign);
  44. }
  45.  
  46. public void SendIM(string bstrSender, string bstrPwd, string bstrReceivers, string bstrMsg, string bstrSessionID)
  47. {
  48. rootObj.SendIM(bstrSender, bstrPwd, bstrReceivers, bstrMsg, string.Format("{0}{1}{2}", "{", bstrSessionID, "}"));
  49. }
  50.  
  51. public void SendIM(string bstrSender, string bstrReceivers, string bstrMsg)
  52. {
  53. rootObj.SendIM(bstrSender, "", bstrReceivers, bstrMsg, string.Format("{0}{1}{2}", "{", Guid.NewGuid().ToString(), "}"));
  54. }
  55.  
  56. public void SendNotify(string bstrReceiver, string bstrTitle, int lDelayTime, string bstrMsg)
  57. {
  58. rootObj.SendNotify(bstrReceiver, bstrTitle, lDelayTime, bstrMsg);
  59. }
  60.  
  61. public string GetDepartment(string userId)
  62. {
  63. short d = rootObj.Login("124065", "2");
  64.  
  65. rootObj.UserManager.SetUserPwd("124065", "2");
  66. rootObj.UserManager.SetUserMd5Pwd("060637", "2");
  67. return rootObj.GetBUinPwd();
  68. }
  69.  
  70. public short Login(string userId, string pwd)
  71. {
  72. return rootObj.Login(userId, pwd);
  73. }
  74.  
  75. public void SendDisGroupIM(string bstrSender, string bstrpwd, int lDisGroupId, string bstrtitle, string bstrMsg, string bstrSessionId)
  76. {
  77. rootObj.SendDisGroupIM(bstrSender, bstrpwd, lDisGroupId, bstrtitle, bstrMsg, string.Format("{0}{1}{2}", "{", Guid.NewGuid().ToString(), "}"));
  78. }
  79.  
  80. public void SendRCAIM(string bstrSender, string bstrpwd, string bstrReceivers, string bstrMsg, string bstrSessionId)
  81. {
  82. rootObj.SendRCAIM(bstrSender, bstrpwd, bstrReceivers, bstrMsg, string.Format("{0}{1}{2}", "{", bstrSessionId, "}"));
  83. }
  84.  
  85. public string GetAllUsers()
  86. {
  87. XDocument xDoc = XDocument.Parse(rootObj.DeptManager.GetChildDepts(""));
  88.  
  89. return rootObj.DisGroupManager.GetAllDisGroupIds();
  90. }
  91.  
  92. /// <summary>
  93. /// 查找部门下的所有用户
  94. /// </summary>
  95. /// <param name="deptName">部门路径,比如:"生产技术部\\信息中心"</param>
  96. /// <returns>返回部门下所有用户的账户,不包含子部门下的用户</returns>
  97. public string[] GetDeptUsers(string deptName)
  98. {
  99. List<string> result = new List<string>();
  100. string users = rootObj.DeptManager.GetDeptUsers(deptName);
  101. XDocument xdoc = XDocument.Parse(users);
  102. foreach (var userItem in xdoc.Root.Elements("User"))
  103. {
  104. result.Add(userItem.Attribute("Name").Value);
  105. }
  106. return result.ToArray();
  107. }
  108.  
  109. /// <summary>
  110. /// 查找部门下的所有用户
  111. /// </summary>
  112. /// <param name="deptName">部门路径,比如:"生产技术部\\信息中心"</param>
  113. /// <returns>返回部门下所有用户的账户,不包含子部门下的用户</returns>
  114. public string GetDeptUsersJson(string deptName)
  115. {
  116. JArray jArray = new JArray();
  117.  
  118. string users = rootObj.DeptManager.GetDeptUsers(deptName);
  119. XDocument xdoc = XDocument.Parse(users);
  120.  
  121. foreach (var userItem in xdoc.Root.Elements("User"))
  122. {
  123. string staffId = userItem.Attribute("Name").Value;
  124. string pbstrName = "";
  125. int plGender = 0;
  126. string pbstrMobile = "";
  127. string pbstrEMail = "";
  128. string pbstrPhone = "";
  129. int plAuthType = 0;
  130. try
  131. {
  132. rootObj.UserManager.GetUserBasicInfo(staffId,
  133. out pbstrName,
  134. out plGender,
  135. out pbstrMobile,
  136. out pbstrEMail,
  137. out pbstrPhone,
  138. out plAuthType);
  139. }
  140. catch (Exception)
  141. {
  142. pbstrName = "获取用户失败";
  143. }
  144. finally
  145. {
  146. jArray.Add(new JObject(
  147. new JProperty("UserName", staffId),
  148. new JProperty("Name", pbstrName),
  149. new JProperty("Gender", plGender),
  150. new JProperty("Mobile", pbstrMobile),
  151. new JProperty("EMail", pbstrEMail),
  152. new JProperty("Phone", pbstrPhone),
  153. new JProperty("AuthType", plAuthType)));
  154. }
  155. }
  156.  
  157. return jArray.ToString();
  158. }
  159.  
  160. /// <summary>
  161. /// 从rtx中获取所有部门和用户
  162. /// </summary>
  163. /// <param name="serverIp">rtx服务器ip</param>
  164. /// <param name="serverPort">SDKServerPort,默认6000</param>
  165. public string GetALLDeptAndUserXml(string serverIp, int sdkServerPort)
  166. {
  167. JArray jArray = new JArray();
  168. RTXServerApi.RTXObject RTXObj = new RTXServerApi.RTXObject();
  169. RTXServerApi.RTXCollection RTXParams = new RTXServerApi.RTXCollection();
  170. RTXObj.ServerIP = serverIp;
  171. RTXObj.ServerPort = sdkServerPort;
  172. RTXObj.Name = "USERSYNC";
  173. RTXParams.Add("MODIFYMODE", 1);
  174. RTXParams.Add("XMLENCODE", @"<?xml version=" + "\"" + "1.0" + "\"" + " encoding=" + "\"" + "gb2312" + "\"" + " ?>");
  175. string deptUsersXml = RTXObj.Call2(
  176. enumCommand_.PRO_SYNC_FROM_RTX, RTXParams).ToString();
  177. XmlDocument xmlDoc = new XmlDocument();
  178. xmlDoc.LoadXml(deptUsersXml);
  179. return xmlDoc.OuterXml;
  180. }
  181.  
  182. /// <summary>
  183. /// 从rtx中获取所有部门和用户
  184. /// </summary>
  185. /// <param name="serverIp">rtx服务器ip</param>
  186. /// <param name="serverPort">SDKServerPort,默认6000</param>
  187. /// <param name="deptName">部门路径,比如:"生产技术部\\信息中心"</param>
  188. public string GetDeptAndUserXml(string serverIp, int sdkServerPort, string deptName)
  189. {
  190. JArray jArray = new JArray();
  191. RTXServerApi.RTXObject RTXObj = new RTXServerApi.RTXObject();
  192. RTXServerApi.RTXCollection RTXParams = new RTXServerApi.RTXCollection();
  193. RTXObj.ServerIP = serverIp;
  194. RTXObj.ServerPort = sdkServerPort;
  195. RTXObj.Name = "USERSYNC";
  196. RTXParams.Add("MODIFYMODE", 1);
  197. RTXParams.Add("XMLENCODE", @"<?xml version=" + "\"" + "1.0" + "\"" + " encoding=" + "\"" + "gb2312" + "\"" + " ?>");
  198. string deptUsersXml = RTXObj.Call2(
  199. enumCommand_.PRO_SYNC_FROM_RTX, RTXParams).ToString();
  200. XmlDocument xmlDoc = new XmlDocument();
  201. xmlDoc.LoadXml(deptUsersXml);
  202. XmlNode xmlNode =
  203. xmlDoc.SelectSingleNode(GetXpath(deptName));
  204. foreach (XmlNode item in xmlNode.SelectNodes("department"))
  205. {
  206. xmlNode.RemoveChild(item);
  207. }
  208. return xmlNode.OuterXml;
  209. }
  210.  
  211. private string GetXpath(string pathName)
  212. {
  213. StringBuilder sb = new StringBuilder();
  214. sb.Append("//departments");
  215. string[] paths = pathName.Split(
  216. new string[] { "\\" },
  217. StringSplitOptions.RemoveEmptyEntries);
  218. foreach (var item in paths)
  219. {
  220. sb.AppendFormat("/department[@name='{0}']", item);
  221. }
  222. return sb.ToString();
  223. }
  224. }
  225. }

  程序员的基础教程:菜鸟程序员

rtx 二次开发,查找所有部门的更多相关文章

  1. RTX二次开发笔记2

    问题一:关于DLL文件的引用 在安装文件夹内 APIObject.dll==>RTXSAPI.dll 服务器API接口 RTXCAPI.DLL ==> 客户端API接口 问题二:RTX二次 ...

  2. RTX二次开发(一)(基于ASP.NET)

    腾讯通RTX是(Real Time eXpert)是腾讯公司推出的企业级实时通信平台,致力于帮助企业提高运作效率.降低沟通成本.拓展商业机会,是一种高度可管理.低成本.易部署的IT平台.RTX集成了丰 ...

  3. RTX二次开发SDK需要注意的地方

    1.如果是ASP.net二次开发调用的,线程池必须开发 Enable 32-bit Applications设置为true. 因为RTX的调用接口很多是32位的.否则会报一下错误 RootObj =  ...

  4. 腾讯RTX二次开发相关的一些注意事项

    http://www.cnblogs.com/netWild/p/4241650.html —————————————————————————————————————————————————————— ...

  5. [原创] 腾讯RTX二次开发相关的一些注意事项

    在企业即时通信方面,腾讯的RTX在国内的占有率应该是很高的 所以,就避免不了要与其他系统进行消息集成 腾讯为此提供了二次开发的工具包,支持JAVA.C#.VB等多种开发语言 但是,目前为止,腾讯官方提 ...

  6. RTX二次开发(二)(基于ASP.NET)

    上一篇,我们讲到我开发环境的配置,还没配置好开发环境或再看一遍开发环境配置?接下来,我们开始coding...... 在coding之前,我们先添加引用. 我们在SDK的安装目录中引用这个文件. 引用 ...

  7. RTX二次开发集成

    1,rtx服务器端有很多端口,二次发的程序与这些打开的端口交互.打开端口的方法在rtx服务管理器中,默认http服务未启用.需要手动启用http端口如下: 如果打开rtx服务器没有启用http的801 ...

  8. RTX二次开发笔记1

    在客户端,一个rtx用户给另一个rtx用户发送消息! 我的解决方案:在rtx服务端部署一个 wcf服务 或 webservice 服务,然后程序在客户端调用服务就行. 1,C#版 (服务端需要4个DL ...

  9. RTX二次开发::检索 COM 类工厂中 CLSID 为 {79210E58-99EB-45D0-8890-763EFEAA143F} 的组件失败,

    解决方法: 1.Interop.RTXSAPILib.dll这个是32位的 将IIS 应用程序池 启用32位应用程序 设置为true就可以了, 2.把编译好的程序选择X86平台运行,就好了 程序员的基 ...

随机推荐

  1. CSS基本样式简单介绍

    具体详情内容请查阅<css参考手册> 一.基本结构样式 width 宽度 height 高度 background 背景 border 边框 padding 内边距 margin 外边距 ...

  2. Codeforces 982C(dfs+思维)

    C. Cut 'em all! time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...

  3. 杂项:Vue.js

    ylbtech-杂项:Vue.js Vue.js(读音 /vjuː/, 类似于 view)是一个构建数据驱动的 web 界面的渐进式框架.Vue.js 的目标是通过尽可能简单的 API 实现响应的数据 ...

  4. webpack快速入门(三):资源管理

    上一章说了基本的webpack是用,包括命令行打包,npm脚本打包等基础的东西. 这篇说一下webpack的资源管理,包括(图片,字体,数据),首先调整一下项目结构成: webpack-demo |- ...

  5. Spring MVC中发布Restful Web服务

      对于企业应用来说,数据是许多业务的命脉,软件通常是可替换的,但是多年积累的数据是永远不能替换的.   近些年来,以信息为中心的表述性状态转移(Representational State Tran ...

  6. UISegmentedControl-iOS

    //建立UISegmentedControl的数组 NSArray *segmentedArray = [NSArray arrayWithObjects:@"线下培训",@&qu ...

  7. 【UVALive】3029 City Game(悬线法)

    题目 传送门:QWQ 分析 以前见到过差不多的这题. xhk说是单调栈水题,但我又不会单调栈,于是当时就放下了. 这么久过去了我还是不会用单调栈做这题,用的是悬线法. 非常好写 代码 #include ...

  8. 《Effective C++(第三版)》-笔记

    1. 让自己习惯C++ 条款01: 视C++为一个语言联邦 1.1 C++ 是一个多重泛型编程语言(multiparadigm programming),支持:过程形式(procedural),面向对 ...

  9. Linux 之不同运维人员共用root 账户权限审计

    一.为什么? 在中小型企业,公司不同运维人员基本都是以root 账户进行服务器的登陆管理,缺少了账户权限审计制度.不出问题还好,出了问题,就很难找出源头. 这里介绍下,如何利用编译bash 使不同的客 ...

  10. 你知道的,javascript语言的执行环境是"单线程模式",这种模式的好处是实现起来比较简单,执行环境相对单纯;坏处是只要有一个任务耗时很长,后面的任务都必须排队等着,会拖延整个程序的执行,因此很多时候需要进行“异步模式”,请列举js异步编程的方法。

    回调函数,这是异步编程最基本的方法. 事件监听,另一种思路是采用事件驱动模式.任务的执行不取决于代码的顺序,而取决于某个事件是否发生. 发布/订阅,上一节的"事件",完全可以理解成 ...