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 二次开发,查找所有部门的更多相关文章

  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. Oracle存储过程记录异常日志

    一般我们会将一些涉及到数据库的定时任务直接用存储过程搞定,省去了后端代码的开发.部署,简单.快速,但这种方式存在一个弊端——当存储过程执行出错了,我们无法感知.解决办法也简单,学代码那样去捕获异常.打 ...

  2. NetCore 下集成SignalR并进行分组处理

    Tips: 1.注意跟普通版Net.MVC的前端处理方式不一样,以前可以connection.start()后直接done里面再做逻辑处理,现在不行了 建议做法是在具体的业务Hub里重写OnConne ...

  3. C++使用回溯法实现N皇后问题的求解

    回溯法是个很无聊的死算方法,没什么技巧,写这篇博客主要原因是以前思路不太清晰,现在突然想用回溯法解决一个问题时,无法快速把思路转换成代码. ------------------------------ ...

  4. 以太坊客户端Geth命令用法

    命令用法 geth [选项] 命令 [命令选项] [参数…] 命令: account 管理账户attach 启动交互式JavaScript环境(连接到节点)bug 上报bug Issuesconsol ...

  5. 使用Java读取配置文件

    实现起来,相对比较简单,留个备案吧,废话也不多说,请看代码: package com.jd.***.config; import org.junit.*; import java.io.IOExcep ...

  6. node的express中间件之static之ajax提交json

    static中间件可以使客户端直接访问网站中的所有静态文件. 利用这个功能可以直接把服务器上的静态页面直接读取出来返回到客户端. 从客户端点击一个按钮,向服务器端发送数据.并且插入到mysql数据库中 ...

  7. 【BZOJ】2819: Nim(树链剖分 / lca+dfs序+树状数组)

    题目 传送门:QWQ 分析 先敲了个树链剖分,发现无法AC(其实是自己弱,懒得debug.手写栈) 然后去学了学正解 核心挺好理解的,$ query(a) $是$ a $到根的异或和. 答案就是$ l ...

  8. 浅谈PHP面向对象编程(九、设计模式)

    9.0 设计模式 在编写程序时经常会遇到一此典型的问题或需要完成某种特定需求,设计模式就是针对这些问题和需求,在大量的实践中总结和理论化之后优选的代码结构编程风格,以及解决问题的思考方式. 设计模式就 ...

  9. phpstorm 不能提示代码tp 3.2 $this->display等 解决办法

    phpstorm->file->Setting->Directorires 里把 ThinkPHP/Model 目录设置为 Excluded ,保存.

  10. 什么是java序列化,如何实现java序列化?

    http://veryti.com/question/539 序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化.可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间 ...