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:
parent
0b9dbec7fd
commit
25d67d6ff5
@ -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());
|
||||
|
@ -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"));
|
||||
}
|
||||
@ -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"));
|
||||
}
|
||||
|
@ -63,6 +63,7 @@ public class OnlineUserProxy {
|
||||
private static AgentUserContactsRepository agentUserContactsRes;
|
||||
private static ContactsRepository contactsRes;
|
||||
private static UserProxy userProxy;
|
||||
private static OrganRepository organRes;
|
||||
|
||||
/**
|
||||
* @param id
|
||||
@ -325,47 +326,36 @@ public class OnlineUserProxy {
|
||||
|
||||
|
||||
/**
|
||||
* @param orgi
|
||||
* @param isJudgeShare
|
||||
* @param orgi 一个坐席可以添加到多个组织,原租户共享功能废弃
|
||||
* @return
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
public static List<User> agents(String orgi, boolean isJudgeShare) {
|
||||
public static List<User> agents(String orgi) {
|
||||
String origOrig = orgi;
|
||||
boolean isShare = false;
|
||||
if (isJudgeShare) {
|
||||
SystemConfig systemConfig = MainUtils.getSystemConfig();
|
||||
if (systemConfig != null && systemConfig.isEnabletneant() && systemConfig.isTenantshare()) {
|
||||
orgi = MainContext.SYSTEM_ORGI;
|
||||
isShare = true;
|
||||
}
|
||||
}
|
||||
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) {
|
||||
// TODO 此处的查询处理比较多,应使用缓存
|
||||
// 一个用户可隶属于多个组织
|
||||
getUserProxy().attachOrgansPropertiesForUser(user);
|
||||
for (OrgiSkillRel rel : orgiSkillRelList) {
|
||||
if (user.getOrgans().size() > 0 && user.inAffiliates(rel.getSkillid())) {
|
||||
agentTempList.add(user);
|
||||
}
|
||||
}
|
||||
|
||||
List<User> agentList = getUserRes().findByOrgiAndAgentAndDatastatus(orgi, true, false);
|
||||
List<User> agentTempList = new ArrayList<User>();
|
||||
List<Organ> skillOrgansByOrgi = getOrganRes().findByOrgiAndSkill(origOrig, true);
|
||||
|
||||
if (!skillOrgansByOrgi.isEmpty()) {
|
||||
for (User user : agentList) {
|
||||
// 跳过管理员角色用户,不显示在技能组列表
|
||||
if (user.isAdmin() || user.isSuperadmin()) continue;
|
||||
|
||||
// 只显示在线的客服,跳过离线的客服
|
||||
if (getCache().findOneAgentStatusByAgentnoAndOrig(user.getId(), origOrig) == null) continue;
|
||||
|
||||
// 一个用户可隶属于多个组织
|
||||
getUserProxy().attachOrgansPropertiesForUser(user);
|
||||
for (Organ organ : skillOrgansByOrgi) {
|
||||
if (user.getOrgans().size() > 0 && user.inAffiliates(organ.getId())) {
|
||||
agentTempList.add(user);
|
||||
}
|
||||
}
|
||||
agentList = agentTempList;
|
||||
}
|
||||
if (agentList.size() > 0) {
|
||||
getCache().putSystemListByIdAndOrgi(Constants.CACHE_AGENT + origOrig, origOrig, agentList);
|
||||
}
|
||||
}
|
||||
agentList = agentTempList;
|
||||
|
||||
return agentList;
|
||||
}
|
||||
|
||||
@ -508,7 +498,7 @@ public class OnlineUserProxy {
|
||||
onlineUser.setOlduser("1");
|
||||
}
|
||||
onlineUser.setMobile(MobileDevice.isMobile(request
|
||||
.getHeader("User-Agent")) ? "1" : "0");
|
||||
.getHeader("User-Agent")) ? "1" : "0");
|
||||
|
||||
// onlineUser.setSource(user.getId());
|
||||
|
||||
@ -546,10 +536,10 @@ public class OnlineUserProxy {
|
||||
onlineUser.setCity(ipdata.getCity());
|
||||
onlineUser.setIsp(ipdata.getIsp());
|
||||
onlineUser.setRegion(ipdata.toString() + "("
|
||||
+ ip + ")");
|
||||
+ ip + ")");
|
||||
|
||||
onlineUser.setDatestr(new SimpleDateFormat("yyyMMdd")
|
||||
.format(now));
|
||||
.format(now));
|
||||
|
||||
onlineUser.setHostname(ip);
|
||||
onlineUser.setSessionid(sessionid);
|
||||
@ -1030,6 +1020,13 @@ public class OnlineUserProxy {
|
||||
return userRes;
|
||||
}
|
||||
|
||||
private static OrganRepository getOrganRes() {
|
||||
if (organRes == null) {
|
||||
organRes = MainContext.getContext().getBean(OrganRepository.class);
|
||||
}
|
||||
return organRes;
|
||||
}
|
||||
|
||||
private static OrgiSkillRelRepository getOrgiSkillRelRes() {
|
||||
if (orgiSkillRelRes == null) {
|
||||
orgiSkillRelRes = MainContext.getContext().getBean(OrgiSkillRelRepository.class);
|
||||
|
@ -268,7 +268,7 @@ var cskefu = {
|
||||
<#if inviteData.consult_skill_numbers == 0 || skill_index lt inviteData.consult_skill_numbers >
|
||||
<#assign skillNum = 0 >
|
||||
<#list agentList as agent>
|
||||
<#if agent.organ?? && agent.organ == skill.id>
|
||||
<#if agent.skills?? && agent.skills[skill.id]??>
|
||||
<#assign skillNum = skillNum+1 >
|
||||
</#if>
|
||||
</#list>
|
||||
|
Loading…
x
Reference in New Issue
Block a user