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();
        }
    }
}

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

转载于:https://www.cnblogs.com/guohu/p/4920237.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!对于开发内网聊天软件,您可以考虑以下步骤: 1. 确定需求:首先,明确内网聊天软件的功能和特性,例如一对一聊天、群聊、文件传输等。确定软件的基本需求,以便后续开发过程中进行规划。 2. 技术选择:选择适合的开发技术和平台。常见的选择包括使用C/C++、Java、Python等编程语言进行开发,使用TCP/IP或者UDP等网络通信协议进行消息传输。 3. 设计架构:根据需求,设计软件的架构。可以考虑分为客户端和服务器端两部分。客户端负责用户界面展示和用户交互,服务器端负责消息转发、用户管理等核心功能。 4. 开发客户端:根据设计,开发内网聊天软件的客户端。包括用户登录注册、联系人列表、聊天界面等功能的实现。可以使用图形界面库或者开源的UI框架来简化开发。 5. 开发服务器端:根据设计,开发内网聊天软件的服务器端。实现用户管理、消息转发、群组管理等功能。可以使用数据库来存储用户信息和消息记录。 6. 连接与通信:通过网络连接客户端和服务器端,建立稳定的通信通道。可以使用Socket编程进行网络通信,确保消息的可靠传输。 7. 测试与优化:进行软件的功能测试和性能测试,修复bug并进行优化,确保软件的稳定性和用户体验。 8. 部署与发布:将开发完成的内网聊天软件部署到内网服务器上,并通知用户进行下载和使用。 以上是一个基本的开发流程,当然具体的实现方式和细节还需要根据实际情况进行调整。希望对您有所帮助!如有更多问题,欢迎继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值