From f69a974c235e3013d49598c5facb1167ba0e692a Mon Sep 17 00:00:00 2001 From: Yu Date: Tue, 29 Jun 2021 23:07:32 +0800 Subject: [PATCH] #448 remove superadmin edit btn --- .../com/chatopera/cc/basic/Constants.java | 2 +- .../socketio/handler/AgentEventHandler.java | 21 ++++++++++++++++--- .../resources/templates/admin/user/index.pug | 7 ++++--- .../templates/public/agentstatus.pug | 2 +- contact-center/root/pom.xml | 4 +++- 5 files changed, 27 insertions(+), 9 deletions(-) diff --git a/contact-center/app/src/main/java/com/chatopera/cc/basic/Constants.java b/contact-center/app/src/main/java/com/chatopera/cc/basic/Constants.java index 0de3e7c5..387eae2f 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/basic/Constants.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/basic/Constants.java @@ -116,7 +116,7 @@ public class Constants { // 黑名单 public final static String WEBIM_SOCKETIO_ONLINE_USER_BLACKLIST = "cskefu.im.onlineuser.blacklist"; // 坐席socketio断开到判定为离线的时长 - public final static int WEBIM_SOCKETIO_AGENT_OFFLINE_THRESHOLD = 10; + public final static int WEBIM_SOCKETIO_AGENT_OFFLINE_THRESHOLD = 20; // 发送消息给访客: 接收来自路由的消息并判断渠道 public final static String INSTANT_MESSAGING_MQ_TOPIC_VISITOR = "cskefu.outbound.visitor"; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/socketio/handler/AgentEventHandler.java b/contact-center/app/src/main/java/com/chatopera/cc/socketio/handler/AgentEventHandler.java index 4a9486c0..a9122ecb 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/socketio/handler/AgentEventHandler.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/socketio/handler/AgentEventHandler.java @@ -17,6 +17,7 @@ package com.chatopera.cc.socketio.handler; import com.alibaba.fastjson.JSONObject; +import com.chatopera.cc.acd.ACDAgentService; import com.chatopera.cc.activemq.BrokerPublisher; import com.chatopera.cc.basic.Constants; import com.chatopera.cc.basic.MainContext; @@ -65,6 +66,7 @@ public class AgentEventHandler { private static AgentProxy agentProxy; private static AgentSessionProxy agentSessionProxy; private static UserProxy userProxy; + private static ACDAgentService acdAgentService; @OnConnect public void onConnect(SocketIOClient client) { @@ -109,9 +111,14 @@ public class AgentEventHandler { workSessionRepository.save( MainUtils.createWorkSession(userid, MainUtils.getContextID(client.getSessionId().toString()), - session, orgi, ip, address.getHostName(), admin, count == 0)); + session, orgi, ip, address.getHostName(), admin, count == 0)); NettyClients.getInstance().putAgentEventClient(userid, client); + + final AgentStatus agentStatus = MainContext.getCache().findOneAgentStatusByAgentnoAndOrig(userid, orgi); + if (agentStatus != null && agentStatus.isConnected() && StringUtils.equals(agentStatus.getStatus(), MainContext.AgentStatusEnum.READY.toString())) { + getACDAgentService().assignVisitors(userid, orgi); + } } } @@ -151,8 +158,8 @@ public class AgentEventHandler { payload.put("orgi", orgi); payload.put("isAdmin", StringUtils.isNotBlank(admin) && admin.equalsIgnoreCase("true")); getBrokerPublisher().send(Constants.WEBIM_SOCKETIO_AGENT_DISCONNECT, payload.toJSONString(), - false, - Constants.WEBIM_SOCKETIO_AGENT_OFFLINE_THRESHOLD); + false, + Constants.WEBIM_SOCKETIO_AGENT_OFFLINE_THRESHOLD); } } @@ -377,4 +384,12 @@ public class AgentEventHandler { } return userProxy; } + + public static ACDAgentService getACDAgentService() { + if (acdAgentService == null) { + acdAgentService = MainContext.getContext().getBean(ACDAgentService.class); + } + return acdAgentService; + } + } \ No newline at end of file diff --git a/contact-center/app/src/main/resources/templates/admin/user/index.pug b/contact-center/app/src/main/resources/templates/admin/user/index.pug index 1ce7817a..12e2029c 100644 --- a/contact-center/app/src/main/resources/templates/admin/user/index.pug +++ b/contact-center/app/src/main/resources/templates/admin/user/index.pug @@ -70,9 +70,10 @@ block content else i.layui-icon(style="color:#19a55d") ဆ td(style="white-space:nowrap;" nowrap="nowrap") - a(href='/admin/user/edit.html?id=' + user.id, data-toggle="ajax" data-width="750" data-height="540" data-title="编辑用户信息") - i.layui-icon  - | 编辑 + if !user.superadmin && user.datastatus != true + a(href='/admin/user/edit.html?id=' + user.id, data-toggle="ajax" data-width="750" data-height="540" data-title="编辑用户信息") + i.layui-icon  + | 编辑 if !user.admin && user.datastatus != true a(href='/admin/user/delete.html?id=' + user.id, style="margin-left:10px;" data-toggle="tip" data-title="请确认是否删除记录?") i.layui-icon(style="color:red") ဆ diff --git a/contact-center/app/src/main/resources/templates/public/agentstatus.pug b/contact-center/app/src/main/resources/templates/public/agentstatus.pug index fec03e6e..2843119d 100644 --- a/contact-center/app/src/main/resources/templates/public/agentstatus.pug +++ b/contact-center/app/src/main/resources/templates/public/agentstatus.pug @@ -2,7 +2,7 @@ | 服务中的人数:#{agentStatusReport.users}人,当前排队人数:#{agentStatusReport.inquene}人,在线坐席数:#{agentStatusReport.agents}人,坐席忙:#{agentStatusReport.busy}人 #agentstatus.layui-unselect.layui-form-switch.checkStatus.lay-filter(class={ 'layui-form-onswitch': agentStatus.status == 'ready', - 'layui-form-offswitch': agentStatus.status == 'notready' + 'layui-form-offswitch': agentStatus.status != 'ready' }) i.checkStatusI a.iframe_btn(href="javascript:void(0)" onclick="return false;" data-title="首页" data-href="/apps/content.html" data-id="maincontent" data-type="tabChange" style="display: none;") diff --git a/contact-center/root/pom.xml b/contact-center/root/pom.xml index fc226ed8..0cdd8a07 100644 --- a/contact-center/root/pom.xml +++ b/contact-center/root/pom.xml @@ -55,10 +55,12 @@ + + de.neuland-bfi spring-pug4j - 2.0.0-alpha-2 + 2.0.0-alpha-4-SNAPSHOT