| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331 |
- package com.cnd3b.restcontroller.system.im.imdialog;
- import com.alibaba.fastjson.JSONArray;
- import com.alibaba.fastjson.JSONObject;
- import com.cnd3b.common.Controller;
- import com.cnd3b.common.D3bException;
- import com.cnd3b.common.data.Row;
- import com.cnd3b.common.data.Rows;
- import com.cnd3b.common.data.RowsMap;
- import com.cnd3b.common.data.SQLFactory;
- import com.cnd3b.common.parameter.parameter;
- import com.cnd3b.common.websocket.WebClientSocket;
- import p2.pao.PaoRemote;
- import p2.pao.PaoSetRemote;
- import p2.util.P2Exception;
- import java.util.ArrayList;
- public class imdialog extends Controller {
- /**
- * 构造函数
- *
- * @param content
- */
- public imdialog(JSONObject content) {
- super(content);
- }
- /**
- * 群对话框列表查询
- *
- * @return
- */
- public String query_imdialogList() {
- /**
- * 过滤条件设置
- */
- StringBuffer where = new StringBuffer(" 1=1 ");
- if (content.containsKey("where")) {
- JSONObject whereObject = content.getJSONObject("where");
- if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
- where.append(" and(");
- where.append("t1.fimdialogname like'%").append(whereObject.getString("condition")).append("%' ");
- where.append(")");
- }
- }
- SQLFactory timdialogSQL = new SQLFactory(this, "即时通讯普通群列表查询");
- timdialogSQL.addParameter("siteid", siteid);
- timdialogSQL.addParameter("tenterprise_userid", userid);
- timdialogSQL.addParameter_SQL("where", where);
- Rows rows = dbConnect.runSqlQuery(timdialogSQL.getSQL());
- SQLFactory timnewmsgSQL = new SQLFactory(this, "即时通讯普通群最新消息查询");
- timnewmsgSQL.addParameter("siteid", siteid);
- timnewmsgSQL.addParameter_in("timdialogid", rows.toArrayList("timdialogid"));
- RowsMap newmsgmap = timnewmsgSQL.runSqlQuery().toRowsMap("timdialogid");
- for (Row row : rows) {
- Rows newmsgrows = newmsgmap.get(row.getString("timdialogid"));
- for (Row newmsg : newmsgrows) {
- newmsg.put("message", JSONObject.parseObject(newmsg.getString("message")));
- }
- row.put("latestnews", newmsgrows);//最新消息
- }
- return getSucReturnObject().setData(rows).saveToDataPool().toString();
- }
- /**
- * 群主界面查询
- *
- * @return
- */
- public String query_imdialogMain() throws D3bException, P2Exception {
- long timdialogid = content.getLong("timdialogid");
- SQLFactory timdialogSQL = new SQLFactory(this, "即时通讯群主界面查询");
- timdialogSQL.addParameter("siteid", siteid);
- timdialogSQL.addParameter("tenterprise_userid", userid);
- timdialogSQL.addParameter("timdialogid", timdialogid);
- Rows rows = dbConnect.runSqlQuery(timdialogSQL.getSQL());
- for (Row row : rows) {
- SQLFactory timdialoguserSQL = new SQLFactory(this, "即时通讯群成员列表查询");
- timdialoguserSQL.addParameter("siteid", siteid);
- timdialoguserSQL.addParameter("timdialogid", content.getString("timdialogid"));
- Rows userrows = dbConnect.runSqlQuery(timdialoguserSQL.getSQL());
- row.put("users", userrows);
- }
- return getSucReturnObject().setData(rows).toString();
- }
- /**
- * 一键联系
- *
- * @return
- */
- public String quickcontact() throws D3bException, P2Exception {
- long tenterprise_userid = content.getLongValue("tenterprise_userid");//根据对方userid,查一对一聊天对话框
- SQLFactory factory = new SQLFactory(this, "根据用户ID查询一对一聊天对话框ID");
- factory.addParameter("siteid", siteid);
- factory.addParameter_in("tenterprise_userid", new String[]{String.valueOf(userid), String.valueOf(tenterprise_userid)});
- Rows rows = dbConnect.runSqlQuery(factory.getSQL());
- if (!rows.isEmpty()) {
- content.put("timdialogid", rows.get(0).getLong("timdialogid"));
- return query_imdialogMain();
- } else {
- JSONArray usersArray = new JSONArray();
- usersArray.add(String.valueOf(userid));
- usersArray.add(String.valueOf(tenterprise_userid));
- content.put("fimdialogname", username + "-" + getUser(tenterprise_userid).getString("fname"));
- content.put("fimdialogtype", "普通");
- content.put("users", usersArray);
- return insertOrModify();
- }
- }
- /**
- * 群消息查询
- *
- * @return
- */
- public String query_imdialogMessage() {
- long timdialogid = content.getLong("timdialogid");
- /**
- *排序条件设置
- */
- String[] sortfield = {"t1.createdate desc"};
- String sort = getSort(sortfield, "t1.createdate desc");
- SQLFactory timdialogSQL = new SQLFactory(this, "即时通讯群历史消息查询", pageSize, pageNumber, sort);
- timdialogSQL.addParameter("siteid", siteid);
- timdialogSQL.addParameter("timdialogid", timdialogid);
- Rows rows = dbConnect.runSqlQuery(timdialogSQL.getSQL());
- for (Row row : rows) {
- String message = row.getString("message");
- row.put("message", JSONObject.parseObject(message));
- }
- //清除未读消息数
- dbConnect.runSqlUpdate("update timdialogusers set funreadmsgcount=0 where siteid='" + siteid + "' and timdialogid='" + timdialogid + "' and tenterprise_userid='" + userid + "'");
- return getSucReturnObject().setDataByPaging(rows).toString();
- }
- public String restUnReadMsgCount() {
- long timdialogid = content.getLong("timdialogid");
- dbConnect.runSqlUpdate("update timdialogusers set funreadmsgcount=0 where siteid='" + siteid + "' and timdialogid='" + timdialogid + "' and tenterprise_userid='" + userid + "'");
- return getSucReturnObject().toString();
- }
- /**
- * 新建聊天对话框
- *
- * @return
- * @throws D3bException
- * @throws P2Exception
- */
- public String insertOrModify() throws D3bException, P2Exception {
- long timdialogid = content.getLongValue("timdialogid"); //群ID 新增时默认传0
- String fimdialogname = content.getString("fimdialogname", "timdialog.fimdialogname", "群名称");//群名称
- String fimdialogtype = content.getString("fimdialogtype");//对话类型
- String ownertable = content.getString("ownertable");//所有表
- String ownerid = content.getString("ownerid");//所有表ID
- JSONArray usersArray = content.getJSONArray("users");
- ArrayList<String> sqlList = new ArrayList<>();
- PaoSetRemote timdialogSet = getP2ServerSystemPaoSet("timdialog", "siteid='" + siteid + "' and timdialogid='" + timdialogid + "'");
- PaoRemote timdialog = null;
- if (timdialogid <= 0 || timdialogSet.isEmpty()) {
- /**
- * 创建对话框
- */
- timdialog = timdialogSet.addAtEnd();
- timdialog.setValue("siteid", siteid, 11L);//企业ID
- timdialog.setValue("createby", username, 11L);//创建人
- timdialog.setValue("createdate", sysdate, 11L);//创建时间
- timdialog.setValue("fimdialogtype", fimdialogtype, 11L);//对话框类型
- timdialog.setValue("ownertable", ownertable, 11L);//所有表
- timdialog.setValue("ownerid", ownerid, 11L);//所有表ID
- timdialog.setValue("tenterprise_userid", userid, 11L);//创建账号ID
- timdialogid = timdialog.getUniqueIDValue();
- /**
- * 在初始对话框中添加人员
- */
- ArrayList<String> userlist = new ArrayList<>();
- usersArray.add(userid);//默认将创建人员加入群
- for (Object user : usersArray) {
- userlist.add(String.valueOf(user));
- }
- SQLFactory sqlFactory = new SQLFactory(this, "即时通讯群人员添加");
- sqlFactory.addParameter("createby", username);
- sqlFactory.addParameter("timdialogid", timdialogid);
- sqlFactory.addParameter("siteid", siteid);
- sqlFactory.addParameter_in("tenterprise_userid", userlist);
- sqlList.add(sqlFactory.getSQL());
- } else {
- timdialog = timdialogSet.getPao(0);
- }
- timdialog.setValue("fimdialogname", fimdialogname, 11L);//对话框类型
- timdialogSet.save();
- dbConnect.runSqlUpdate(sqlList);
- content.put("timdialogid", timdialogid);
- return query_imdialogMain();
- }
- /**
- * 创建聊天话题
- *
- * @return
- */
- public String createSubject() throws D3bException, P2Exception {
- long timsubjectid = content.getLongValue("timsubjectid"); //话题ID 新增时默认传0
- long timdialogid = content.getLongValue("timdialogid");
- String fcontent = content.getString("timsubject", "timsubject.fcontent", "话题内容");//话题内容
- boolean ischange = timsubjectid > 0;
- PaoSetRemote timsubjectSet = getP2ServerSystemPaoSet("timsubject", "siteid='" + siteid + "' and tagentsid='" + tagentsid + "' and timsubjectid='" + timsubjectid + "'");
- PaoRemote timsubject = null;
- if (timsubjectid <= 0 || timsubjectSet.isEmpty()) {
- timsubject = timsubjectSet.addAtEnd();
- timsubject.setValue("siteid", siteid, 11L);//企业ID
- timsubject.setValue("createby", username, 11L);//创建人
- timsubject.setValue("createdate", sysdate, 11L);//创建时间
- timsubject.setValue("tagentsid", tagentsid, 11L);
- timsubject.setValue("tenterprise_userid", userid, 11L);
- timsubjectid = timsubject.getUniqueIDValue();
- } else {
- timsubject = timsubjectSet.getPao(0);
- }
- PaoSetRemote timsubjectcontentSet = timsubject.getPaoSet("$timsubjectcontent", "timsubjectcontent");
- PaoRemote timsubjectcontent = timsubjectcontentSet.addAtEnd();
- timsubjectcontent.setValue("siteid", siteid, 11L);
- timsubjectcontent.setValue("createdate", sysdate, 11L);
- timsubjectcontent.setValue("timsubjectid", timsubjectid, 11L);
- timsubjectcontent.setValue("fcontent", fcontent, 11L);
- timsubjectSet.save();
- content.put("timsubjectid", timsubjectid);
- if (ischange) {//话题内容变更,通知前端进行数据刷新
- for (long userid : getImDialogUserIds(timdialogid)) {
- if (parameter.websocketClients.containsKey(userid)) {
- JSONObject methodobject = new JSONObject();
- methodobject.put("type", "reflashimdialog");
- methodobject.put("timdialogid", timdialogid);
- for (WebClientSocket webClientSocket : parameter.websocketClients.get(userid).values()) {
- webClientSocket.sendSystemMessage(methodobject);
- }
- }
- }
- }
- return querySubject();
- }
- /**
- * 话题内容查询
- *
- * @return
- */
- public String querySubject() {
- long timsubjectid = content.getLongValue("timsubjectid");
- SQLFactory timsubjectSQL = new SQLFactory(this, "话题查询");
- timsubjectSQL.addParameter("siteid", siteid);
- timsubjectSQL.addParameter("timsubjectid", timsubjectid);
- Rows imsubjectrows = dbConnect.runSqlQuery(timsubjectSQL.getSQL());
- for (Row imsubject : imsubjectrows) {
- SQLFactory timsubjectcontentSQL = new SQLFactory(this, "话题内容查询");
- timsubjectcontentSQL.addParameter("siteid", siteid);
- timsubjectcontentSQL.addParameter("timsubjectid", imsubject.getLong("timsubjectid"));
- Rows imsubjectcontentrows = dbConnect.runSqlQuery(timsubjectcontentSQL.getSQL());
- RowsMap map = getAttachmentUrl("timsubjectconte", imsubjectcontentrows.toArrayList("timsubjectcontenid"));
- for (Row row : imsubjectcontentrows) {
- row.put("attinfos", map.get(row.getString("timsubjectcontenid")));
- }
- imsubject.put("imsubjectcontent", imsubjectcontentrows);
- }
- SQLFactory sqlFactory = new SQLFactory(this, "话题数据分析插入");
- sqlFactory.addParameter("siteid", siteid);
- sqlFactory.addParameter("timsubjectid", timsubjectid);
- sqlFactory.addParameter("tenterprise_userid", userid);
- sqlFactory.addParameter("tagentsid", tagentsid);
- dbConnect.runSqlUpdate(sqlFactory.getSQL());
- return getSucReturnObject().setData(imsubjectrows).toString();
- }
- /**
- * 话题回复
- *
- * @return
- */
- public String subjectAnswer() {
- long timsubjectid = content.getLongValue("timsubjectid");
- dbConnect.runSqlUpdate("update timsubjectanalysis set fisanswer=1,fanswertime=getDate() where siteid='" + siteid + "' and timsubjectid='" + timsubjectid + "' and tenterprise_userid='" + userid + "' and fisanswer=0");
- return getSucReturnObject().toString();
- }
- /**
- * 话题统计信息查询
- *
- * @return
- */
- public String querySubjectAnalysis() {
- long timsubjectid = content.getLongValue("timsubjectid");//话题ID
- long timdialogid = content.getLongValue("timdialogid");//对话框ID
- SQLFactory sqlFactory = new SQLFactory(this, "话题数据分析查询");
- sqlFactory.addParameter("siteid", siteid);
- sqlFactory.addParameter("timsubjectid", timsubjectid);
- sqlFactory.addParameter("timdialogid", timdialogid);
- Rows rows = dbConnect.runSqlQuery(sqlFactory.getSQL());
- for (Row row : rows) {
- row.put("headportraiturl", getHeadPic(row.getLong("tenterprise_userid")));
- }
- RowsMap fisreadmap = rows.toRowsMap("fisread");
- RowsMap fisanswermap = rows.toRowsMap("fisanswer");
- JSONObject object = new JSONObject();
- object.put("readlist", fisreadmap.get("1"));
- object.put("unreadlist", fisreadmap.get("0"));
- object.put("answerlist", fisanswermap.get("1"));
- object.put("unanswerlist", fisanswermap.get("0"));
- return getSucReturnObject().setData(object).toString();
- }
- }
|