1
0
mirror of https://github.com/chatopera/cosin.git synced 2025-08-01 16:38:02 +08:00

Closed https://github.com/chatopera/cosin/issues/340 fix agent not show up in skill group

This commit is contained in:
Hai Liang Wang 2020-08-25 13:44:05 +08:00
parent 0b9dbec7fd
commit 25d67d6ff5
4 changed files with 37 additions and 40 deletions

View File

@ -281,7 +281,7 @@ public class IMController extends Handler {
/** /**
* 查询坐席 缓存 * 查询坐席 缓存
*/ */
view.addObject("agentList", OnlineUserProxy.agents(MainContext.SYSTEM_ORGI, true)); view.addObject("agentList", OnlineUserProxy.agents(MainContext.SYSTEM_ORGI));
} }
view.addObject("traceid", userHistory.getId()); view.addObject("traceid", userHistory.getId());

View File

@ -100,7 +100,7 @@ public class StatsController extends Handler {
/** /**
* 查询坐席 缓存 * 查询坐席 缓存
*/ */
map.addAttribute("agentList", OnlineUserProxy.agents(super.getOrgi(request), true)); map.addAttribute("agentList", OnlineUserProxy.agents(super.getOrgi(request)));
return request(super.createAppsTempletResponse("/apps/service/stats/coment")); return request(super.createAppsTempletResponse("/apps/service/stats/coment"));
} }
@ -154,7 +154,7 @@ public class StatsController extends Handler {
/** /**
* 查询坐席 缓存 * 查询坐席 缓存
*/ */
map.addAttribute("agentList", OnlineUserProxy.agents(super.getOrgi(request), true)); map.addAttribute("agentList", OnlineUserProxy.agents(super.getOrgi(request)));
return request(super.createAppsTempletResponse("/apps/service/stats/consult")); return request(super.createAppsTempletResponse("/apps/service/stats/consult"));
} }

View File

@ -63,6 +63,7 @@ public class OnlineUserProxy {
private static AgentUserContactsRepository agentUserContactsRes; private static AgentUserContactsRepository agentUserContactsRes;
private static ContactsRepository contactsRes; private static ContactsRepository contactsRes;
private static UserProxy userProxy; private static UserProxy userProxy;
private static OrganRepository organRes;
/** /**
* @param id * @param id
@ -325,47 +326,36 @@ public class OnlineUserProxy {
/** /**
* @param orgi * @param orgi 一个坐席可以添加到多个组织原租户共享功能废弃
* @param isJudgeShare
* @return * @return
*/ */
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public static List<User> agents(String orgi, boolean isJudgeShare) { public static List<User> agents(String orgi) {
String origOrig = orgi; String origOrig = orgi;
boolean isShare = false;
if (isJudgeShare) { List<User> agentList = getUserRes().findByOrgiAndAgentAndDatastatus(orgi, true, false);
SystemConfig systemConfig = MainUtils.getSystemConfig(); List<User> agentTempList = new ArrayList<User>();
if (systemConfig != null && systemConfig.isEnabletneant() && systemConfig.isTenantshare()) { List<Organ> skillOrgansByOrgi = getOrganRes().findByOrgiAndSkill(origOrig, true);
orgi = MainContext.SYSTEM_ORGI;
isShare = true; if (!skillOrgansByOrgi.isEmpty()) {
}
}
List<User> agentList = getCache().findOneSystemByIdAndOrgi(Constants.CACHE_AGENT + origOrig, origOrig);
List<User> agentTempList = null;
if (agentList == null) {
agentList = getUserRes().findByOrgiAndAgentAndDatastatus(orgi, true, false);
agentTempList = new ArrayList<User>();
// 共享的话 查出绑定的组织
if (isShare) {
List<OrgiSkillRel> orgiSkillRelList = getOrgiSkillRelRes().findByOrgi(origOrig);
if (!orgiSkillRelList.isEmpty()) {
for (User user : agentList) { for (User user : agentList) {
// TODO 此处的查询处理比较多应使用缓存 // 跳过管理员角色用户不显示在技能组列表
if (user.isAdmin() || user.isSuperadmin()) continue;
// 只显示在线的客服跳过离线的客服
if (getCache().findOneAgentStatusByAgentnoAndOrig(user.getId(), origOrig) == null) continue;
// 一个用户可隶属于多个组织 // 一个用户可隶属于多个组织
getUserProxy().attachOrgansPropertiesForUser(user); getUserProxy().attachOrgansPropertiesForUser(user);
for (OrgiSkillRel rel : orgiSkillRelList) { for (Organ organ : skillOrgansByOrgi) {
if (user.getOrgans().size() > 0 && user.inAffiliates(rel.getSkillid())) { if (user.getOrgans().size() > 0 && user.inAffiliates(organ.getId())) {
agentTempList.add(user); agentTempList.add(user);
} }
} }
} }
} }
agentList = agentTempList; agentList = agentTempList;
}
if (agentList.size() > 0) {
getCache().putSystemListByIdAndOrgi(Constants.CACHE_AGENT + origOrig, origOrig, agentList);
}
}
return agentList; return agentList;
} }
@ -1030,6 +1020,13 @@ public class OnlineUserProxy {
return userRes; return userRes;
} }
private static OrganRepository getOrganRes() {
if (organRes == null) {
organRes = MainContext.getContext().getBean(OrganRepository.class);
}
return organRes;
}
private static OrgiSkillRelRepository getOrgiSkillRelRes() { private static OrgiSkillRelRepository getOrgiSkillRelRes() {
if (orgiSkillRelRes == null) { if (orgiSkillRelRes == null) {
orgiSkillRelRes = MainContext.getContext().getBean(OrgiSkillRelRepository.class); orgiSkillRelRes = MainContext.getContext().getBean(OrgiSkillRelRepository.class);

View File

@ -268,7 +268,7 @@ var cskefu = {
<#if inviteData.consult_skill_numbers == 0 || skill_index lt inviteData.consult_skill_numbers > <#if inviteData.consult_skill_numbers == 0 || skill_index lt inviteData.consult_skill_numbers >
<#assign skillNum = 0 > <#assign skillNum = 0 >
<#list agentList as agent> <#list agentList as agent>
<#if agent.organ?? && agent.organ == skill.id> <#if agent.skills?? && agent.skills[skill.id]??>
<#assign skillNum = skillNum+1 > <#assign skillNum = skillNum+1 >
</#if> </#if>
</#list> </#list>