U.F.J.js 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754
  1. Namespace.register("U.F.J"); //好友加群加好友的命名空间
  2. //#region 创建群组
  3. //听见群用户的信息
  4. U.F.J.SelectUserInfo = {
  5. NeedUser: [], //需要添加的群用户
  6. SelectUser: [], //已经选择过的用户
  7. CallBack: null //添加后的回调
  8. };
  9. /**
  10. * 显示添加群窗口
  11. *
  12. * @param {object} 群信息
  13. * @param {element} 元素处理
  14. * @param {boolean}
  15. */
  16. U.F.J.GroupInfoForm = function (groupinfo) {
  17. var _formel, //窗体
  18. _groupuserinfo, //获取所有的群好友
  19. _determinebottom,
  20. _closebottom,
  21. _groupinfoel = $("#UD_SYA"), //添加群的窗体
  22. _addgroupuserel = $("#UD_SYTC")[0], //内容区域
  23. _groupinfochildsel = _groupinfoel.Child(), //群信息窗体子元素
  24. _inputel = $("input,textarea", _groupinfochildsel[0]), //内容输出
  25. _isgroupmain = !groupinfo && groupinfo.GroupManageCreateUserID == US.userInfo.userid //是否是新建群或者是群主,
  26. ;
  27. //清空群用户
  28. U.F.J.SelectUserInfo.NeedUser.splice(0, U.F.J.SelectUserInfo.NeedUser.length);
  29. //设置该联系人进入群
  30. _groupinfochildsel[1].innerHTML = "";
  31. //如果群存在的处理
  32. if (groupinfo) {
  33. //设置群名,群描述等
  34. _inputel[0].value = groupinfo.GroupManageName;
  35. _inputel[1].value = groupinfo.GroupManageDescript;
  36. //获取群用户的信息
  37. _groupuserinfo = _$(US.Friend[3]).Select({ "GroupManageID": groupinfo.GroupManageID });
  38. //设置已经选择过的用户
  39. U.F.J.SelectUserInfo.SelectUser = _groupuserinfo;
  40. //打印当前群的用户
  41. U.F.J.PrintGroupUserInfo(_groupinfochildsel[1], _groupuserinfo, groupinfo);
  42. //点击退出按钮事件设置
  43. $(_groupinfochildsel[2]).addAttrArray({
  44. "onclick": [[U.F.J.GroupExit, [groupinfo, _$(groupinfo).FindOne({ "UserId": US.userInfo.userid }), _groupinfoel]]],
  45. "innerHTML": _UTF ? "解散改群" : "退出该群"
  46. });
  47. }
  48. //创建新群,清空数据
  49. else {
  50. //设置群名,群描述等
  51. _inputel[0].value = "";
  52. _inputel[1].value = "";
  53. }
  54. //弹出窗体
  55. _formel = U.UI.Form({
  56. "min": false,
  57. "max": false,
  58. "id": "UD_SYAO",
  59. "style": { "width": "480px", "height": "" },
  60. "content": _groupinfoel[0],
  61. "title": "<div class='UD_SYF_STI'>添加群聊</div>",
  62. "hst": { style: { "padding": "0" } }
  63. });
  64. //确定添加群处理
  65. _determinebottom = $(_groupinfochildsel[3]).Child()[0];
  66. _determinebottom.onclick = U.M.apply(_determinebottom, [[U.F.J.DetermineCreateGroupAndAddGroupUser, [_groupinfochildsel[0], groupinfo.GroupManageID]]]);
  67. //确定取消群处理
  68. _closebottom = $(_groupinfochildsel[3]).Child()[1];
  69. _closebottom.onclick = U.M.apply(_formel, [[_formel.shut]]);
  70. //添加新用户进去群的窗体显示了,那么则重新点击刷新
  71. if (_addgroupuserel.style.display == "block") {
  72. U.F.J.SelectFriendForm();
  73. }
  74. return _formel;
  75. }
  76. /**
  77. * 显示添加群窗口
  78. *
  79. * @param {element} 添加进入的元素
  80. * @param {object} 添加的用户信息
  81. */
  82. U.F.J.PrintGroupUserInfo = function (el, groupuserinfo, groupinfo) {
  83. var i,
  84. //临时元素变量
  85. _tempel,
  86. _temponeel,
  87. _temptwoel,
  88. _frag = $$("frag"),
  89. _childsel = $(el).Child(),
  90. //判断是否是群主
  91. _isgroupmain = !groupuserinfo || groupinfo.GroupManageCreateUserID == US.userInfo.userid //判断是否是群主,或者是在新建群
  92. ;
  93. //打印群用户显示的样式
  94. for (i = 0; i < groupuserinfo.length; i++) { //循环添加
  95. _tempel = $$("div", { "className": "UD_SYACO" }, _frag);
  96. $$("img", {
  97. "onerror": U.M.ImgError, "title": "点击查看",
  98. "src": U.M.GetImgU(groupuserinfo[i].UserThumbnailImageHead)
  99. }, _tempel);
  100. $$("div", { "className": "UD_SYACOM UTDF", "style": { "width": "25%" }, "innerHTML": groupuserinfo[i].UserName }, _tempel);
  101. _temponeel = $$("div", { "className": "UD_SYACOM UTDF", "innerHTML": groupuserinfo[i].GroupUsersDescript || groupuserinfo[i].UserName }, _tempel);
  102. _temptwoel = $$("div", { "className": "UD_HERDUSER" + (_isgroupmain ? " UD_HERDUSERS" : "") }, _tempel);
  103. //这有已经新建的群
  104. if (groupinfo) {
  105. //只有本人或者群主才能修改群名片
  106. if (_isgroupmain || groupuserinfo[i].UserId == US.userInfo.userid) {
  107. $$("img", {
  108. "src": "/img/Edit.png", "title": "修改群名片",
  109. "onclick": [[U.F.J.UpateGroupUserDescriptForm, [groupuserinfo[i], _temponeel]]]
  110. }, _temptwoel);
  111. }
  112. $$("img", {
  113. "src": "/img/personalCard.png", "title": "查看用户资料",
  114. "onclick": [[U.U.I.ViewOtherUserInfo, [groupuserinfo[i].UserId]]]
  115. }, _temptwoel);
  116. $$("img", {
  117. "src": "/img/Add.png", "title": "添加好友",
  118. "onclick": [[U.F.M.AddFriend, [groupuserinfo[i], groupinfo, _tempel]]]
  119. }, _temptwoel);
  120. }
  121. //如果是群主有移除权限
  122. if (_isgroupmain) {
  123. $$("img", {
  124. "src": "/img/exit.png", "title": "移除",
  125. "onclick": [[U.F.J.GroupExit, [groupuserinfo[i], groupinfo, _tempel]]]
  126. }, _temptwoel);
  127. }
  128. }
  129. //判断元素是否存在,如果存在则,追加元素,如果不存在则添加到最后面
  130. if (_childsel.length) {
  131. el.insertBefore(_frag, _childsel[_childsel.length - 1]);
  132. }
  133. else {
  134. el.appendChild(_frag);
  135. }
  136. }
  137. /**
  138. * 显示添加群窗口
  139. *
  140. * @param {object} 群好友信息
  141. */
  142. U.F.J.UpateGroupUserDescriptForm = function (groupuserinfo, el) {
  143. var _tempel,
  144. _temponeel,
  145. _temptwoel,
  146. _groupname = groupuserinfo.GroupUsersDescript || groupuserinfo.UserName
  147. ;
  148. if (groupuserinfo) {
  149. //创建好友分组的样式
  150. _tempel = $$("div", { "className": "UD_SYSSZS UD_SYATNL UD_SYSOU" });
  151. _temponeel = $$("div", {}, _tempel)
  152. _temptwoel = $$("input", {
  153. "value": _groupname, "onfocus": [[U.MR.InputTip, ["this", [_groupname, ""]]]],
  154. "onblur": [[U.MR.InputTip, ["this", ["", _groupname]]]]
  155. }, _temponeel);
  156. //弹出好友对话框
  157. U.UI.Confirm("群备注修改", { "width": "300px" }, null, U.M.apply(null, [[U.F.J.DetermineUpateGroupUserDescript, [groupuserinfo, _temptwoel, el]]]),
  158. _tempel, $("#UD_SY")[0]);
  159. }
  160. else { U.Alert("暂无群信息"); }
  161. }
  162. /**
  163. * 弹出设置
  164. *
  165. * @param {object} 群好友信息
  166. */
  167. U.F.J.DetermineUpateGroupUserDescript = function (groupuserinfo, inputel, el) {
  168. //判断用户是否输入正确的备注名
  169. if (inputel.value && U.MS.NickName.test(inputel.value)) {
  170. U.A.Request(US.Auth, ["UpdateGroupMemberInfo", groupuserinfo.GroupManageID, US.userInfo.userid, inputel.value],
  171. U.F.J.AsynDetermineUpateGroupUserDescript, [null, groupuserinfo, inputel.value, el]);
  172. }
  173. else {
  174. U.Alert("备注名格式不对");
  175. return true;
  176. }
  177. }
  178. /**
  179. * 修改群备注
  180. *
  181. * @param {object} 群好友信息
  182. */
  183. U.F.J.AsynDetermineUpateGroupUserDescript = function (r) {
  184. var context = r.context,
  185. _groupuserinfo = context[1], //群用户信息
  186. _descriptname = context[2], //修改后的备注名
  187. _el = context[3]; //元素
  188. //修改groupuserinfo里面的用户备注的变量和修改显示给用户看到的备注
  189. _el.innerText = _groupuserinfo.GroupUsersDescript = _descriptname;
  190. U.Alert("修改备注成功!");
  191. }
  192. /**
  193. * 退出或者踢人
  194. *
  195. * @param {object} 群信息
  196. * @param {object} 好友信息
  197. */
  198. U.F.J.GroupExit = function (groupinfo, userinfo, el) {
  199. var _userid = US.userInfo.userid, //用户id
  200. _isgroupmain = groupinfo.GroupManageCreateUserID == _userid //判断用户是否是群主
  201. ;
  202. //如果推出群的是群主处理
  203. if (_isgroupmain) {
  204. //如果群主自己推出,则解散群
  205. if (userInfo.userid == _userid) {
  206. U.UI.Confirm("是否解散该群", [U.F.J.EnterGroupExit, [groupinfo, userinfo, true, el]]); //创建提示框 提示是否删除备份
  207. }
  208. //否则则移除群好友
  209. else {
  210. U.UI.Confirm("是否移除该群用户", [U.F.J.EnterGroupExit, [groupinfo, userinfo, false, el]]); //创建提示框 提示是否删除备份
  211. }
  212. }
  213. //不是群主的处理
  214. else {
  215. U.UI.Confirm("是否确定退出该群", [U.F.J.EnterGroupExit, [groupinfo, userinfo, false, el]]); //创建提示框 提示是否删除备份
  216. }
  217. }
  218. /**
  219. * 移除群异步
  220. *
  221. * @param {object} 群信息
  222. * @param {object} 好友信息
  223. * @param {bool} 是否为删除群
  224. */
  225. U.F.J.EnterGroupExit = function (groupinfo, userinfo, isdelete, el) {
  226. if (isdelete === 1) {
  227. U.A.Request(US.Auth, ["DeleteGroup", groupinfo.GroupManageID], U.F.J.AsynGroupExit,
  228. ["", groupinfo, userinfo, isdelete, el]); //解散群
  229. }
  230. else {
  231. U.A.Request(US.Auth, ["ExitGroup", groupinfo.GroupManageID, userInfo.userid], U.F.J.AsynGroupExit,
  232. ["", groupinfo, userinfo, isdelete, el]);
  233. }
  234. }
  235. /**
  236. * 群移除异步
  237. *
  238. * @param {object} 群信息
  239. * @param {object} 好友信息
  240. * @param {bool} 是否为删除群
  241. */
  242. U.F.J.AsynGroupExit = function (r) {
  243. var context = r.context,
  244. _chatfrom,
  245. _groupinfo = context[1], //群信息
  246. _friendinfo = context[2], //自己在群里的信息
  247. _isdelete = context[3], //是解散群还是退出(移除)群用户
  248. _el = context[4]; //弹出的群窗体
  249. //删除群处理 或者退出群
  250. if (_isdelete) {
  251. //清空用户在群的数据
  252. _$(US.Friend[2]).Delete({ "GroupManageID": _friendinfo.GroupManageID }); //删除群
  253. _$(US.Friend[3]).Delete({ "GroupManageID": _friendinfo.GroupManageID }); //删除群用户
  254. //用户面板里是否存在用户,存在删除
  255. $("#UD_SYHZLZ").find("[TID=\"" + _groupinfo.GroupManageID + "\"]").remove(); //删除群
  256. //判断好友是否出现在聊天框里,如果是则移除聊天框
  257. _chatfrom = U.F.W.IsCreateForm(_friendinfo.GroupManageID)[0]; //
  258. if (U.F.W.IsCreateForm(_friendinfo.GroupManageID)[0]) {
  259. U.F.W.DelteFriendChat(_friendinfo.GroupManageID, _UDTD)
  260. }
  261. //弹出群消息的弹窗
  262. _el = $(_el).Parent({ usform: "true" });
  263. _el.close()
  264. }
  265. //删除好友处理
  266. else {
  267. $(_el).remove(); //移除群好友
  268. _$(US.Friend[2]).Delete({ "GroupManageID": _friendinfo.GroupManageID, "UserId": _friendinfo.UserId }); //删除群指定的用户
  269. }
  270. }
  271. /**
  272. * 选择联系人弹框
  273. *
  274. * @param {object} 添加进入的元素
  275. * @param {function} 添加的用户信息
  276. */
  277. U.F.J.SelectFriendForm = function (cb) {
  278. //添加好友弹框调用,用户必须登录和已经加载了好友数据
  279. if (!U.U.L.isLogin() && US.Friend[1]) {
  280. var i,
  281. _formel,
  282. _el = $("#UD_SYTC")[0],
  283. _allfriendinfo = _$(US.Friend[1].concat([])), //所有的联系人
  284. _addfriendinfo = U.F.J.SelectUserInfo, //选择用户的信息
  285. _selectfriend = _addfriendinfo.SelectUser; //添加好友信息
  286. //已经在群里的就不添加了
  287. for (i = 0; i < _selectfriend.length; i++) {
  288. _allfriendinfo.Delete({ "UserId": _selectfriend[i].UserId });
  289. }
  290. //打印可以选择的联系人
  291. U.F.J.PrintSelectFriend(el, _allfriendinfo.Value);
  292. //打印可以选择的群
  293. U.F.J.PrintSelectGroupUser(el, US.Friend[2]);
  294. //弹出创建群选择好友的框
  295. _formel = U.UI.Form({
  296. "min": false,
  297. "max": false,
  298. "id": "UD_SYTO",
  299. "style": { width: "250px", height: "480px" }, //弹框
  300. "content": $("#UD_SYT")[0],
  301. "title": "添加好友",
  302. "hst": { style: { "padding": "0 0 0 5px" } }
  303. });
  304. _addfriendinfo.CallBack = cb; //回调函数
  305. return _formel;
  306. }
  307. }
  308. /*
  309. 把群成员添加进 _UGE["CAD"]里面
  310. */
  311. U.F.J.ChanCAD = function (groupid) {
  312. var groupuser = _$(US.Friend[3]).Select({ "GroupManageID": groupid });
  313. var _UGE = U.D.SY.ET["UL"];
  314. _UGE["CAD"] = groupuser;
  315. }
  316. /**
  317. * 打印可以添加的用户
  318. *
  319. * @param {object} 添加联系人的元素
  320. * @param {function} 选择的好友
  321. */
  322. U.F.J.PrintSelectFriend = function (el, groupinfo) {
  323. var i,
  324. _tempel,
  325. _temponeel,
  326. _frag = $$("frag");
  327. //联系人打印
  328. for (i = 0; i < friendinfo.length; i++) {
  329. _tempel = $$("div", {
  330. "className": "UD_SYTCO", "FID": friendinfo[i].UserId,
  331. "onclick": [[U.F.J.ClickSelectFriend, ["this", friendinfo[i]]]]
  332. }, _frag);
  333. $$("div", { "className": "UD_SYTCOI UD_SYI" }, _tempel);
  334. _temponeel = $$("div", { "className": "UD_SYTCOC UTDF" }, _tempel);
  335. $$("img", {
  336. "onerror": U.M.ImgError, "title": "点击查看", "onclick": [[U.M.StopBubble], [U.U.I.ViewOtherUserInfo, [friendinfo[i].UserId]]],
  337. "src": U.M.GetImgU(friendinfo[i].UserThumbnailImageHead), "alt": friendinfo[i].FriendsDescript
  338. }, _temponeel);
  339. $$("div", { "className": "UD_SYTCOCN", "innerHTML": friendinfo[i].FriendsDescript }, _temponeel);
  340. }
  341. //显示到框
  342. el.innerHTML = "";
  343. el.appendChild(_frag);
  344. }
  345. /**
  346. * 打印可以添加的群用户
  347. *
  348. * @param {object} 添加联系人的元素
  349. * @param {function} 选择的好友
  350. */
  351. U.F.J.PrintSelectGroupUser = function (el, groupinfo) {
  352. var i,
  353. _tempel,
  354. _temponeel,
  355. _frag = $$("frag");
  356. //循环打印
  357. for (i = 0; i < groupinfo.length; i++) {
  358. _tempel = $$("div", {
  359. "className": "UD_SYTCO", "FID": groupinfo[i].GroupManageID,
  360. "onclick": [[U.F.J.ClickSelectGroup, ["this", groupinfo[i]]]]
  361. }, _frag);
  362. $$("div", { "className": "UD_SYTCOI UD_SYI" }, _tempel);
  363. _temponeel = $$("div", { "className": "UD_SYTCOC UTDF" }, _tempel);
  364. $$("img", {
  365. "title": "点击查看", "onclick": [[U.M.StopBubble], [U.U.I.ViewOtherUserInfo, [groupinfo[i].UserId]]],
  366. "src": "/img/chatgroup.png"
  367. }, _temponeel);
  368. $$("div", { "className": "UD_SYTCOCN", "innerHTML": groupinfo[i].GroupManageName }, _temponeel);
  369. }
  370. el.appendChild(_frag);
  371. }
  372. /**
  373. * 搜索联系人
  374. *
  375. * @param {object} 用户信息
  376. */
  377. U.F.J.SearchSelectFriend = function (groupinfo) {
  378. var _searchel = $("#UD_SYTC")[0],
  379. _UDTD = $("div@FID=" + groupinfo.UserId)[0]; //获取选中的添加的元素
  380. if (_UDTD) {
  381. _UDTD.onclick();
  382. U.M.SCT(_UDTD); //滚动到指定的位置
  383. }
  384. else { U.Alert("好友已经添加到群组里~"); }
  385. }
  386. /**
  387. * 选择添加后的效果
  388. *
  389. * @param {element} 添加好友的元素
  390. * @param {object} 好友信息
  391. */
  392. U.F.J.ClickSelectFriend = function (el, friendinfo) {
  393. var _selectel = $("div", el)[0]; //选择的元素
  394. //如果元素没有给选择,那么点击选择
  395. if (_selectel.className == "UD_SYTCOI UD_SYI") {
  396. _selectel.className += " UD_SYTCOIO"; //设置点击后的效果样式
  397. U.F.J.SelectUserInfo.NeedUser.push(friendinfo); //最后需要添加的用户
  398. }
  399. //如果元素已经是选择的状态,那么点击后则取消选择
  400. else {
  401. _selectel.className = "UD_SYTCOI UD_SYI"; //设置点击后的效果样式
  402. _$(U.F.J.SelectUserInfo.NeedUser).Delete({ "UserId": friendinfo.UserId }); //删除最后需要添加的用户
  403. }
  404. }
  405. /**
  406. * 选择添加群后的效果
  407. *
  408. * @param {element} 添加群的元素
  409. * @param {object} 群的信息 _$()
  410. */
  411. U.F.J.ClickSelectGroup = function (el, groupinfo) {
  412. var i,
  413. _selectel = $("div", el)[0], //点击的元素
  414. _needuser = U.F.J.SelectUserInfo.NeedUser, //最后需要添加的用户
  415. _groupuser = _$(US.Friend[3]).Select({ "GroupManageID": groupinfo.GroupManageID }); //选择群里所有的群用户
  416. //如果元素没有给选择,那么点击选择
  417. if (_selectel.className == "UD_SYTCOI UD_SYI") {
  418. _selectel.className += " UD_SYTCOIO"; //设置点击后的效果样式
  419. _needuser = _needuser.concat(_groupuser); //把群用户添加到需要添加的用户集合里
  420. }
  421. //如果元素已经是选择的状态,那么点击后则取消选择
  422. else { //添加删除效果
  423. _selectel.className = "UD_SYTCOI UD_SYI"; //设置点击后的效果样式
  424. //移除群里的每一个用户
  425. for (i = 0; i < _groupuser.length; i++) {
  426. _$(_needuser).Delete({ "UserId": _groupuser[i].UserId });
  427. }
  428. }
  429. }
  430. /**
  431. * 创建群取消按钮
  432. *
  433. * @param {element} 添加好友窗体
  434. */
  435. U.F.J.CloseSelectFriendForm = function (el) {
  436. U.D.CloseWindow($(el).Parent({ usform: "true" }));
  437. }
  438. /**
  439. * 确定添加按钮
  440. *
  441. * @param {element} 添加好友窗体
  442. */
  443. U.F.J.DetermineSelectFriend = function (el) {
  444. var _selectuserinfo = U.F.J.SelectUserInfo,
  445. _groupinfoel = $("#UD_SYAC"),
  446. _needuser = _selectuserinfo.NeedUser; //需要添加好友的集合
  447. //回调函数处理
  448. if (_selectuserinfo.CallBack) {
  449. _selectuserinfo.CallBack();
  450. _selectuserinfo.CallBack = null;
  451. }
  452. //普通添加群处理 在好友界面操作
  453. else {
  454. U.F.J.PrintGroupUserInfo(_groupinfoel[0], _needuser); //打印选择好友
  455. }
  456. _needuser.splice(0, _needuser.length);
  457. U.D.CloseWindow(el); //取消窗口
  458. }
  459. /**
  460. * 确定添加按钮
  461. * 点击好友添加确定按钮,去数据库创建一个群
  462. * @param {element} 添加好友窗体
  463. * @param {string} 群id
  464. * @param {boolean} 是否是新建
  465. */
  466. U.F.J.DetermineCreateGroupAndAddGroupUser = function (el, groupid) {
  467. var i,
  468. _groupinfo, //群信息
  469. _inputs = $("input,textarea", el), //输入的群信息
  470. _adduserinfo = U.F.J.SelectUserInfo.NeedUser, //需要添加用户的集合
  471. _userid = US.userInfo.userid, //用户的id
  472. _groupname = _inputs[0].value, //创建的群名
  473. _groupdescript = _inputs[1].value, //创建的群描述
  474. _groupuserids = _$(_adduserinfo).pluck("UserId").join(",") //添加进入群所有好友的id
  475. ;
  476. //如果群不存在则创建
  477. if (!groupid) {
  478. groupid = Guid.newGuid(); //新建一个群id
  479. _groupinfo = new U.F.T.GroupEntity(groupid, _groupname, new Date(), _userid, _groupdescript, null); //添加群实体
  480. //获取创建群后,拉进群用户里包括自己
  481. _adduserinfo.push(US.userInfo);
  482. _groupuserids = _userid + "," + _groupuserids;
  483. }
  484. //群存在操作
  485. else {
  486. _groupinfo = _$(US.Friend[2]).Select({ "GroupManageID": groupid })[0]; //获取群
  487. }
  488. //关闭弹框
  489. U.D.CloseWindow($(el).Parent({ usform: "true" }));
  490. _adduserinfo = _adduserinfo.splice(0, _adduserinfo.length); //移除全局变量,把需要添加的用户删除
  491. //创建群成员,给每个群成员发送一条建立群给拉入群的消息
  492. U.A.Request(US.Auth, ["CreateGroupAndAddUser", _userid, groupid, _groupname, _groupdescript, _groupuserids],
  493. U.F.J.AsynDetermineCreateGroupAndAddGroupUser, ["", _groupinfo, _adduserinfo, groupid, _groupname, _groupdescript]); //添加到数据库
  494. }
  495. /**
  496. * 异步创建群
  497. * @param {object} 服务器返回的值
  498. */
  499. U.F.J.AsynDetermineCreateGroupAndAddGroupUser = function (r) {
  500. var i,
  501. context = r.context, //回调函数的值
  502. _directory,
  503. _diskinfo,
  504. _groupuser,
  505. _userinfo = US.userInfo, //回调的用户信息
  506. _groupinfo = context[1], //当前群信息
  507. _groupuserinfo = context[2], //用户信息集合
  508. _groupid = context[3], //群id
  509. _groupname = context[4], //群名
  510. _groupdescript = context[5] //群描述
  511. ;
  512. r = r.value; //获取服务器的返回值
  513. //创建群或者修改群成功o
  514. if (r !== false) {
  515. //如果新建的群不存在全局变量中,则新建一个
  516. if (!_$(US.Friend[2]).Select({ "GroupManageID": _groupid })[0]) {
  517. US.Friend[2].unshift(_groupinfo); //把群插入全局变量中
  518. //新建一个群目录
  519. _directory = new U.Dk.M.Entity(_groupinfo.GroupManageID, 0, US.userInfo.userid, _groupinfo.GroupManageName, _groupinfo.GroupManageName,
  520. "folder", null, new Date(), U.UP.FFT("folder")[1], 1, null, null, 0, "", _groupinfo.GroupManageID);
  521. //调用添加文件到disk全局的方法
  522. _diskinfo = U.Dk.DiskOperatingSwitch(_userinfo.UserId); //根据userid获取网盘的信息
  523. U.Dk.M.Entity.Add([_directory], _diskinfo); //添加到disk全局里
  524. }
  525. //如果群已经存在了,那么修改群名和群描述
  526. else {
  527. _groupinfo.GroupManageName = _groupname; //群名
  528. _groupinfo.GroupManageDescript = _groupdescript; //群描述
  529. }
  530. //把群的用户添加到群用户数组里
  531. for (i = 0; i < _groupuserinfo.length; i++) {
  532. _groupuser = new U.F.T.GroupUserEntity(_groupuserinfo[i].UserId, _groupuserinfo[i].UserImageHead,
  533. _groupuserinfo[i].UserNickName, _groupuserinfo[i].UserName, _groupuserinfo[i].UserThumbnailImageHead,
  534. _groupuserinfo[i].UserNickName, _groupid, 1); //新建一个群用户
  535. US.Friend[3].push(_groupuser); //添加到群用户里
  536. }
  537. //创建群成功后,直接点击查看群。
  538. $($("#UD_SYHZLTA").Child()[2]).Child()[0].onclick();
  539. //提示语
  540. if (_groupinfo) {
  541. U.Alert(_groupinfo ? _groupname + "邀请成功" : "邀请好友请入群成功~");
  542. }
  543. }
  544. //创建失败的提示
  545. else {
  546. U.Alert("服务器繁忙,请从新创建!!");
  547. }
  548. }
  549. /*
  550. 弹框询问用户是否创建这个群
  551. */
  552. U.F.J.CXNEWTJ = function (groupid, groupname, groupds, fileid, cb) {
  553. _UGE = _$(US.Friend[2]).Select({ "GroupManageID": groupid })[0]; //判断群是否已经存在在列表中
  554. if (!_UGE) {
  555. var UDGD = $$("div", {});
  556. //var UDGD_xz = $$("div", { "className": "UDGD_xz", "innerHTML": "下载", "onclick": [[U.Dk.RE.WPXZWJZJO, [UDWW["id"], "file"]]] }, UDGD);
  557. var UDGD_yj = $$("div", { "className": "UD_ALLTs", "innerHTML": "您的文档将移至新建群里(" + groupds + "),是否新建群组?" }, UDGD);
  558. var UDGDO = $$("div", { "className": "UD_ALLTs_All" }, UDGD);
  559. var UDGD_yjs = $$("div", { "className": "UD_ALLTs_OFF", "innerHTML": "取消" }, UDGDO);
  560. $$("div", { "className": "UD_ALLTs_OUT", "innerHTML": "确认", "onclick": [[U.F.J.ChangeY, [groupid, groupname, groupds, fileid, cb]]] }, UDGDO);
  561. UDGD_yjs.onclick = function () { $("#UD_Temp_CK")[0].close() }
  562. U.UI.Form({//创建更多窗体
  563. draw: false,
  564. max: false,
  565. min: false,
  566. isTop: true,
  567. id: "UD_Temp_CK",
  568. style: {
  569. width: "250px",
  570. height: "170px"
  571. },
  572. content: UDGD,
  573. title: "提示",
  574. hst: {}
  575. }); //创建窗体
  576. } else {
  577. U.F.J.ChangeY(groupid, groupname, groupds, fileid, cb)
  578. }
  579. }
  580. /*
  581. 获取所选择的联系人,发送消息
  582. */
  583. U.F.J.ChangeY = function (groupid, groupname, groupds, fileid, cb) {
  584. var i, _UGE, _UBY,
  585. // _UCB = U.F.J.AsynDetermineCreateGroupAndAddGroupUser, //创建群异步回调
  586. _UTF = 1, //判断是否已经创建。如果没有创建,就把_UTF的值设置为0,0在存储过程的传参作用是创建群, 1是不创建直接修改群名
  587. _userid = US.userInfo.userid, //当前用户id 也是群主id
  588. _UGN = [groupname, groupds], //群名和群描述的数组 [0]群名 [1]群描述
  589. _UDE = U.D.SY.ET["UL"]["AD"], //需要添加用户的集合(群用户)
  590. _NAIDs = new Array();
  591. for (var i = 0; i < _UDE.length; i++) {
  592. var pd = 0;
  593. for (var u = 0; u < _NAIDs.length; u++) {
  594. if (_NAIDs[u].UserId == _UDE[i].UserId || _UDE[i].UserId == US.userInfo.userid) {//
  595. pd++
  596. }
  597. }
  598. if (pd == 0) {
  599. _NAIDs.push(_UDE[i]);
  600. }
  601. }
  602. _FriendUser = _$(_NAIDs).pluck("UserId").join(","),
  603. _UAID = _$(_NAIDs).pluck("UserId").join(","); //用,分割群用户的id 例: userid,userid
  604. _UGE = _$(US.Friend[2]).Select({ "GroupManageID": groupid })[0]; //判断群是否已经存在在列表中
  605. if (!_UGE) { //判断群是否存在
  606. _UTF = 0;
  607. groupid = groupid || Guid.newGuid(); //没有群id创建一个群id
  608. //创建群的实体,主要是用于添加到US.Friend[2]这个群集合里面
  609. _UGE = new U.F.T.GroupEntity((groupid = groupid || Guid.newGuid()), _UGN[0], new Date(), _userid, _UGN[1], null);
  610. _UAID = _userid + (_UAID ? "," : "") + _UAID; //拼接群用户id 把本人也添加到这个群里
  611. }
  612. _UDE.splice(0, _UDE.length); //添加成功后移除用户
  613. //创建群成员,给每个群成员发送一条建立群给拉入群的消息
  614. U.A.Request(US.Auth, ["CreateGroupAndAddUser", _userid, groupid, _UGN[0], _UGN[1], _UAID], U.F.J.AsynCXNEWTJ, ["", _UGE, _NAIDs.splice(0, _NAIDs.length), groupid, _UGN[0], _UGN[1], cb, _FriendUser, groupid, _UGN[0]]); //添加到数据库
  615. // U.A.Request(US.CD, [US.DB, "UseStudio_Friends", "CreateGroupAndAddUser", _userid, _UGN[0], _UGN[1], groupid, _UAID, _UTF], U.F.J.AsynCXNEWTJ, ["", _UGE, _NAIDs.splice(0, _NAIDs.length), groupid, _UGN[0], _UGN[1], cb, _FriendUser, groupid, _UGN[0]]); //添加到数据库
  616. //给每个群成员发送一条有关于这个uw文件的消息
  617. // U.A.Request(US.CD, ([US.DB, "UseStudio_Friends", "SentMessageToFriend", US.userInfo.userid, _FriendUser, US.userInfo.UserNickName || US.userInfo.username, '' + groupid + ',' + _UGN[0] + ',' + _UGE.GroupManageCreateDate + ',' + fileid + ',' + _UGE.GroupManageName + '.UW', 5, false]), U.M.apply(), [""]);
  618. $("#UD_Temp_CK").hide()
  619. }
  620. /**
  621. * 确定添加按钮
  622. *点击好友添加确定按钮,去数据库创建一个群
  623. * @param {object} 添加好友窗体
  624. */
  625. U.F.J.AsynCXNEWTJ = function (r) {
  626. U.F.J.AsynDetermineCreateGroupAndAddGroupUser(r); //回调原本创建群的流程函数 这里地方不调用的话 会导致原本在好友聊天中创建群成员和群用不了
  627. var context = r.context;
  628. context[6](context[1], context[7], context[8], context[9]); //回调群id
  629. }
  630. /**
  631. * 无认证直接加入群
  632. *
  633. * @param {object} 群信息
  634. * @param {function} 群id
  635. */
  636. U.F.J.OAddGroup = function (groupinfo, UCB) {
  637. if (!U.U.L.isLogin(3)) {//判断是否登录
  638. var _userinfo = US.userInfo,
  639. _userid = _userinfo.UserId,
  640. _UDE = US.Friend[2],
  641. _UTF = _$(_UDE).Select({ "GroupManageID": groupinfo.GroupManageID })[0];
  642. if (!_UTF) {
  643. U.Alert("正在加入,请稍等..");
  644. U.A.Request(US.Auth, ["AddUsersToGroup", groupinfo.GroupManageID, _userid], U.F.J.AsynOAddGroup, ["", { MessageContent: groupinfo.GroupManageID, MessageDescript: groupinfo.GroupManageName, UserId: groupinfo.UserId }, UCB]);
  645. }
  646. else {
  647. if (UCB) {
  648. U.M.apply(this, UCB)();
  649. }
  650. else { U.F.W.ViewFriend(_UTF); }
  651. }
  652. }
  653. }
  654. //用户直接进入群异步
  655. U.F.J.AsynOAddGroup = function (r) {
  656. U.Alert("成功加入该群");
  657. var context = r.context,
  658. _UCB = context[2],
  659. _userid = US.userInfo.userid,
  660. _UGE = US.Disk.Disks[_userid],
  661. _UDE = U.F.N.AsynLYHJQCL(r); //添加群文件
  662. _UGE[0].splice(6, 0, (_UGE[4][_UDE.GroupManageID] = new U.Dk.M.Entity(_UDE.GroupManageID, 0, _userid, _UDE.GroupManageName, _UDE.GroupManageName, "folder", null, new Date(), U.UP.FFT("folder")[1], 1, null, null, 0, "", _UDE.GroupManageID))); //添加群网盘资料
  663. if (_UCB) {
  664. U.M.apply(this, _UCB)();
  665. }
  666. else {
  667. U.F.W.ViewFriend(_UDE);
  668. } //回调
  669. }
  670. /**
  671. * 加入群
  672. *
  673. * @param {object} 群信息
  674. */
  675. U.F.J.AddGroup = function (groupinfo) {
  676. if (!U.U.L.isLogin(3)) {//判断是否登录
  677. var _userinfo = US.userInfo,
  678. _userid = _userinfo.UserId,
  679. _UDE = US.Friend[2],
  680. _UTF = _$(_UDE).Select({ "GroupManageID": groupinfo.GroupManageID })[0];
  681. if (!_UTF) {
  682. U.A.Request(US.CD, [US.DB, "UseStudio_Friends", "SendJoinGroupMessage", _userid, groupinfo.GroupManageID, _userid, groupinfo.GroupManageName], U.F.J.AsynAddGroup, [""]);
  683. //U.A.Request(US.Auth,"UseStudioManage.AddToGroupMessageStatus", [_userid, groupinfo.GroupManageID, _userid, groupinfo.GroupManageName], U.F.J.AsynAddGroup, [""]);
  684. U.Alert("发送消息中...");
  685. }
  686. else { U.F.W.ViewFriend(_UTF); }
  687. }
  688. }
  689. //加入群异步
  690. U.F.J.AsynAddGroup = function (r) {
  691. U.Alert(r.value ? "已经向群主发送消息" : "消息发送失败请重新发送");
  692. }
  693. //#endregion
  694. /**
  695. * 弹出好友添加使用
  696. *
  697. * @param {object} 群信息
  698. */
  699. U.F.J.AddPopup = function (groupinfo) {
  700. var _SFC, _SFD, _SFDF, _SFDT, _SFDJ, _SFDC; //窗体,内嵌DIV,添加分组,添加/查找好友,加入群组,创建群组
  701. //弹出添加选择窗体
  702. _SFC = U.UI.Form({ "style": { "width": "390px", "height": "220px" }, "title": "添加好友/群聊", "Top": "0", "Left": "0" }).body;
  703. //宽度30%,高度30%,标题添加好友/群聊
  704. _SFD = $$("div", { "className": "U_F_PLACE" }, _SFC);
  705. _SFDF = $$("div", { "className": "U_F_SORT", "onclick": U.F.M.CreateFriendGroupPopup, "innerHTML": "添加分组" }, _SFD); //添加分组按钮
  706. _SFDT = $$("div", { "className": "U_F_SORTE", "onclick": U.F.S.FTCSS, "innerHTML": "添加/<br>查找好友" }, _SFD); //查找好友
  707. _SFDJ = $$("div", { "className": "U_F_SORT", "onclick": U.F.S.TCSS, "innerHTML": "加入群组" }, _SFD); //加入群聊
  708. _SFDC = $$("div", { "className": "U_F_SORT", "onclick": [[U.F.J.GroupInfoForm, [groupinfo]]], "innerHTML": "创建群组" }, _SFD); //创建群聊
  709. }