diff --git a/README.md b/README.md
index 393458cb..916d125c 100644
--- a/README.md
+++ b/README.md
@@ -56,7 +56,7 @@
:yum: TA 们这样评价春松客服
-
+
diff --git a/contact-center/app/src/main/java/com/chatopera/cc/acd/ACDPolicyService.java b/contact-center/app/src/main/java/com/chatopera/cc/acd/ACDPolicyService.java
index a154b0ab..dddc5c08 100644
--- a/contact-center/app/src/main/java/com/chatopera/cc/acd/ACDPolicyService.java
+++ b/contact-center/app/src/main/java/com/chatopera/cc/acd/ACDPolicyService.java
@@ -22,6 +22,7 @@ import com.chatopera.cc.basic.MainUtils;
import com.chatopera.cc.cache.Cache;
import com.chatopera.cc.model.*;
import com.chatopera.cc.persistence.repository.*;
+import com.chatopera.cc.proxy.OrganProxy;
import com.chatopera.cc.util.HashMapUtils;
import com.chatopera.cc.util.WebIMReport;
import org.apache.commons.lang.StringUtils;
@@ -57,6 +58,9 @@ public class ACDPolicyService {
@Autowired
private SNSAccountRepository snsAccountRes;
+ @Autowired
+ private OrganProxy organProxy;
+
/**
* 载入坐席 ACD策略配置
*
@@ -234,10 +238,15 @@ public class ACDPolicyService {
*/
SNSAccount snsAccount = snsAccountRes.findBySnsidAndOrgi(agentUser.getAppid(), orgi);
+ Map allOrgan = organProxy.findAllOrganByParentIdAndOrgi(snsAccount.getOrgan(), orgi);
+// allOrgan.keySet().retainAll
// 对于该租户的所有客服
for (final Map.Entry entry : map.entrySet()) {
- if ((!entry.getValue().isBusy()) && (entry.getValue().getUsers() < sessionConfig.getMaxuser()) && entry.getValue().getSkills().containsKey(snsAccount.getOrgan())) {
+ Set agentSkills = entry.getValue().getSkills().keySet();
+ agentSkills.retainAll(allOrgan.keySet());
+
+ if ((!entry.getValue().isBusy()) && (entry.getValue().getUsers() < sessionConfig.getMaxuser()) && agentSkills.size() > 0) {
agentStatuses.add(entry.getValue());
logger.info(
"[filterOutAvailableAgentStatus] find ready agent {}, agentname {}, status {}, service {}/{}, skills {}",
diff --git a/contact-center/app/src/main/java/com/chatopera/cc/controller/admin/channel/SNSAccountIMController.java b/contact-center/app/src/main/java/com/chatopera/cc/controller/admin/channel/SNSAccountIMController.java
index f511f1d1..4a647737 100644
--- a/contact-center/app/src/main/java/com/chatopera/cc/controller/admin/channel/SNSAccountIMController.java
+++ b/contact-center/app/src/main/java/com/chatopera/cc/controller/admin/channel/SNSAccountIMController.java
@@ -21,6 +21,7 @@ import com.chatopera.cc.basic.MainUtils;
import com.chatopera.cc.controller.Handler;
import com.chatopera.cc.model.*;
import com.chatopera.cc.persistence.repository.ConsultInviteRepository;
+import com.chatopera.cc.persistence.repository.OrganRepository;
import com.chatopera.cc.persistence.repository.SNSAccountRepository;
import com.chatopera.cc.persistence.repository.SecretRepository;
import com.chatopera.cc.proxy.OrganProxy;
@@ -61,6 +62,9 @@ public class SNSAccountIMController extends Handler {
@Autowired
private OrganProxy organProxy;
+ @Autowired
+ private OrganRepository organRes;
+
@RequestMapping("/index")
@Menu(type = "admin", subtype = "im", access = false, admin = true)
public ModelAndView index(ModelMap map, HttpServletRequest request, @Valid String execute, @RequestParam(name = "status", required = false) String status) {
@@ -81,6 +85,8 @@ public class SNSAccountIMController extends Handler {
@RequestMapping("/add")
@Menu(type = "admin", subtype = "send", access = false, admin = true)
public ModelAndView add(ModelMap map, HttpServletRequest request) {
+ Organ currentOrgan = super.getOrgan(request);
+ map.put("organ", currentOrgan);
return request(super.createView("/admin/channel/im/add"));
}
@@ -147,7 +153,10 @@ public class SNSAccountIMController extends Handler {
@RequestMapping("/edit")
@Menu(type = "admin", subtype = "send", access = false, admin = true)
public ModelAndView edit(ModelMap map, HttpServletRequest request, @Valid String id) {
- map.addAttribute("snsAccount", snsAccountRes.findByIdAndOrgi(id, super.getOrgi(request)));
+ SNSAccount snsAccount = snsAccountRes.findByIdAndOrgi(id, super.getOrgi(request));
+ Organ organ = organRes.findOne(snsAccount.getOrgan());
+ map.put("organ", organ);
+ map.addAttribute("snsAccount", snsAccount);
return request(super.createView("/admin/channel/im/edit"));
}
diff --git a/contact-center/app/src/main/java/com/chatopera/cc/controller/apps/IMController.java b/contact-center/app/src/main/java/com/chatopera/cc/controller/apps/IMController.java
index 3ce7c3dd..e6367bd9 100644
--- a/contact-center/app/src/main/java/com/chatopera/cc/controller/apps/IMController.java
+++ b/contact-center/app/src/main/java/com/chatopera/cc/controller/apps/IMController.java
@@ -49,12 +49,7 @@ import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.util.FileCopyUtils;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
@@ -1195,7 +1190,6 @@ public class IMController extends Handler {
return params;
}
-
@RequestMapping("/leavemsg/save")
@Menu(type = "admin", subtype = "user")
public ModelAndView leavemsgsave(HttpServletRequest request,
diff --git a/contact-center/app/src/main/java/com/chatopera/cc/proxy/OrganProxy.java b/contact-center/app/src/main/java/com/chatopera/cc/proxy/OrganProxy.java
index de7467ec..535de24f 100644
--- a/contact-center/app/src/main/java/com/chatopera/cc/proxy/OrganProxy.java
+++ b/contact-center/app/src/main/java/com/chatopera/cc/proxy/OrganProxy.java
@@ -98,6 +98,14 @@ public class OrganProxy {
}
}
+ public Map findAllOrganByParentIdAndOrgi(String organId, String orgi) {
+ Map result = new HashMap<>();
+ if (StringUtils.isNotBlank(organId)) {
+ processChild(result, organId, orgi);
+ }
+ return result;
+ }
+
public Map findAllOrganByParentAndOrgi(Organ organ, String orgi) {
Map result = new HashMap<>();
if (organ != null) {
diff --git a/contact-center/app/src/main/resources/templates/admin/channel/im/add.pug b/contact-center/app/src/main/resources/templates/admin/channel/im/add.pug
index dac7edd5..55e4beef 100644
--- a/contact-center/app/src/main/resources/templates/admin/channel/im/add.pug
+++ b/contact-center/app/src/main/resources/templates/admin/channel/im/add.pug
@@ -1,5 +1,13 @@
.uk-layui-form
form.layui-form(action="/admin/im/save.html", method="post")
+ .layui-form-item
+ .layui-inline
+ label.layui-form-label(style="width:150px;") 组织机构:
+ .layui-input-inline
+ input.layui-input(type="text", name="organ", required="", lay-verify="required", autocomplete="off",value="#{organ.name}",disabled="disabled")
+ .layui-form-mid.layui-word-aux
+ font(color="red") *
+ | 默认为当前组织机构,在右上角切换
.layui-form-item
.layui-inline
label.layui-form-label(style="width:150px;") 网站名称:
diff --git a/contact-center/app/src/main/resources/templates/admin/channel/im/edit.pug b/contact-center/app/src/main/resources/templates/admin/channel/im/edit.pug
index 99f5bf0a..b069b968 100644
--- a/contact-center/app/src/main/resources/templates/admin/channel/im/edit.pug
+++ b/contact-center/app/src/main/resources/templates/admin/channel/im/edit.pug
@@ -1,6 +1,14 @@
.uk-layui-form
form.layui-form(action="/admin/im/update.html", method="post")
input(type="hidden", name="id", value=snsAccount.id)
+ .layui-form-item
+ .layui-inline
+ label.layui-form-label(style="width:150px;") 组织机构:
+ .layui-input-inline
+ input.layui-input(type="text", name="organ", required="", lay-verify="required", autocomplete="off",value="#{organ.name}",disabled="disabled")
+ .layui-form-mid.layui-word-aux
+ font(color="red") *
+ | 默认为当前组织机构,在右上角切换
.layui-form-item
.layui-inline
label.layui-form-label(style="width:150px;") 网站名称:
diff --git a/contact-center/app/src/main/resources/templates/admin/channel/im/index.pug b/contact-center/app/src/main/resources/templates/admin/channel/im/index.pug
index 76c05a12..3aae9a89 100644
--- a/contact-center/app/src/main/resources/templates/admin/channel/im/index.pug
+++ b/contact-center/app/src/main/resources/templates/admin/channel/im/index.pug
@@ -7,7 +7,7 @@ block content
| 网站列表 (#{snsAccountList.totalElements})
span(style="float:right;")
if user.superadmin || user.admin
- button.layui-btn.layui-btn-small.green(href="/admin/im/add.html", data-toggle="ajax", data-width="550", data-height="300", data-title="创建新网站") 创建新网站
+ button.layui-btn.layui-btn-small.green(href="/admin/im/add.html", data-toggle="ajax", data-width="600", data-height="300", data-title="创建新网站") 创建新网站
.ror(style="padding:5px;")
.col-lg-12
table.layui-table(lay-skin="line", style="table-layout: fixed; word-break: break-all")
@@ -30,7 +30,7 @@ block content
i.layui-icon
| 接入
if user.superadmin || user.admin
- a(href="/admin/im/edit.html?id=" + snsAccount.id, data-toggle="ajax", data-width="550", data-height="300", data-title="编辑网站")
+ a(href="/admin/im/edit.html?id=" + snsAccount.id, data-toggle="ajax", data-width="600", data-height="300", data-title="编辑网站")
i.layui-icon
| 编辑
if (user.superadmin || user.admin) && snsAccount.datastatus != true
diff --git a/public/assets/screenshot-20211026-103937.png b/public/assets/screenshot-20211026-103937.png
deleted file mode 100644
index 23386c45..00000000
Binary files a/public/assets/screenshot-20211026-103937.png and /dev/null differ