ソースを参照

即时聊天群列表新增未阅读消息数字段及最新消息

沈静伟 4 年 前
コミット
99c448f171

+ 1 - 1
src/dsb/com/cnd3b/restcontroller/customer/notice/SQL/公告阅读开始.sql

@@ -1,3 +1,3 @@
-update tnotice set freadcount=freadcount+1 where siteid=$siteid$ and tnoticeid=$tnoticeid$
+update tnotice set freadcount=isnull(freadcount,0)+1 where siteid=$siteid$ and tnoticeid=$tnoticeid$
 insert into tnotice_userdata(siteid,rmkenable,createby,createdate,closedate,tenterprise_userid,tnoticeid,tagentsid)
 select $siteid$,0,$createby$,GETDATE(),DATEADD(MINUTE,5,GETDATE()),$tenterprise_userid$,$tnoticeid$,$tagentsid$

+ 2 - 2
src/dsb/com/cnd3b/restcontroller/customer/supplyanddemand/SQL/即时通讯群人员添加.sql

@@ -2,9 +2,9 @@ declare @timdialogusersid bigint
 set @timdialogusersid = (select isnull(MAX(timdialogusersid), 0) from timdialogusers)
 
 insert into timdialogusers
-(timdialogusersid, siteid, createby, changeby, createdate, changedate, rmkenable, fimdialognotes,fisremove,fname, tenterprise_userid,timdialogid)
+(timdialogusersid, siteid, createby, changeby, createdate, changedate, rmkenable, fimdialognotes,fisremove,fname, tenterprise_userid,timdialogid,funreadmsgcount)
 select @timdialogusersid + ROW_NUMBER() over (order by t1.fname),
-       t1.siteid, $createby$, $createby$, getdate(), getdate(), 0, null,0,t1.fname, t1.tenterprise_userid,$timdialogid$
+       t1.siteid, $createby$, $createby$, getdate(), getdate(), 0, null,0,t1.fname, t1.tenterprise_userid,$timdialogid$,0
 from tenterprise_users t1
 where t1.siteid=$siteid$ and t1.tenterprise_userid in $tenterprise_userid$
 and not exists(select * from timdialogusers where siteid=$siteid$ and timdialogid=$timdialogid$ and tenterprise_userid=t1.tenterprise_userid )

+ 7 - 0
src/dsb/com/cnd3b/restcontroller/customer/supplyanddemand/SQL/即时通讯群最新消息查询.sql

@@ -0,0 +1,7 @@
+select t1.timdialogid,t1.fmessagetype,t1.fmessageobj,t3.fname,t1.createdate,t1.ownertable,t1.ownerid from timdialogmessage t1
+inner join (
+select siteid,timdialogid,MAX(timdialogmessageid)timdialogmessageid from timdialogmessage
+where siteid=$siteid$ and timdialogid in $timdialogid$
+group by siteid,timdialogid
+)t2 on t1.siteid=t2.siteid and t1.timdialogid=t2.timdialogid
+left join timdialogusers t3 on t1.siteid=t3.siteid and t1.timdialogid=t3.timdialogid and t1.tenterprise_userid=t3.tenterprise_userid

+ 3 - 2
src/dsb/com/cnd3b/restcontroller/customer/supplyanddemand/SQL/我的供需详情查询_对话框列表.sql

@@ -1,6 +1,7 @@
-select t1.timdialogid,t4.fagentname,t2.fname  from timdialog t1
+select t1.timdialogid,t4.fagentname,t2.fname,t2.funreadmsgcount from timdialog t1
 inner join timdialogusers t2 on t1.siteid=t2.siteid and t1.timdialogid=t2.timdialogid
 inner join tenterprise_users t3 on t2.siteid=t3.siteid and t2.tenterprise_userid=t3.tenterprise_userid
 inner join tagents t4 on t3.siteid=t4.siteid and t3.tagentsid=t4.tagentsid
 where t1.siteid=$siteid$ and t1.ownertable='tsupplyanddemand' and t1.ownerid=$tsupplyanddemandid$
-and t2.tenterprise_userid!=$userid$
+and t2.tenterprise_userid!=$userid$
+order by (select MAX(timdialogmessageid)timdialogmessageid from timdialogmessage where siteid=$siteid$ and timdialogid=t1.timdialogid group by timdialogid)desc

+ 48 - 13
src/dsb/com/cnd3b/restcontroller/customer/supplyanddemand/supplyanddemand.java

@@ -1,5 +1,7 @@
 package com.cnd3b.restcontroller.customer.supplyanddemand;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.cnd3b.common.Controller;
 import com.cnd3b.common.D3bException;
@@ -89,12 +91,25 @@ public class supplyanddemand extends Controller {
             row.put("attinfos", attinfoRowsMap.get(row.getString("tsupplyanddemandid")));
             //创建者头像
             row.put("headportraiturl", getHeadPic(row.getLong("tenterprise_userid")));
+        }
+        return getSucReturnObject().setData(rows).toString();
+    }
 
-            Rows imdialogRows = dbConnect.runSqlQuery("select timdialogid from timdialog where siteid='" + siteid + "' and ownertable='tsupplyanddemand' and ownerid='" + tsupplyanddemandid + "' and tenterprise_userid=" + userid);
-            long timdialogid;
-            if (!imdialogRows.isEmpty()) {
-                timdialogid = imdialogRows.get(0).getLong("timdialogid");
-            } else {
+    /**
+     * 一键联系(创建聊天对话框)
+     *
+     * @return
+     */
+    public String OpenImDialog() throws P2Exception {
+        long tsupplyanddemandid = content.getLong("tsupplyanddemandid");
+
+        Rows imdialogRows = dbConnect.runSqlQuery("select timdialogid,tenterprise_userid from timdialog where siteid='" + siteid + "' and ownertable='tsupplyanddemand' and ownerid='" + tsupplyanddemandid + "' and tenterprise_userid=" + userid);
+        long timdialogid;
+        if (!imdialogRows.isEmpty()) {
+            timdialogid = imdialogRows.get(0).getLong("timdialogid");
+        } else {
+            Rows rows = dbConnect.runSqlQuery("select ftitle from tsupplyanddemand where siteid='" + siteid + "' and tsupplyanddemandid='" + tsupplyanddemandid + "'");
+            if (!rows.isEmpty()) {
                 //聊天对话框不存在时,自动生成一个聊天对话框
                 PaoSetRemote timdialogSet = getP2ServerSystemPaoSet("timdialog");
                 PaoRemote timdialog = timdialogSet.addAtEnd();
@@ -105,7 +120,7 @@ public class supplyanddemand extends Controller {
                 timdialog.setValue("ownertable", "tsupplyanddemand", 11L);//所有表
                 timdialog.setValue("ownerid", tsupplyanddemandid, 11L);//所有表ID
                 timdialog.setValue("tenterprise_userid", userid, 11L);//创建账号ID
-                timdialog.setValue("fimdialogname", row.getString("ftitle"), 11L);//对话框类型
+                timdialog.setValue("fimdialogname", rows.get(0).getString("ftitle"), 11L);
                 timdialogid = timdialog.getUniqueIDValue();
                 timdialogSet.save();
 
@@ -113,12 +128,18 @@ public class supplyanddemand extends Controller {
                 addusers.addParameter("createby", username);
                 addusers.addParameter("timdialogid", timdialogid);
                 addusers.addParameter("siteid", siteid);
-                addusers.addParameter_in("tenterprise_userid", new String[]{String.valueOf(userid), row.getString("tenterprise_userid")});
+                addusers.addParameter_in("tenterprise_userid", new String[]{String.valueOf(userid), rows.get(0).getString("tenterprise_userid")});
                 dbConnect.runSqlUpdate(addusers.getSQL());
+            } else {
+                return getErrReturnObject().setErrMsg("一键联系失败!").toString();
             }
-            row.put("timdialogid", timdialogid);
         }
-        return getSucReturnObject().setData(rows).toString();
+        JSONObject object = new JSONObject();
+        object.put("timdialogid", timdialogid);
+
+        JSONArray array = new JSONArray();
+        array.add(object);
+        return getSucReturnObject().setData(array).toString();
     }
 
     /**
@@ -186,6 +207,15 @@ public class supplyanddemand extends Controller {
         dialoglistSQL.addParameter("tsupplyanddemandid", tsupplyanddemandid);
         dialoglistSQL.addParameter("userid", userid);
         Rows dialogrows = dbConnect.runSqlQuery(dialoglistSQL.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 : dialogrows) {
+            row.put("latestnews", newmsgmap.get(row.getString("timdialogid")));//最新消息
+        }
+
         RowsMap attinfoRowsMap = getAttachmentUrl("tsupplyanddemand", rows.toArrayList("tsupplyanddemandid"));
         for (Row row : rows) {
             row.put("attinfos", attinfoRowsMap.get(row.getString("tsupplyanddemandid")));
@@ -193,7 +223,6 @@ public class supplyanddemand extends Controller {
             //创建者头像
             row.put("headportraiturl", getHeadPic(row.getLong("tenterprise_userid")));
         }
-
         return getSucReturnObject().setData(rows).toString();
     }
 
@@ -253,18 +282,24 @@ public class supplyanddemand extends Controller {
         }
         switch (fstatus) {
             case "新建": {
-                dbConnect.runSqlUpdate("update tsupplyanddemand set fstatus='新建',checkby=null,checkdate=null where siteid='" + siteid + "' and tagentsid='" + tagentsid + "' and tsupplyanddemandid='" + tsupplyanddemandid + "'");
+                dbConnect.runSqlUpdate("update tsupplyanddemand set fstatus='新建',changeby='" + username + "',changedate=getDate(),checkby=null,checkdate=null where siteid='" + siteid + "' and tagentsid='" + tagentsid + "' and tsupplyanddemandid='" + tsupplyanddemandid + "'");
                 break;
             }
             case "发布": {
                 if (!"新建".equals(rows.get(0).getString("fstatus"))) {
                     return getErrReturnObject().setErrMsg("当前状态不可发布").toString();
                 }
-                dbConnect.runSqlUpdate("update tsupplyanddemand set fstatus='待对接',checkby='" + username + "',checkdate=getDate() where siteid='" + siteid + "' and tagentsid='" + tagentsid + "' and tsupplyanddemandid='" + tsupplyanddemandid + "'");
+                dbConnect.runSqlUpdate("update tsupplyanddemand set fstatus='待对接',changeby='" + username + "',changedate=getDate(),checkby='" + username + "',checkdate=getDate() where siteid='" + siteid + "' and tagentsid='" + tagentsid + "' and tsupplyanddemandid='" + tsupplyanddemandid + "'");
+                break;
+            }
+            case "已解决": {
+                long tenterprise_userid = content.getLong("tenterprise_userid");
+                long tcooperationagentsid = getUser(tenterprise_userid).getLong("tagentsid");
+                dbConnect.runSqlUpdate("update tsupplyanddemand set fstatus='已解决',changeby='" + username + "',changedate=getDate(),tcooperationagentsid='" + tcooperationagentsid + "' where siteid='" + siteid + "' and tagentsid='" + tagentsid + "' and tsupplyanddemandid='" + tsupplyanddemandid + "'");
                 break;
             }
             default: {
-                dbConnect.runSqlUpdate("update tsupplyanddemand set fstatus='" + fstatus + "' where siteid='" + siteid + "' and tagentsid='" + tagentsid + "' and tsupplyanddemandid='" + tsupplyanddemandid + "'");
+                dbConnect.runSqlUpdate("update tsupplyanddemand set fstatus='" + fstatus + "',changeby='" + username + "',changedate=getDate() where siteid='" + siteid + "' and tagentsid='" + tagentsid + "' and tsupplyanddemandid='" + tsupplyanddemandid + "'");
                 break;
             }
         }

+ 4 - 2
src/dsb/com/cnd3b/restcontroller/system/im/imdialog/SQL/即时通讯普通群列表查询.sql

@@ -1,4 +1,6 @@
-select t1.timdialogid,t1.ownerid,t1.ownertable,t1.fimdialogtype,t1.fimdialogname,t2.fimdialognotes,t2.createdate as fjoindate,t2.fname,t2.timdialogusersid from timdialog t1
+select t1.timdialogid,t1.ownerid,t1.ownertable,t1.fimdialogtype,t1.fimdialogname,t2.fimdialognotes,
+t2.createdate as fjoindate,t2.fname,t2.timdialogusersid,t2.funreadmsgcount from timdialog t1
 inner join timdialogusers t2 on t1.siteid=t2.siteid and t1.timdialogid=t2.timdialogid
 where t1.siteid=$siteid$ and t1.fimdialogtype='ÆÕͨ' and t2.tenterprise_userid=$tenterprise_userid$ and t2.fisremove=0
-and $where$
+and $where$
+order by (select MAX(timdialogmessageid)timdialogmessageid from timdialogmessage where siteid=$siteid$ and timdialogid=t1.timdialogid group by timdialogid)desc

+ 7 - 0
src/dsb/com/cnd3b/restcontroller/system/im/imdialog/SQL/即时通讯普通群最新消息查询.sql

@@ -0,0 +1,7 @@
+select t1.timdialogid,t1.fmessagetype,t1.fmessageobj,t3.fname,t1.createdate,t1.ownertable,t1.ownerid from timdialogmessage t1
+inner join (
+select siteid,timdialogid,MAX(timdialogmessageid)timdialogmessageid from timdialogmessage
+where siteid=$siteid$ and timdialogid in $timdialogid$
+group by siteid,timdialogid
+)t2 on t1.siteid=t2.siteid and t1.timdialogid=t2.timdialogid
+left join timdialogusers t3 on t1.siteid=t3.siteid and t1.timdialogid=t3.timdialogid and t1.tenterprise_userid=t3.tenterprise_userid

+ 2 - 2
src/dsb/com/cnd3b/restcontroller/system/im/imdialog/SQL/即时通讯群人员添加.sql

@@ -2,9 +2,9 @@ declare @timdialogusersid bigint
 set @timdialogusersid = (select isnull(MAX(timdialogusersid), 0) from timdialogusers)
 
 insert into timdialogusers
-(timdialogusersid, siteid, createby, changeby, createdate, changedate, rmkenable, fimdialognotes,fisremove,fname, tenterprise_userid,timdialogid)
+(timdialogusersid, siteid, createby, changeby, createdate, changedate, rmkenable, fimdialognotes,fisremove,fname, tenterprise_userid,timdialogid,funreadmsgcount)
 select @timdialogusersid + ROW_NUMBER() over (order by t1.fname),
-       t1.siteid, $createby$, $createby$, getdate(), getdate(), 0, null,0,t1.fname, t1.tenterprise_userid,$timdialogid$
+       t1.siteid, $createby$, $createby$, getdate(), getdate(), 0, null,0,t1.fname, t1.tenterprise_userid,$timdialogid$,0
 from tenterprise_users t1
 where t1.siteid=$siteid$ and t1.tenterprise_userid in $tenterprise_userid$
 and not exists(select * from timdialogusers where siteid=$siteid$ and timdialogid=$timdialogid$ and tenterprise_userid=t1.tenterprise_userid )

+ 22 - 2
src/dsb/com/cnd3b/restcontroller/system/im/imdialog/imdialog.java

@@ -6,6 +6,7 @@ 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 p2.pao.PaoRemote;
 import p2.pao.PaoSetRemote;
@@ -47,6 +48,14 @@ public class imdialog extends Controller {
         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) {
+            row.put("latestnews", newmsgmap.get(row.getString("timdialogid")));//最新消息
+        }
         return getSucReturnObject().setData(rows).saveToDataPool().toString();
     }
 
@@ -56,10 +65,11 @@ public class imdialog extends Controller {
      * @return
      */
     public String query_imdialogMain() {
+        long timdialogid = content.getLong("timdialogid");
         SQLFactory timdialogSQL = new SQLFactory(this, "即时通讯群主界面查询");
         timdialogSQL.addParameter("siteid", siteid);
         timdialogSQL.addParameter("tenterprise_userid", userid);
-        timdialogSQL.addParameter("timdialogid", content.getString("timdialogid"));
+        timdialogSQL.addParameter("timdialogid", timdialogid);
 
         Rows rows = dbConnect.runSqlQuery(timdialogSQL.getSQL());
         for (Row row : rows) {
@@ -78,6 +88,7 @@ public class imdialog extends Controller {
      * @return
      */
     public String query_imdialogMessage() {
+        long timdialogid = content.getLong("timdialogid");
         /**
          *排序条件设置
          */
@@ -85,15 +96,24 @@ public class imdialog extends Controller {
         String sort = getSort(sortfield, "t1.createdate desc");
         SQLFactory timdialogSQL = new SQLFactory(this, "即时通讯群历史消息查询", pageSize, pageNumber, sort);
         timdialogSQL.addParameter("siteid", siteid);
-        timdialogSQL.addParameter("timdialogid", content.getString("timdialogid"));
+        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();
+    }
+
+
     /**
      * 新建聊天对话框
      *

+ 2 - 2
src/dsb/com/cnd3b/websocketcontroller/message/SQL/即时通讯群消息插入.sql

@@ -22,5 +22,5 @@ INSERT INTO timdialogmessage
            ,$fmessagetype$
            ,$ownerid$
            ,$ownertable$)
-
-
+--ȺÆäËû³ÉԱδ¶ÁÏûÏ¢Êý+1
+update timdialogusers set funreadmsgcount=isnull(funreadmsgcount,0)+1where siteid=$siteid$ and timdialogid=$timdialogid$ and tenterprise_userid!=$tenterprise_userid$