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