RTXSvrApi.java 38 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217
  1. package rtx;
  2. /**
  3. * 封装对RTX的操作
  4. * <p>
  5. * Title:
  6. * </p>
  7. * <p>
  8. * Description:
  9. * </p>
  10. * <p>
  11. * Copyright: Copyright (c) 2007
  12. * </p>
  13. * <p>
  14. * Company: Tencent C0. Ltd
  15. * </p>
  16. *
  17. * @author herolin
  18. * @version 1.0
  19. */
  20. public class RTXSvrApi {
  21. // 客户端与server传递的协议
  22. static int PRO_ADDUSER = 0x0001; // 添加用户信息
  23. static int PRO_DELUSER = 0x0002; // 删除用户信息
  24. static int PRO_GETUSERDETAILINFO = 0x0004; // 获取用户详细信息
  25. static int PRO_SETUSERDETAILINFO = 0x0005; // 更新用户详细信息
  26. static int PRO_GETUSERSMPLINFO = 0x0006; // 获取用户简要信息
  27. static int PRO_SETUSERSMPLINFO = 0x0003; // 更改用户简要信息
  28. static int PRO_SETUSERPRIVILEGE = 0x0007; // 设置用户权限
  29. static int PRO_IFEXIST = 0x0008; // 判断用户是否存在
  30. static int PRO_TRANUSER = 0X0009; // 用户名与UIN的互转
  31. static int PRO_ADDDEPT = 0x0101; // 增加部门
  32. static int PRO_DELDEPT = 0x0102; // 删除部门
  33. static int PRO_SETDEPT = 0x0103; // 更新部门信息
  34. static int PRO_GETCHILDDEPT = 0x0104; // 获取子部门
  35. static int PRO_GETDEPTALLUSER = 0x0105; // 获取部门用户
  36. static int PRO_SETDEPTPRIVILEGE = 0x0106; // 设置部门权限
  37. static int PRO_GETDEPTSMPLINFO = 0x0107; // 获取部门信息
  38. static int PRO_SMS_LOGON = 0x1000;
  39. static int PRO_SMS_SEND = 0x1001; // 发送短信 多个手机号码(逗号分隔)可群发
  40. static int PRO_SMS_NICKLIST = 0x1002; // 按用户读取短信
  41. static int PRO_SMS_FUNCLIST = 0x1003; // 按功能号读取短信
  42. static int PRO_SMS_CHECK = 0x1004; // 获取未读短信数量
  43. static int PRO_SYS_GETSESSIONKEY = 0x2000; // 单点验证获取sessionKey
  44. static int PRO_SYS_GETUSERSTATUS = 0x2001; // 查询用户在线状态
  45. static int PRO_SYS_SENDIM = 0x2002; // 发送IM消息
  46. static int PRO_SYS_SESSIONKEYVERIFY = 0x2003; // 验证sessionKey
  47. static int PRO_EXT_NOTIFY = 0x2100; // 即时消息提醒
  48. static int PRO_IMPORTUSER = 0x0001; // 导入xml用户数据
  49. static int PRO_EXMPORTUSER = 0x0002; // 导出xml用户数据
  50. // 对象名称
  51. static String OBJNAME_RTXEXT = "EXTTOOLS"; // 扩展对象
  52. static String OBJNAME_RTXSYS = "SYSTOOLS"; // 系统对象
  53. static String OBJNAME_DEPTMANAGER = "DEPTMANAGER"; // 部门对象
  54. static String OBJNAME_USERMANAGER = "USERMANAGER"; // 用户对象
  55. static String OBJNAME_SMSMANAGER = "SMSOBJECT"; // 短信对象
  56. static String OBJNAME_USERSYNC = "USERSYNC"; // 用户数据导入导出
  57. static String KEY_TYPE = "TYPE";
  58. static String KEY_USERID = "USERID";
  59. static String KEY_USERNAME = "USERNAME";
  60. static String KEY_UINTYPE = "UINTYPE";
  61. static String KEY_UIN = "UIN"; // RTX编号
  62. static String KEY_NICK = "NICK"; // 登陆名
  63. static String KEY_MOBILE = "MOBILE"; // 手机
  64. static String KEY_OUTERUIN = "OUTERUIN";
  65. static String KEY_LASTMODIFYTIME = "LASTMODIFYTIME";
  66. static String KEY_FACE = "FACE"; // 头像
  67. static String KEY_PASSWORD = "PWD"; // 密码
  68. static String KEY_AGE = "AGE"; // 年龄
  69. static String KEY_GENDER = "GENDER"; // 性别
  70. static String KEY_BIRTHDAY = "BIRTHDAY"; // 生日
  71. static String KEY_BLOODTYPE = "BLOODTYPE"; // 血型
  72. static String KEY_CONSTELLATION = "CONSTELLATION"; // 星座
  73. static String KEY_COLLAGE = "COLLAGE"; // 大学
  74. static String KEY_HOMEPAGE = "HOMEPAGE"; // 主页
  75. static String KEY_EMAIL = "EMAIL"; // 邮箱
  76. static String KEY_PHONE = "PHONE"; // 电话
  77. static String KEY_FAX = "FAX"; // 电话分机号码
  78. static String KEY_ADDRESS = "ADDRESS"; // 地址
  79. static String KEY_POSTCODE = "POSTCODE"; // 邮编号码
  80. static String KEY_COUNTRY = "COUNTRY"; // 国家
  81. static String KEY_PROVINCE = "PROVINCE"; // 省份
  82. static String KEY_CITY = "CITY"; // 城市
  83. static String KEY_MEMO = "MEMO"; // 个人说明
  84. static String KEY_STREET = "STREET"; // 街道
  85. static String KEY_MOBILETYPE = "MOBILETYPE";
  86. static String KEY_AUTHTYPE = "AUTHTYPE";
  87. static String KEY_POSITION = "POSITION";
  88. static String KEY_OPENGSMINFO = "OPENGSMINFO";
  89. static String KEY_OPENCONTACTINFO = "OPENCONTACTINFO";
  90. static String KEY_PUBOUTUIN = "PUBOUTUIN";
  91. static String KEY_PUBOUTNICK = "PUBOUTNICK";
  92. static String KEY_PUBOUTNAME = "PUBOUTNAME";
  93. static String KEY_PUBOUTDEPT = "PUBOUTDEPT";
  94. static String KEY_PUBOUTPOSITION = "PUBOUTPOSITION";
  95. static String KEY_PUBOUTINFO = "PUBOUTINFO";
  96. static String KEY_OUTERPUBLISH = "OUTERPUBLISH";
  97. static String KEY_LDAPID = "LDAPID";
  98. static String KEY_DEPTID = "DEPTID";
  99. static String KEY_PDEPTID = "PDEPTID";
  100. static String KEY_SORTID = "SORTID";
  101. static String KEY_NAME = "NAME";
  102. static String KEY_INFO = "INFO";
  103. static String KEY_COMPLETEDELBS = "COMPLETEDELBS";
  104. // 权限相关
  105. static String KEY_DENY = "DENY";
  106. static String KEY_ALLOW = "ALLOW";
  107. static String KEY_SESSIONKEY = "SESSIONKEY";
  108. // 导入导出xml数据相关
  109. static String KEY_MODIFYMODE = "MODIFYMODE";
  110. static String KEY_DATA = "DATA";
  111. // 短信相关
  112. static String KEY_SENDER = "SENDER";
  113. static String KEY_FUNNO = "FUNCNO";
  114. static String KEY_RECEIVER = "RECEIVER";
  115. static String KEY_RECEIVERUIN = "RECEIVERUIN";
  116. static String KEY_SMS = "SMS";
  117. static String KEY_CUT = "CUT";
  118. static String KEY_NOTITLE = "NOTITLE";
  119. static String KEY_DELFLAG = "DELFLAG";
  120. // RTXServer业务逻辑
  121. static String KEY_RECVUSERS = "RECVUSERS";
  122. static String KEY_IMMSG = "IMMSG";
  123. // 消息提醒
  124. static String KEY_MSGID = "MSGID";
  125. static String KEY_MSGINFO = "MSGINFO";
  126. static String KEY_ASSISTANTTYPE = "ASSTYPE";
  127. static String KEY_TITLE = "TITLE";
  128. static String KEY_DELAYTIME = "DELAYTIME";
  129. // 结果集合的描述
  130. static String KEY_RESULT_INCODE = "INNERCODE"; // 内部错误
  131. static String KEY_RESULT_ERR_INFO = "ERR_INFO";
  132. static String KEY_RESULT_CODE = "CODE"; // 返回错误
  133. static String KEY_RESULT_TYPE = "TYPE"; // 返回类型
  134. static String KEY_RESULT_NAME = "NAME";
  135. static String KEY_RESULT_VALUE = "VALUE";
  136. static String KEY_RESULT_VARIANT = "VARIANT";
  137. // 私有属性
  138. private int iObj;
  139. private int iProp;
  140. private int innerCode;
  141. private int iResult;
  142. static {
  143. System.loadLibrary("SDKAPIJava");
  144. }
  145. // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  146. // 系统自带的函数 //
  147. // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  148. // 初始化类
  149. public native boolean Init();
  150. // 析构类
  151. public native void UnInit();
  152. // 通过int类型的错误代码获取错误信息
  153. public native String GetError(int innerCode);
  154. // 获取版本号
  155. public native String GetVersion();
  156. // 通过对象名称创建一个对象,对象名称如OBJNAME_RTXEXT,返回int类型的句柄,在本文称为iObjectHandle
  157. public native int GetNewObject(String szObjectName);
  158. // 通过句柄获取对象名称(该方法一般用不上)
  159. public native String GetObjectName(int iObjectHandle);
  160. // 设置句柄的对象名称(该方法一般用不上)
  161. public native int SetObjectName(int iObjectHandle, String szObjectName);
  162. // 获取属性集合句柄
  163. public native int GetNewPropertys();
  164. // 该int类型的数是否是句柄 (该方法一般用不上)
  165. public native int IsHandle(int iHandle);
  166. // 引用计数(该方法一般用不上)
  167. public native int AddRefHandle(int iHandle);
  168. // 释放句柄
  169. public native int ReleaseHandle(int iHandle);
  170. // 向属性集合添加属性,iHandle表示属性集合的句柄
  171. public native int AddProperty(int iPropertyHandle, String szName, String szValue);
  172. // 在属性集合中删除某个属性,通过索引删除
  173. public native int ClearProperty(int iPropertyHandle, int iIndex);
  174. // 在属性集合中删除某个属性,通过属性名删除
  175. public native int RemoveProperty(int iPropertyHandle, String szName);
  176. // 获取属性集合中某个属性的值
  177. public native String GetProperty(int iPropertyHandle, String szName);
  178. // 设置服务器IP地址
  179. public native int SetServerIP(int iObjectHandle, String szServerIP);
  180. // 获取服务器IP地址
  181. public native String GetServerIP(int iObjectHandle);
  182. // 获取服务器IP地址
  183. public native int GetServerPort(int iObjectHandle);
  184. // 设置服务器端口
  185. public native int SetServerPort(int iObjectHandle, int iPort);
  186. // 获取属性集合中属性的总数
  187. public native int GetPropertysCount(int iHandle);
  188. // 通过索引获取属性集合中的条目
  189. public native int GetPropertysItem(int iHandle, int iIndex);
  190. // 调用SDK,传入对象句柄,属性句柄,命令ID
  191. public native int Call(int iObjectHandle, int iPropertyHandle, int iCmdID);
  192. // 获取返回结果的集性集合,传入一个返回结果的句柄
  193. public native int GetResultPropertys(int iResultHandle);
  194. // 通过传入一个返回结果的句柄,获取该句柄的结果,以int类型表示
  195. public native int GetResultInt(int iResultHandle);
  196. // 通过传入一个返回结果的句柄,获取该句柄的结果,以String类型表示
  197. public native String GetResultString(int iResultHandle);
  198. // 获取一个属性的名称
  199. public String GetPropertyItemName(int iHandle) {
  200. return GetProperty(iHandle, KEY_RESULT_NAME);
  201. }
  202. // 获取一个属性的值
  203. public String GetPropertyItemValue(int iHandle) {
  204. return GetProperty(iHandle, KEY_RESULT_VALUE);
  205. }
  206. // 获取内部错误代码
  207. public int GetResultInnerCode(int iHandle) {
  208. String sz = GetProperty(iHandle, KEY_RESULT_INCODE);
  209. return Integer.parseInt(sz);
  210. }
  211. // 获取内部错误信息
  212. public String GetResultErrString(int iHandle) {
  213. String sz = GetProperty(iHandle, KEY_RESULT_ERR_INFO);
  214. return sz;
  215. }
  216. // 获取SDK调用返回结果的Code,0表示成功,其他表示失败
  217. public int GetResultCode(int iHandle) {
  218. String sz = GetProperty(iHandle, KEY_RESULT_CODE);
  219. return Integer.parseInt(sz);
  220. }
  221. // 获取某个属性的类型(一般用不上)
  222. public int GetResultType(int iHandle) {
  223. String sz = GetProperty(iHandle, KEY_RESULT_TYPE);
  224. return Integer.parseInt(sz);
  225. }
  226. // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  227. // 扩展的函数 //
  228. // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  229. /**
  230. * 初始化对象
  231. *
  232. * @param objName
  233. * String
  234. */
  235. private void svrInit(String objName) {
  236. iObj = GetNewObject(objName);
  237. iProp = GetNewPropertys();
  238. }
  239. /**
  240. * 释放资源
  241. */
  242. private void release() {
  243. ReleaseHandle(iObj);
  244. ReleaseHandle(iProp);
  245. ReleaseHandle(iResult);
  246. }
  247. /**
  248. * 设置服务器IP
  249. *
  250. * @param strIP
  251. * String
  252. */
  253. public void setServerIP(String strIP) {
  254. svrInit(OBJNAME_RTXSYS);
  255. int iResult = SetServerIP(iObj, strIP);
  256. release();
  257. }
  258. /**
  259. * 设置服务器端口
  260. *
  261. * @param iPort
  262. * int 端口,默认是6000
  263. */
  264. public void setServerPort(int iPort) {
  265. svrInit(OBJNAME_RTXSYS);
  266. int iResult = SetServerPort(iObj, iPort);
  267. release();
  268. }
  269. /**
  270. * 取服务器IP
  271. *
  272. * @param iPort
  273. * int
  274. */
  275. public String getServerIP() {
  276. svrInit(OBJNAME_RTXSYS);
  277. String ip = GetServerIP(iObj);
  278. release();
  279. return ip;
  280. }
  281. /**
  282. * 取服务器端口
  283. *
  284. * @return String 服务器地址
  285. */
  286. public int getServerPort() {
  287. svrInit(OBJNAME_RTXSYS);
  288. int port = GetServerPort(iObj);
  289. release();
  290. return port;
  291. }
  292. /**
  293. * 查询用户在线状态
  294. *
  295. * @param UserName
  296. * String 用户帐号
  297. * @return int 0:离线 1:在线 2:离开 11:不存在该用户 其它:未知状态
  298. */
  299. public int QueryUserState(String UserName) {
  300. svrInit(OBJNAME_RTXSYS);
  301. AddProperty(iProp, KEY_USERNAME, UserName);
  302. // AddProperty(iProp,KEY_UINTYPE,"Account"); 如果设置KEY_UINTYPE
  303. // 为Account,无论传进去是纯数字还是字符串,都认为是帐号。
  304. int iResult = Call(iObj, iProp, PRO_SYS_GETUSERSTATUS);
  305. int innerCode = GetResultInnerCode(iResult);
  306. int iRTXState = GetResultInt(iResult);
  307. if (innerCode != 0) {
  308. System.out.println("错误代码:" + innerCode + "\t" + "错误信息:" + GetResultErrString(iResult));
  309. release();
  310. return innerCode;
  311. }
  312. release();
  313. return iRTXState;
  314. }
  315. /**
  316. * 删除用户信息
  317. *
  318. * @param String
  319. * UserName用户帐号
  320. * @return int 0 操作成功 非0为失败
  321. */
  322. public int deleteUser(String UserName) {
  323. if (UserName == null || "".equals(UserName)) {
  324. return -1;
  325. }
  326. svrInit(OBJNAME_USERMANAGER);
  327. AddProperty(iProp, KEY_USERNAME, UserName);
  328. // AddProperty(iProp,KEY_UINTYPE,"Account"); 如果设置KEY_UINTYPE
  329. // 为Account,无论传进去是纯数字还是字符串,都认为是帐号。
  330. iResult = Call(iObj, iProp, PRO_DELUSER);
  331. innerCode = GetResultInnerCode(iResult);
  332. if (innerCode != 0) {
  333. System.out.println("错误代码:" + innerCode + "\t" + "错误信息:" + GetResultErrString(iResult));
  334. }
  335. release();
  336. return innerCode;
  337. }
  338. /**
  339. * 新增用户
  340. *
  341. * @param UserName
  342. * string 用户帐号
  343. * @param DeptID
  344. * String 部门ID
  345. * @paramint ChsName String 用户姓名
  346. * @paramint Pwd String 密码
  347. * @return int 0 操作成功 非0为失败
  348. */
  349. public int addUser(String UserName, String DeptID, String ChsName, String Pwd) {
  350. svrInit(OBJNAME_USERMANAGER);
  351. AddProperty(iProp, KEY_NICK, UserName); // 用户名
  352. AddProperty(iProp, KEY_DEPTID, DeptID); // 组织ID
  353. AddProperty(iProp, KEY_NAME, ChsName); // 真实名
  354. AddProperty(iProp, KEY_PASSWORD, Pwd);// 密码
  355. iResult = Call(iObj, iProp, PRO_ADDUSER);
  356. innerCode = GetResultInnerCode(iResult);
  357. if (innerCode != 0) {
  358. System.out.println("错误代码:" + innerCode + "\t" + "错误信息:" + GetResultErrString(iResult));
  359. }
  360. release();
  361. return innerCode;
  362. }
  363. /**
  364. * 查看用户简单资料
  365. *
  366. * @param UserName
  367. * String 用户帐号
  368. * @return String[][] 操作成功返回一个二维数组 失败为null
  369. */
  370. public String[][] GetUserSimpleInfo(String UserName) {
  371. String[][] info = null;
  372. svrInit(OBJNAME_USERMANAGER);
  373. AddProperty(iProp, KEY_USERNAME, UserName);
  374. // AddProperty(iProp,KEY_UINTYPE,"Account"); 如果设置KEY_UINTYPE
  375. // 为Account,无论传进去是纯数字还是字符串,都认为是帐号。
  376. int iResult = Call(iObj, iProp, PRO_GETUSERSMPLINFO);
  377. int innerCode = GetResultInnerCode(iResult);
  378. if (innerCode != 0) {
  379. System.out.println("错误代码:" + innerCode + "\t" + "错误信息:" + GetResultErrString(iResult));
  380. } else {
  381. int iProps = GetResultPropertys(iResult);
  382. int iCount = GetPropertysCount(iProps);
  383. info = new String[iCount][2];
  384. for (int i = 0; i < iCount; i++) {
  385. int iHandle = GetPropertysItem(iProps, i);
  386. info[i][0] = GetPropertyItemName(iHandle);
  387. info[i][1] = GetPropertyItemValue(iHandle);
  388. ReleaseHandle(iHandle);
  389. }
  390. }
  391. release();
  392. return info;
  393. }
  394. /**
  395. * 设置用户简单资料
  396. *
  397. * @param UserName
  398. * String 用户帐号
  399. * @param ChsName
  400. * String 用户姓名
  401. * @param email
  402. * String 邮箱地址
  403. * @param gender
  404. * String 性别,男为0,女为1
  405. * @param mobile
  406. * String 手机号码
  407. * @param phone
  408. * String 电话
  409. * @param pwd
  410. * String 密码
  411. * @return int 0 操作成功 非0为失败
  412. */
  413. public int SetUserSimpleInfo(String UserName, String ChsName, String email, String gender, String mobile, String phone, String pwd) {
  414. svrInit(OBJNAME_USERMANAGER);
  415. // 把资料读出来再写回去
  416. AddProperty(iProp, KEY_USERNAME, UserName);
  417. // AddProperty(iProp,KEY_UINTYPE,"Account"); 如果设置KEY_UINTYPE
  418. // 为Account,无论传进去是纯数字还是字符串,都认为是帐号。
  419. iResult = Call(iObj, iProp, PRO_GETUSERSMPLINFO);
  420. innerCode = GetResultInnerCode(iResult);
  421. if (innerCode != 0) {
  422. System.out.println("错误代码:" + innerCode + "\t" + "错误信息:" + GetResultErrString(iResult));
  423. release();
  424. return innerCode;
  425. } else {
  426. int iProps = GetResultPropertys(iResult);
  427. int iCount = GetPropertysCount(iProps);
  428. for (int i = 0; i < iCount; i++) {
  429. if (i == 9) {
  430. if (pwd != null && !"".equals(pwd) && !"null".equals(pwd)) {
  431. AddProperty(iProp, KEY_PASSWORD, pwd); // 密码
  432. }
  433. } else {
  434. int iHandle = GetPropertysItem(iProps, i);
  435. AddProperty(iProp, GetPropertyItemName(iHandle), GetPropertyItemValue(iHandle));
  436. ReleaseHandle(iHandle);
  437. }
  438. }
  439. }
  440. // 更新用户信息
  441. if (ChsName != null && !"".equals(ChsName) && !"null".equals(ChsName)) {
  442. AddProperty(iProp, KEY_NAME, ChsName); // 中文名
  443. }
  444. if (gender != null && !"".equals(gender) && !"null".equals(gender)) {
  445. AddProperty(iProp, KEY_GENDER, gender); // 性别
  446. }
  447. if (mobile != null && !"".equals(mobile) && !"null".equals(mobile)) {
  448. AddProperty(iProp, KEY_MOBILE, mobile); // 手机
  449. }
  450. if (phone != null && !"".equals(phone) && !"null".equals(phone)) {
  451. AddProperty(iProp, KEY_PHONE, phone); // 电话
  452. }
  453. if (email != null && !"".equals(email) && !"null".equals(email)) {
  454. AddProperty(iProp, KEY_EMAIL, email); // 邮箱
  455. }
  456. // AddProperty(iProp,KEY_UINTYPE,"Account"); 如果设置KEY_UINTYPE
  457. // 为Account,无论传进去是纯数字还是字符串,都认为是帐号。
  458. // 设置把用户简单资料写回去
  459. int iResult = Call(iObj, iProp, PRO_SETUSERSMPLINFO);
  460. int innerCode = GetResultInnerCode(iResult);
  461. if (innerCode != 0) {
  462. System.out.println("错误代码:" + innerCode + "\t" + "错误信息:" + GetResultErrString(iResult));
  463. }
  464. release();
  465. return innerCode;
  466. }
  467. /**
  468. * 设置用户简单资料,支持设置部门ID
  469. *
  470. * @param UserName
  471. * String 用户帐号
  472. * @param DeptID
  473. * String 部门ID
  474. * @param ChsName
  475. * String 用户姓名
  476. * @param email
  477. * String 邮箱地址
  478. * @param gender
  479. * String 性别,男为0,女为1
  480. * @param mobile
  481. * String 手机号码
  482. * @param phone
  483. * String 电话
  484. * @param pwd
  485. * String 密码
  486. * @return int 0 操作成功 非0为失败
  487. */
  488. public int SetUserSimpleInfoEx(String UserName, String DeptID, String ChsName, String email, String gender, String mobile, String phone, String pwd) {
  489. svrInit(OBJNAME_USERMANAGER);
  490. // 把资料读出来再写回去
  491. AddProperty(iProp, KEY_USERNAME, UserName);
  492. iResult = Call(iObj, iProp, PRO_GETUSERSMPLINFO);
  493. innerCode = GetResultInnerCode(iResult);
  494. if (innerCode != 0) {
  495. System.out.println("错误代码:" + innerCode + "\t" + "错误信息:" + GetResultErrString(iResult));
  496. release();
  497. return innerCode;
  498. } else {
  499. int iProps = GetResultPropertys(iResult);
  500. int iCount = GetPropertysCount(iProps);
  501. for (int i = 0; i < iCount; i++) {
  502. if (i == 9) {
  503. if (pwd != null && !"".equals(pwd) && !"null".equals(pwd)) {
  504. AddProperty(iProp, KEY_PASSWORD, pwd); // 密码
  505. }
  506. } else {
  507. int iHandle = GetPropertysItem(iProps, i);
  508. AddProperty(iProp, GetPropertyItemName(iHandle), GetPropertyItemValue(iHandle));
  509. ReleaseHandle(iHandle);
  510. }
  511. }
  512. }
  513. // 更新用户信息
  514. if (DeptID != null && !"".equals(DeptID) && !"null".equals(DeptID)) {
  515. AddProperty(iProp, KEY_DEPTID, DeptID); // 部门ID
  516. }
  517. if (ChsName != null && !"".equals(ChsName) && !"null".equals(ChsName)) {
  518. AddProperty(iProp, KEY_NAME, ChsName); // 中文名
  519. }
  520. if (gender != null && !"".equals(gender) && !"null".equals(gender)) {
  521. AddProperty(iProp, KEY_GENDER, gender); // 性别
  522. }
  523. if (mobile != null && !"".equals(mobile) && !"null".equals(mobile)) {
  524. AddProperty(iProp, KEY_MOBILE, mobile); // 手机
  525. }
  526. if (phone != null && !"".equals(phone) && !"null".equals(phone)) {
  527. AddProperty(iProp, KEY_PHONE, phone); // 电话
  528. }
  529. if (email != null && !"".equals(email) && !"null".equals(email)) {
  530. AddProperty(iProp, KEY_EMAIL, email); // 邮箱
  531. }
  532. // 设置把用户简单资料写回去
  533. int iResult = Call(iObj, iProp, PRO_SETUSERSMPLINFO);
  534. int innerCode = GetResultInnerCode(iResult);
  535. if (innerCode != 0) {
  536. System.out.println("错误代码:" + innerCode + "\t" + "错误信息:" + GetResultErrString(iResult));
  537. }
  538. release();
  539. return innerCode;
  540. }
  541. /**
  542. * 查看用户详细资料
  543. *
  544. * @param UserName
  545. * String 用户帐号
  546. * @return String[][] 操作成功返回一个二维数组 失败返回null
  547. */
  548. public String[][] GetUserDetailInfo(String UserName) {
  549. String[][] info = null;
  550. svrInit(OBJNAME_USERMANAGER);
  551. AddProperty(iProp, KEY_USERNAME, UserName);
  552. // AddProperty(iProp,KEY_UINTYPE,"Account"); 如果设置KEY_UINTYPE
  553. // 为Account,无论传进去是纯数字还是字符串,都认为是帐号。
  554. int iResult = Call(iObj, iProp, PRO_GETUSERDETAILINFO);
  555. int innerCode = GetResultInnerCode(iResult);
  556. if (innerCode != 0) {
  557. System.out.println("错误代码:" + innerCode + "\t" + "错误信息:" + GetResultErrString(iResult));
  558. } else {
  559. int iProps = GetResultPropertys(iResult);
  560. int iCount = GetPropertysCount(iProps);
  561. info = new String[iCount][2];
  562. for (int i = 0; i < iCount; i++) {
  563. int iHandle = GetPropertysItem(iProps, i);
  564. info[i][0] = GetPropertyItemName(iHandle);
  565. info[i][1] = GetPropertyItemValue(iHandle);
  566. ReleaseHandle(iHandle);
  567. }
  568. }
  569. release();
  570. return info;
  571. }
  572. /**
  573. * 更新用户信息
  574. *
  575. * @param UserName
  576. * String
  577. * @param ....... String
  578. * @param MOBILE
  579. * String
  580. * @return int 0 操作成功 非0为失败
  581. */
  582. public int setUserDetailInfo(String UserName, String ADDRESS, String AGE, String BIRTHDAY, String BLOODTYPE, String CITY, String COLLAGE, String CONSTELLATION, String COUNTRY, String FAX, String HOMEPAGE, String MEMO, String POSITION, String POSTCODE, String PROVINCE, String STREET, String PHONE, String MOBILE) {
  583. // 主要是得到DetpID
  584. svrInit(OBJNAME_USERMANAGER);
  585. AddProperty(iProp, KEY_USERNAME, UserName);
  586. // AddProperty(iProp,KEY_UINTYPE,"Account"); 如果设置KEY_UINTYPE
  587. // 为Account,无论传进去是纯数字还是字符串,都认为是帐号。
  588. iResult = Call(iObj, iProp, PRO_GETUSERSMPLINFO);
  589. innerCode = GetResultInnerCode(iResult);
  590. if (innerCode != 0) {
  591. System.out.println("错误代码:" + innerCode + "\t" + "错误信息:" + GetResultErrString(iResult));
  592. release();
  593. return innerCode;
  594. } else {
  595. int iProps = GetResultPropertys(iResult);
  596. int iHandle = GetPropertysItem(iProps, 0);
  597. AddProperty(iProp, KEY_DEPTID, GetPropertyItemValue(iHandle));
  598. ReleaseHandle(iHandle);
  599. }
  600. if (ADDRESS != null && !"".equals(ADDRESS) && !"null".equals(ADDRESS)) {
  601. AddProperty(iProp, KEY_ADDRESS, ADDRESS); // 住址
  602. }
  603. if (BLOODTYPE != null && !"".equals(BLOODTYPE) && !"null".equals(BLOODTYPE)) {
  604. AddProperty(iProp, KEY_BLOODTYPE, BLOODTYPE); // 血型
  605. }
  606. if (COUNTRY != null && !"".equals(COUNTRY) && !"null".equals(COUNTRY)) {
  607. AddProperty(iProp, KEY_COUNTRY, COUNTRY); // 国家
  608. }
  609. if (PROVINCE != null && !"".equals(PROVINCE) && !"null".equals(PROVINCE)) {
  610. AddProperty(iProp, KEY_PROVINCE, PROVINCE); // 省
  611. }
  612. if (CITY != null && !"".equals(CITY) && !"null".equals(CITY)) {
  613. AddProperty(iProp, KEY_CITY, CITY); // 城市
  614. }
  615. if (POSTCODE != null && !"".equals(POSTCODE) && !"null".equals(POSTCODE)) {
  616. AddProperty(iProp, KEY_POSTCODE, POSTCODE); // 邮政编码
  617. }
  618. if (HOMEPAGE != null && !"".equals(HOMEPAGE) && !"null".equals(HOMEPAGE)) {
  619. AddProperty(iProp, KEY_HOMEPAGE, HOMEPAGE); // 个人主页
  620. }
  621. if (PHONE != null && !"".equals(PHONE) && !"null".equals(PHONE)) {
  622. AddProperty(iProp, KEY_PHONE, PHONE); // 电话
  623. }
  624. if (MOBILE != null && !"".equals(MOBILE) && !"null".equals(MOBILE)) {
  625. AddProperty(iProp, KEY_MOBILE, MOBILE); // 移动电话
  626. }
  627. if (MEMO != null && !"".equals(MEMO) && !"null".equals(MEMO)) {
  628. AddProperty(iProp, KEY_MEMO, MEMO); // 个人简介
  629. }
  630. if (POSITION != null && !"".equals(POSITION) && !"null".equals(POSITION)) {
  631. AddProperty(iProp, KEY_POSITION, POSITION); // 职务
  632. }
  633. if (FAX != null && !"".equals(FAX) && !"null".equals(FAX)) {
  634. AddProperty(iProp, KEY_FAX, FAX); // 传真
  635. }
  636. if (AGE != null && !"".equals(AGE) && !"null".equals(AGE)) {
  637. AddProperty(iProp, KEY_AGE, AGE); // 年龄
  638. }
  639. if (BIRTHDAY != null && !"".equals(BIRTHDAY) && !"null".equals(BIRTHDAY)) {
  640. AddProperty(iProp, KEY_BIRTHDAY, BIRTHDAY); // 生日
  641. }
  642. if (COLLAGE != null && !"".equals(COLLAGE) && !"null".equals(COLLAGE)) {
  643. AddProperty(iProp, KEY_COLLAGE, COLLAGE); // 大学
  644. }
  645. if (STREET != null && !"".equals(STREET) && !"null".equals(STREET)) {
  646. AddProperty(iProp, KEY_STREET, STREET); // 街道
  647. }
  648. // AddProperty(iProp,KEY_UINTYPE,"Account"); 如果设置KEY_UINTYPE
  649. // 为Account,无论传进去是纯数字还是字符串,都认为是帐号。
  650. iResult = Call(iObj, iProp, PRO_SETUSERDETAILINFO);
  651. innerCode = GetResultInnerCode(iResult);
  652. if (innerCode != 0) {
  653. System.out.println("错误代码:" + innerCode + "\t" + "错误信息:" + GetResultErrString(iResult));
  654. }
  655. release();
  656. return innerCode;
  657. }
  658. /**
  659. * 把RTX号码转换为呢称
  660. *
  661. * @param UIN
  662. * String RTX号码
  663. * @return int 0 操作成功 非0为失败
  664. */
  665. public String UinToUserName(String UIN) {
  666. String UserName = null;
  667. svrInit(OBJNAME_USERMANAGER);
  668. AddProperty(iProp, KEY_USERNAME, UIN); // RTX号码
  669. iResult = Call(iObj, iProp, PRO_GETUSERSMPLINFO);
  670. innerCode = GetResultInnerCode(iResult);
  671. if (innerCode != 0) {
  672. System.out.println("错误代码:" + innerCode + "\t" + "错误信息:" + GetResultErrString(iResult));
  673. release();
  674. return null;
  675. }
  676. int iProps = GetResultPropertys(iResult);
  677. int iHandle = GetPropertysItem(iProps, 7);
  678. UserName = GetPropertyItemValue(iHandle);
  679. ReleaseHandle(iHandle);
  680. release();
  681. return UserName;
  682. }
  683. /**
  684. * 添加组织信息
  685. *
  686. * @param deptId
  687. * String 部门ID
  688. * @param DetpInfo
  689. * String 部门信息
  690. * @param DeptName
  691. * String 部门名称
  692. * @param ParentDeptId
  693. * String 父部门ID
  694. * @param type
  695. * String 0:只删除当前组织 1:删除下级组织及用户
  696. * @return int 0 操作成功 非0为失败
  697. */
  698. public int addDept(String deptId, String DetpInfo, String DeptName, String ParentDeptId) {
  699. svrInit(OBJNAME_DEPTMANAGER);
  700. AddProperty(iProp, KEY_DEPTID, deptId);
  701. AddProperty(iProp, KEY_NAME, DeptName);
  702. AddProperty(iProp, KEY_INFO, DetpInfo);
  703. AddProperty(iProp, KEY_PDEPTID, ParentDeptId);
  704. iResult = Call(iObj, iProp, PRO_ADDDEPT);
  705. innerCode = GetResultInnerCode(iResult);
  706. if (innerCode != 0) {
  707. System.out.println("错误代码:" + innerCode + "\t" + "错误信息:" + GetResultErrString(iResult));
  708. }
  709. release();
  710. return innerCode;
  711. }
  712. /**
  713. * 修改组织信息
  714. *
  715. * @param deptId
  716. * String 部门ID
  717. * @param DetpInfo
  718. * string 部门信息
  719. * @param DeptName
  720. * string 部门名称
  721. * @param ParentDeptId
  722. * string 父部门ID
  723. * @return int 0 操作成功 非0为失败
  724. */
  725. public int setDept(String deptId, String DetpInfo, String DeptName, String ParentDeptId) {
  726. svrInit(OBJNAME_DEPTMANAGER);
  727. AddProperty(iProp, KEY_DEPTID, deptId);
  728. AddProperty(iProp, KEY_NAME, DeptName);
  729. AddProperty(iProp, KEY_INFO, DetpInfo);
  730. AddProperty(iProp, KEY_PDEPTID, ParentDeptId);
  731. iResult = Call(iObj, iProp, PRO_SETDEPT);
  732. innerCode = GetResultInnerCode(iResult);
  733. if (innerCode != 0) {
  734. System.out.println("错误代码:" + innerCode + "\t" + "错误信息:" + GetResultErrString(iResult));
  735. }
  736. release();
  737. return innerCode;
  738. }
  739. /**
  740. * 删除组织信息
  741. *
  742. * @param deptId
  743. * String 部门
  744. * @param type
  745. * String 0:只删除当前组织 1:删除下级组织及用户
  746. * @return int 0 操作成功 非0为失败
  747. */
  748. public int deleteDept(String deptId, String type) {
  749. svrInit(OBJNAME_DEPTMANAGER);
  750. AddProperty(iProp, KEY_DEPTID, deptId);
  751. AddProperty(iProp, KEY_COMPLETEDELBS, type);
  752. iResult = Call(iObj, iProp, PRO_DELDEPT);
  753. innerCode = GetResultInnerCode(iResult);
  754. if (innerCode != 0) {
  755. System.out.println("错误代码:" + innerCode + "\t" + "错误信息:" + GetResultErrString(iResult));
  756. }
  757. release();
  758. return innerCode;
  759. }
  760. /**
  761. * 判断某个组织是否存在
  762. *
  763. * @param deptId
  764. * String 部门ID
  765. * @return int 0:存在 非0:不存在
  766. */
  767. public int deptIsExist(String deptId) {
  768. if (deptId == null || "".equals(deptId)) {
  769. return -100;
  770. }
  771. // 注意,2006已经没有PRO_GETDEPTSMPLINFO接口,因此判断一个部门是否存在通过
  772. // 添加一个部门,如果添加成功,把这个部门删掉,如果添加失败,则说明部门已存在
  773. String pdeptid = "0";
  774. String pdeptname = "tempdept";
  775. svrInit(OBJNAME_DEPTMANAGER);
  776. AddProperty(iProp, KEY_PDEPTID, pdeptid);
  777. AddProperty(iProp, KEY_DEPTID, deptId);
  778. AddProperty(iProp, KEY_NAME, pdeptname);
  779. iResult = Call(iObj, iProp, PRO_ADDDEPT);
  780. innerCode = GetResultInnerCode(iResult);
  781. if (innerCode == -5) {
  782. release();
  783. return innerCode;
  784. } else if (innerCode == 0) {
  785. Call(iObj, iProp, PRO_DELDEPT);
  786. release();
  787. return innerCode;
  788. } else {
  789. System.out.println("错误代码:" + innerCode + "\t" + "错误信息:" + GetResultErrString(iResult));
  790. }
  791. release();
  792. return innerCode;
  793. }
  794. /**
  795. * 取当前组织下的用户
  796. *
  797. * @param DeptID
  798. * String 部门ID
  799. * @return String[] 成功返回部门下用户帐号数组,失败返回null
  800. */
  801. public String[] getDeptUsers(String DeptID) {
  802. String[] user = null;
  803. svrInit(OBJNAME_DEPTMANAGER);
  804. AddProperty(iProp, KEY_DEPTID, DeptID);
  805. iResult = Call(iObj, iProp, PRO_GETDEPTALLUSER);
  806. innerCode = GetResultInnerCode(iResult);
  807. if (innerCode != 0) {
  808. System.out.println("错误代码:" + innerCode + "\t" + "错误信息:" + GetResultErrString(iResult));
  809. }
  810. int iProps = GetResultPropertys(iResult);
  811. int iCount = GetPropertysCount(iProps);
  812. if (iCount > 0) {
  813. user = new String[iCount];
  814. for (int i = 0; i < iCount; i++) {
  815. int iHandler = GetPropertysItem(iProps, i);
  816. user[i] = UinToUserName(GetPropertyItemValue(iHandler)); // iHandler获取出来的是RTX号码
  817. ReleaseHandle(iHandler);
  818. }
  819. }
  820. release();
  821. return user;
  822. }
  823. /**
  824. * 取当前组织下的子部门ID
  825. *
  826. * @param DeptID
  827. * String 部门ID
  828. * @return String[] 成功返回子部门数组,失败返回null
  829. */
  830. public String[] getChildDepts(String DeptID) {
  831. String[] detps = null;
  832. svrInit(OBJNAME_DEPTMANAGER);
  833. AddProperty(iProp, KEY_PDEPTID, DeptID);
  834. iResult = Call(iObj, iProp, PRO_GETCHILDDEPT);
  835. innerCode = GetResultInnerCode(iResult);
  836. if (innerCode != 0) {
  837. System.out.println("错误代码:" + innerCode + "\t" + "错误信息:" + GetResultErrString(iResult));
  838. release();
  839. return null;
  840. }
  841. int iProps = GetResultPropertys(iResult);
  842. int iCount = GetPropertysCount(iProps);
  843. if (iCount > 0) {
  844. detps = new String[iCount];
  845. for (int i = 0; i < iCount; i++) {
  846. int iHandler = GetPropertysItem(iProps, i);
  847. detps[i] = GetPropertyItemValue(iHandler);
  848. ReleaseHandle(iHandler);
  849. }
  850. }
  851. release();
  852. return detps;
  853. }
  854. /**
  855. * 判断某个用户是否存在
  856. *
  857. * @param UserName
  858. * String 用户帐号
  859. * @return int 0:存在 非0:不存在
  860. */
  861. public int userIsExist(String UserName) {
  862. svrInit(OBJNAME_USERMANAGER);
  863. AddProperty(iProp, KEY_USERNAME, UserName);
  864. // AddProperty(iProp,KEY_UINTYPE,"Account"); 如果设置KEY_UINTYPE
  865. // 为Account,无论传进去是纯数字还是字符串,都认为是帐号。
  866. iResult = Call(iObj, iProp, PRO_IFEXIST);
  867. innerCode = GetResultInnerCode(iResult);
  868. int iExist = GetResultInt(iResult);
  869. release();
  870. if (innerCode != 0) {
  871. System.out.println("错误代码:" + innerCode + "\t" + "错误信息:" + GetResultErrString(iResult));
  872. }
  873. return iExist;
  874. }
  875. /**
  876. * 获取sessionKey
  877. *
  878. * @param UserName
  879. * String 用户帐号
  880. * @return String 成功返回SessionKey,失败返回null
  881. */
  882. public String getSessionKey(String UserName) {
  883. svrInit(OBJNAME_RTXSYS);
  884. AddProperty(iProp, KEY_USERNAME, UserName);
  885. iResult = Call(iObj, iProp, PRO_SYS_GETSESSIONKEY);
  886. innerCode = GetResultInnerCode(iResult);
  887. String szKey = new String("");
  888. if (innerCode != 0) {
  889. System.out.println("错误代码:" + innerCode + "\t" + "错误信息:" + GetResultErrString(iResult));
  890. } else {
  891. szKey = GetResultString(iResult);
  892. }
  893. release();
  894. return szKey;
  895. }
  896. /**
  897. * 发送消息提醒
  898. *
  899. * @param receivers
  900. * String 接收人(多个接收人以逗号分隔)
  901. * @param title
  902. * String 消息标题
  903. * @param msg
  904. * String 消息内容
  905. * @param type
  906. * String 0:普通消息 1:紧急消息
  907. * @param delayTime
  908. * String 显示停留时间(毫秒) 0:为永久停留(用户关闭时才关闭)
  909. * @return int 0:操作成功 非0:操作不成功
  910. */
  911. public synchronized int sendNotify(String receivers, String title, String msg, String type, String delayTime) {
  912. svrInit(OBJNAME_RTXEXT);
  913. AddProperty(iProp, KEY_USERNAME, receivers);
  914. AddProperty(iProp, KEY_TITLE, title);
  915. AddProperty(iProp, KEY_MSGINFO, msg);
  916. AddProperty(iProp, KEY_TYPE, type);
  917. AddProperty(iProp, KEY_MSGID, "0");
  918. AddProperty(iProp, KEY_ASSISTANTTYPE, "0");
  919. // AddProperty(iProp,KEY_UINTYPE,"Account"); 如果设置KEY_UINTYPE
  920. // 为Account,无论传进去是纯数字还是字符串,都认为是帐号。
  921. if (!"0".equals(delayTime))
  922. AddProperty(iProp, KEY_DELAYTIME, delayTime);
  923. iResult = Call(iObj, iProp, PRO_EXT_NOTIFY);
  924. innerCode = GetResultInnerCode(iResult);
  925. release();
  926. return innerCode;
  927. }
  928. /**
  929. * 发送短信
  930. *
  931. * @param sender
  932. * String 发送人
  933. * @param receiver
  934. * String 接收人(RTX用户或手机号码均可,最多128个)
  935. * @param smsInfo
  936. * String 短信内容
  937. * @param autoCut
  938. * int 是否自动分条发送 0:否 1:是
  939. * @param noTitle
  940. * int 是否自动填写标题 0:自动 1:制定
  941. * @return int 成功返回0,失败返回其他
  942. */
  943. public int sendSms(String sender, String receiver, String smsInfo, int autoCut, int noTitle) {
  944. svrInit(OBJNAME_SMSMANAGER);
  945. AddProperty(iProp, KEY_SENDER, sender);
  946. AddProperty(iProp, KEY_RECEIVER, receiver);
  947. AddProperty(iProp, KEY_SMS, smsInfo);
  948. AddProperty(iProp, KEY_CUT, String.valueOf(autoCut));
  949. AddProperty(iProp, KEY_NOTITLE, String.valueOf(noTitle));
  950. // AddProperty(iProp,KEY_UINTYPE,"Account"); 如果设置KEY_UINTYPE
  951. // 为Account,无论传进去是纯数字还是字符串,都认为是帐号。
  952. iResult = Call(iObj, iProp, PRO_SMS_SEND);
  953. innerCode = GetResultInnerCode(iResult);
  954. if (innerCode != 0) {
  955. System.out.println("错误代码:" + innerCode + "\t" + "错误信息:" + GetResultErrString(iResult));
  956. }
  957. release();
  958. return innerCode;
  959. }
  960. /**
  961. * 导出rtx的用户数据为xml
  962. *
  963. * @return string 成功返回RTX用户数据的xml,失败返回null
  964. */
  965. public String exportXmldata() {
  966. String strResult = null;
  967. svrInit(OBJNAME_USERSYNC);
  968. AddProperty(iProp, "MODIFYMODE", "1");
  969. AddProperty(iProp, "XMLENCODE", "<?xml version=\"1.0\" encoding=\"gb2312\" ?>");
  970. int iResult = Call(iObj, iProp, PRO_EXMPORTUSER);
  971. int iProps = GetResultPropertys(iResult);
  972. innerCode = GetResultInnerCode(iResult);
  973. if (innerCode != 0) {
  974. System.out.println("错误代码:" + innerCode + "\t" + "错误信息:" + GetResultErrString(iResult));
  975. }
  976. strResult = GetResultString(iResult);
  977. release();
  978. return strResult;
  979. }
  980. /**
  981. * 导入xml的用户数据
  982. *
  983. * @param xmldata
  984. * String xml用户数据
  985. * @return int :成功返回部门名称,失败返回null
  986. */
  987. public int importXmldata(String xmldata) {
  988. svrInit(OBJNAME_USERSYNC);
  989. AddProperty(iProp, KEY_MODIFYMODE, "1");
  990. AddProperty(iProp, KEY_DATA, xmldata);
  991. int iResult = Call(iObj, iProp, PRO_IMPORTUSER);
  992. innerCode = GetResultInnerCode(iResult);
  993. if (innerCode != 0) {
  994. System.out.println("错误代码:" + innerCode + "\t" + "错误信息:" + GetResultErrString(iResult));
  995. }
  996. release();
  997. return innerCode;
  998. }
  999. /**
  1000. * 获取部门名称
  1001. *
  1002. * @param deptID
  1003. * String 部门ID
  1004. * @return String 0:操作成功 非0:操作不成功
  1005. */
  1006. public String GetDeptName(String deptID) {
  1007. svrInit(OBJNAME_DEPTMANAGER);
  1008. String info = null;
  1009. AddProperty(iProp, KEY_DEPTID, deptID);
  1010. int iResult = Call(iObj, iProp, PRO_GETDEPTSMPLINFO);
  1011. innerCode = GetResultInnerCode(iResult);
  1012. if (innerCode != 0) {
  1013. System.out.println("错误代码:" + innerCode + "\t" + "错误信息:" + GetResultErrString(iResult));
  1014. } else {
  1015. int iProps = GetResultPropertys(iResult);
  1016. int iCount = GetPropertysCount(iProps);
  1017. System.out.println("GetResultPropertys:" + iProps + "\t" + "GetPropertysCount:" + iCount);
  1018. int iHandle = GetPropertysItem(iProps, 2);
  1019. info = GetPropertyItemValue(iHandle);
  1020. ReleaseHandle(iHandle);
  1021. System.out.println(info);
  1022. }
  1023. release();
  1024. return info;
  1025. }
  1026. }