imdialog.java 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. package com.cnd3b.restcontroller.system.im.imdialog;
  2. import com.alibaba.fastjson.JSONArray;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.cnd3b.common.Controller;
  5. import com.cnd3b.common.D3bException;
  6. import com.cnd3b.common.data.Row;
  7. import com.cnd3b.common.data.Rows;
  8. import com.cnd3b.common.data.RowsMap;
  9. import com.cnd3b.common.data.SQLFactory;
  10. import p2.pao.PaoRemote;
  11. import p2.pao.PaoSetRemote;
  12. import p2.util.P2Exception;
  13. import java.util.ArrayList;
  14. public class imdialog extends Controller {
  15. /**
  16. * 构造函数
  17. *
  18. * @param content
  19. */
  20. public imdialog(JSONObject content) {
  21. super(content);
  22. }
  23. /**
  24. * 群对话框列表查询
  25. *
  26. * @return
  27. */
  28. public String query_imdialogList() {
  29. /**
  30. * 过滤条件设置
  31. */
  32. StringBuffer where = new StringBuffer(" 1=1 ");
  33. if (content.containsKey("where")) {
  34. JSONObject whereObject = content.getJSONObject("where");
  35. if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
  36. where.append(" and(");
  37. where.append("t1.fimdialogname like'%").append(whereObject.getString("condition")).append("%' ");
  38. where.append(")");
  39. }
  40. }
  41. SQLFactory timdialogSQL = new SQLFactory(this, "即时通讯普通群列表查询");
  42. timdialogSQL.addParameter("siteid", siteid);
  43. timdialogSQL.addParameter("tenterprise_userid", userid);
  44. timdialogSQL.addParameter_SQL("where", where);
  45. Rows rows = dbConnect.runSqlQuery(timdialogSQL.getSQL());
  46. SQLFactory timnewmsgSQL = new SQLFactory(this, "即时通讯普通群最新消息查询");
  47. timnewmsgSQL.addParameter("siteid", siteid);
  48. timnewmsgSQL.addParameter_in("timdialogid", rows.toArrayList("timdialogid"));
  49. RowsMap newmsgmap = timnewmsgSQL.runSqlQuery().toRowsMap("timdialogid");
  50. for (Row row : rows) {
  51. row.put("latestnews", newmsgmap.get(row.getString("timdialogid")));//最新消息
  52. }
  53. return getSucReturnObject().setData(rows).saveToDataPool().toString();
  54. }
  55. /**
  56. * 群主界面查询
  57. *
  58. * @return
  59. */
  60. public String query_imdialogMain() {
  61. long timdialogid = content.getLong("timdialogid");
  62. SQLFactory timdialogSQL = new SQLFactory(this, "即时通讯群主界面查询");
  63. timdialogSQL.addParameter("siteid", siteid);
  64. timdialogSQL.addParameter("tenterprise_userid", userid);
  65. timdialogSQL.addParameter("timdialogid", timdialogid);
  66. Rows rows = dbConnect.runSqlQuery(timdialogSQL.getSQL());
  67. for (Row row : rows) {
  68. SQLFactory timdialoguserSQL = new SQLFactory(this, "即时通讯群成员列表查询");
  69. timdialoguserSQL.addParameter("siteid", siteid);
  70. timdialoguserSQL.addParameter("timdialogid", content.getString("timdialogid"));
  71. Rows userrows = dbConnect.runSqlQuery(timdialoguserSQL.getSQL());
  72. row.put("users", userrows);
  73. }
  74. return getSucReturnObject().setData(rows).toString();
  75. }
  76. /**
  77. * 群消息查询
  78. *
  79. * @return
  80. */
  81. public String query_imdialogMessage() {
  82. long timdialogid = content.getLong("timdialogid");
  83. /**
  84. *排序条件设置
  85. */
  86. String[] sortfield = {"t1.createdate desc"};
  87. String sort = getSort(sortfield, "t1.createdate desc");
  88. SQLFactory timdialogSQL = new SQLFactory(this, "即时通讯群历史消息查询", pageSize, pageNumber, sort);
  89. timdialogSQL.addParameter("siteid", siteid);
  90. timdialogSQL.addParameter("timdialogid", timdialogid);
  91. Rows rows = dbConnect.runSqlQuery(timdialogSQL.getSQL());
  92. for (Row row : rows) {
  93. String message = row.getString("message");
  94. row.put("message", JSONObject.parseObject(message));
  95. }
  96. //清除未读消息数
  97. dbConnect.runSqlUpdate("update timdialogusers set funreadmsgcount=0 where siteid='" + siteid + "' and timdialogid='" + timdialogid + "' and tenterprise_userid='" + userid + "'");
  98. return getSucReturnObject().setDataByPaging(rows).toString();
  99. }
  100. public String restUnReadMsgCount() {
  101. long timdialogid = content.getLong("timdialogid");
  102. dbConnect.runSqlUpdate("update timdialogusers set funreadmsgcount=0 where siteid='" + siteid + "' and timdialogid='" + timdialogid + "' and tenterprise_userid='" + userid + "'");
  103. return getSucReturnObject().toString();
  104. }
  105. /**
  106. * 新建聊天对话框
  107. *
  108. * @return
  109. * @throws D3bException
  110. * @throws P2Exception
  111. */
  112. public String insertOrModify() throws D3bException, P2Exception {
  113. long timdialogid = content.getLongValue("timdialogid"); //群ID 新增时默认传0
  114. String fimdialogname = content.getString("fimdialogname", "timdialog.fimdialogname", "群名称");//群名称
  115. String fimdialogtype = content.getString("fimdialogtype");//对话类型
  116. String ownertable = content.getString("ownertable");//所有表
  117. String ownerid = content.getString("ownerid");//所有表ID
  118. ArrayList<String> sqlList = new ArrayList<>();
  119. PaoSetRemote timdialogSet = getP2ServerSystemPaoSet("timdialog", "siteid='" + siteid + "' and timdialogid='" + timdialogid + "'");
  120. PaoRemote timdialog = null;
  121. if (timdialogid <= 0 || timdialogSet.isEmpty()) {
  122. /**
  123. * 创建对话框
  124. */
  125. timdialog = timdialogSet.addAtEnd();
  126. timdialog.setValue("siteid", siteid, 11L);//企业ID
  127. timdialog.setValue("createby", username, 11L);//创建人
  128. timdialog.setValue("createdate", sysdate, 11L);//创建时间
  129. timdialog.setValue("fimdialogtype", fimdialogtype, 11L);//对话框类型
  130. timdialog.setValue("ownertable", ownertable, 11L);//所有表
  131. timdialog.setValue("ownerid", ownerid, 11L);//所有表ID
  132. timdialog.setValue("tenterprise_userid", userid, 11L);//创建账号ID
  133. timdialogid = timdialog.getUniqueIDValue();
  134. /**
  135. * 在初始对话框中添加人员
  136. */
  137. ArrayList<String> userlist = new ArrayList<>();
  138. JSONArray usersArray = content.getJSONArray("users");
  139. usersArray.add(userid);//默认将创建人员加入群
  140. for (Object user : usersArray) {
  141. userlist.add(String.valueOf(user));
  142. }
  143. SQLFactory sqlFactory = new SQLFactory(this, "即时通讯群人员添加");
  144. sqlFactory.addParameter("createby", username);
  145. sqlFactory.addParameter("timdialogid", timdialogid);
  146. sqlFactory.addParameter("siteid", siteid);
  147. sqlFactory.addParameter_in("tenterprise_userid", userlist);
  148. sqlList.add(sqlFactory.getSQL());
  149. } else {
  150. timdialog = timdialogSet.getPao(0);
  151. }
  152. timdialog.setValue("fimdialogname", fimdialogname, 11L);//对话框类型
  153. timdialogSet.save();
  154. dbConnect.runSqlUpdate(sqlList);
  155. content.put("timdialogid", timdialogid);
  156. return query_imdialogMain();
  157. }
  158. }