mirror of
https://github.com/chatopera/cosin.git
synced 2025-08-01 16:38:02 +08:00
Fix OrganRepository related class
This commit is contained in:
parent
33a12a8be9
commit
dd02157fad
@ -281,7 +281,7 @@ public class OrganController extends Handler {
|
|||||||
@RequestMapping("/update")
|
@RequestMapping("/update")
|
||||||
@Menu(type = "admin", subtype = "organ")
|
@Menu(type = "admin", subtype = "organ")
|
||||||
public ModelAndView update(HttpServletRequest request, @Valid Organ organ) {
|
public ModelAndView update(HttpServletRequest request, @Valid Organ organ) {
|
||||||
String msg = organProxy.updateOrgan(organ, super.getOrgi(request), super.getUser(request));
|
String msg = organProxy.updateOrgan(organ, super.getOrgi(request));
|
||||||
return request(super.createRequestPageTempletResponse(
|
return request(super.createRequestPageTempletResponse(
|
||||||
"redirect:/admin/organ/index.html?msg=" + msg + "&organ=" + organ.getId()));
|
"redirect:/admin/organ/index.html?msg=" + msg + "&organ=" + organ.getId()));
|
||||||
}
|
}
|
||||||
|
@ -1,336 +1,340 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2017 优客服-多渠道客服系统
|
* Copyright (C) 2017 优客服-多渠道客服系统
|
||||||
* Modifications copyright (C) 2018-2019 Chatopera Inc, <https://www.chatopera.com>
|
* Modifications copyright (C) 2018-2019 Chatopera Inc, <https://www.chatopera.com>
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
package com.chatopera.cc.controller.admin.channel;
|
package com.chatopera.cc.controller.admin.channel;
|
||||||
|
|
||||||
import com.chatopera.cc.cache.Cache;
|
import com.chatopera.cc.cache.Cache;
|
||||||
import com.chatopera.cc.controller.Handler;
|
import com.chatopera.cc.controller.Handler;
|
||||||
import com.chatopera.cc.model.CousultInvite;
|
import com.chatopera.cc.model.CousultInvite;
|
||||||
import com.chatopera.cc.model.Organ;
|
import com.chatopera.cc.model.Organ;
|
||||||
import com.chatopera.cc.model.OrgiSkillRel;
|
import com.chatopera.cc.model.OrgiSkillRel;
|
||||||
import com.chatopera.cc.model.User;
|
import com.chatopera.cc.model.User;
|
||||||
import com.chatopera.cc.persistence.repository.*;
|
import com.chatopera.cc.persistence.repository.*;
|
||||||
import com.chatopera.cc.proxy.OnlineUserProxy;
|
import com.chatopera.cc.proxy.OnlineUserProxy;
|
||||||
import com.chatopera.cc.proxy.UserProxy;
|
import com.chatopera.cc.proxy.UserProxy;
|
||||||
import com.chatopera.cc.util.Menu;
|
import com.chatopera.cc.util.Menu;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.slf4j.Logger;
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.Logger;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.stereotype.Controller;
|
import org.springframework.lang.NonNull;
|
||||||
import org.springframework.ui.ModelMap;
|
import org.springframework.stereotype.Controller;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.ui.ModelMap;
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
import org.springframework.web.servlet.ModelAndView;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
import org.springframework.web.server.ResponseStatusException;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import org.springframework.web.servlet.ModelAndView;
|
||||||
import javax.validation.Valid;
|
|
||||||
import java.io.IOException;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import java.util.ArrayList;
|
import javax.validation.Valid;
|
||||||
import java.util.List;
|
import java.io.IOException;
|
||||||
|
import java.util.ArrayList;
|
||||||
@Controller
|
import java.util.List;
|
||||||
@RequestMapping("/admin/webim")
|
|
||||||
public class WebIMController extends Handler {
|
@Controller
|
||||||
private final static Logger logger = LoggerFactory.getLogger(WebIMController.class);
|
@RequestMapping("/admin/webim")
|
||||||
|
@RequiredArgsConstructor
|
||||||
@Autowired
|
public class WebIMController extends Handler {
|
||||||
private ConsultInviteRepository inviteRes;
|
private final static Logger logger = LoggerFactory.getLogger(WebIMController.class);
|
||||||
|
|
||||||
@Autowired
|
@NonNull
|
||||||
private OrganRepository organRes;
|
private final ConsultInviteRepository inviteRes;
|
||||||
|
|
||||||
@Autowired
|
@NonNull
|
||||||
private UserRepository userRes;
|
private final OrganRepository organRes;
|
||||||
|
|
||||||
@Autowired
|
@NonNull
|
||||||
private ServiceAiRepository serviceAiRes;
|
private final UserRepository userRes;
|
||||||
|
|
||||||
@Autowired
|
@NonNull
|
||||||
private OrgiSkillRelRepository orgiSkillRelService;
|
private final ServiceAiRepository serviceAiRes;
|
||||||
|
|
||||||
@Value("${web.upload-path}")
|
@NonNull
|
||||||
private String path;
|
private final OrgiSkillRelRepository orgiSkillRelService;
|
||||||
|
|
||||||
@Autowired
|
@NonNull
|
||||||
private SNSAccountRepository snsAccountRes;
|
private final SNSAccountRepository snsAccountRes;
|
||||||
|
|
||||||
@Autowired
|
@NonNull
|
||||||
private Cache cache;
|
private final Cache cache;
|
||||||
|
|
||||||
@Autowired
|
@NonNull
|
||||||
private UserProxy userProxy;
|
private final UserProxy userProxy;
|
||||||
|
|
||||||
@RequestMapping("/index")
|
@RequestMapping("/index")
|
||||||
@Menu(type = "app", subtype = "app", admin = true)
|
@Menu(type = "app", subtype = "app", admin = true)
|
||||||
public ModelAndView index(ModelMap map, HttpServletRequest request, @Valid String snsid) {
|
public ModelAndView index(ModelMap map, HttpServletRequest request, @Valid String snsid) {
|
||||||
CousultInvite coultInvite = OnlineUserProxy.consult(snsid, super.getOrgi(request));
|
CousultInvite coultInvite = OnlineUserProxy.consult(snsid, super.getOrgi(request));
|
||||||
logger.info("[index] snsaccount Id {}, Ai {}, Aifirst {}, Ainame {}, Aisuccess {}, Aiid {}", coultInvite.getSnsaccountid(), coultInvite.isAi(), coultInvite.isAifirst(), coultInvite.getAiname(), coultInvite.getAisuccesstip(), coultInvite.getAiid());
|
|
||||||
|
if (coultInvite != null) {
|
||||||
if (coultInvite != null) {
|
logger.info("[index] snsaccount Id {}, Ai {}, Aifirst {}, Ainame {}, Aisuccess {}, Aiid {}", coultInvite.getSnsaccountid(), coultInvite.isAi(), coultInvite.isAifirst(), coultInvite.getAiname(), coultInvite.getAisuccesstip(), coultInvite.getAiid());
|
||||||
map.addAttribute("inviteData", coultInvite);
|
map.addAttribute("inviteData", coultInvite);
|
||||||
map.addAttribute("skillGroups", getSkillGroups(request));
|
map.addAttribute("skillGroups", getSkillGroups(request));
|
||||||
map.addAttribute("agentList", getUsers(request));
|
map.addAttribute("agentList", getUsers(request));
|
||||||
map.addAttribute("import", request.getServerPort());
|
map.addAttribute("import", request.getServerPort());
|
||||||
map.addAttribute("snsAccount", snsAccountRes.findBySnsidAndOrgi(snsid, super.getOrgi(request)));
|
map.addAttribute("snsAccount", snsAccountRes.findBySnsidAndOrgi(snsid, super.getOrgi(request)));
|
||||||
}
|
}
|
||||||
return request(super.createAdminTempletResponse("/admin/webim/index"));
|
return request(super.createAdminTempletResponse("/admin/webim/index"));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param request
|
*
|
||||||
* @param inviteData
|
*/
|
||||||
* @param webimlogo
|
@RequestMapping("/save")
|
||||||
* @param agentheadimg
|
@Menu(type = "admin", subtype = "app", admin = true)
|
||||||
* @return
|
public ModelAndView save(HttpServletRequest request,
|
||||||
* @throws IOException
|
@Valid CousultInvite inviteData,
|
||||||
*/
|
@RequestParam(value = "webimlogo", required = false) MultipartFile webimlogo,
|
||||||
@RequestMapping("/save")
|
@RequestParam(value = "agentheadimg", required = false) MultipartFile agentheadimg) throws IOException {
|
||||||
@Menu(type = "admin", subtype = "app", admin = true)
|
logger.info("[save] snsaccount Id {}, Ai {}, Aifirst {}, Ainame {}, Aisuccess {}, Aiid {}", inviteData.getSnsaccountid(), inviteData.isAi(), inviteData.isAifirst(), inviteData.getAiname(), inviteData.getAisuccesstip(), inviteData.getAiid());
|
||||||
public ModelAndView save(HttpServletRequest request,
|
|
||||||
@Valid CousultInvite inviteData,
|
if (StringUtils.isNotBlank(inviteData.getSnsaccountid())) {
|
||||||
@RequestParam(value = "webimlogo", required = false) MultipartFile webimlogo,
|
CousultInvite tempData = inviteRes.findBySnsaccountidAndOrgi(inviteData.getSnsaccountid(), super.getOrgi(request));
|
||||||
@RequestParam(value = "agentheadimg", required = false) MultipartFile agentheadimg) throws IOException {
|
if (tempData != null) {
|
||||||
logger.info("[save] snsaccount Id {}, Ai {}, Aifirst {}, Ainame {}, Aisuccess {}, Aiid {}", inviteData.getSnsaccountid(), inviteData.isAi(), inviteData.isAifirst(), inviteData.getAiname(), inviteData.getAisuccesstip(), inviteData.getAiid());
|
tempData.setConsult_vsitorbtn_model(inviteData.getConsult_vsitorbtn_model());
|
||||||
|
tempData.setConsult_vsitorbtn_color(inviteData.getConsult_vsitorbtn_color());
|
||||||
if (StringUtils.isNotBlank(inviteData.getSnsaccountid())) {
|
tempData.setConsult_vsitorbtn_position(inviteData.getConsult_vsitorbtn_position());
|
||||||
CousultInvite tempData = inviteRes.findBySnsaccountidAndOrgi(inviteData.getSnsaccountid(), super.getOrgi(request));
|
tempData.setConsult_vsitorbtn_content(inviteData.getConsult_vsitorbtn_content());
|
||||||
if (tempData != null) {
|
tempData.setConsult_vsitorbtn_display(inviteData.getConsult_vsitorbtn_display());
|
||||||
tempData.setConsult_vsitorbtn_model(inviteData.getConsult_vsitorbtn_model());
|
tempData.setConsult_dialog_color(inviteData.getConsult_dialog_color());
|
||||||
tempData.setConsult_vsitorbtn_color(inviteData.getConsult_vsitorbtn_color());
|
inviteData = tempData;
|
||||||
tempData.setConsult_vsitorbtn_position(inviteData.getConsult_vsitorbtn_position());
|
}
|
||||||
tempData.setConsult_vsitorbtn_content(inviteData.getConsult_vsitorbtn_content());
|
} else {
|
||||||
tempData.setConsult_vsitorbtn_display(inviteData.getConsult_vsitorbtn_display());
|
inviteData.setSnsaccountid(super.getUser(request).getId());
|
||||||
tempData.setConsult_dialog_color(inviteData.getConsult_dialog_color());
|
}
|
||||||
inviteData = tempData;
|
inviteData.setOrgi(super.getOrgi(request));
|
||||||
}
|
// 网页品牌标识
|
||||||
} else {
|
if (webimlogo != null) {
|
||||||
inviteData.setSnsaccountid(super.getUser(request).getId());
|
String originalFilename = webimlogo.getOriginalFilename();
|
||||||
}
|
if (originalFilename != null && originalFilename.lastIndexOf(".") > 0) {
|
||||||
inviteData.setOrgi(super.getOrgi(request));
|
inviteData.setConsult_dialog_logo(super.saveImageFileWithMultipart(webimlogo));
|
||||||
// 网页品牌标识
|
}
|
||||||
if (webimlogo != null && webimlogo.getOriginalFilename().lastIndexOf(".") > 0) {
|
}
|
||||||
inviteData.setConsult_dialog_logo(super.saveImageFileWithMultipart(webimlogo));
|
|
||||||
}
|
// 网页坐席头像
|
||||||
|
if (agentheadimg != null) {
|
||||||
// 网页坐席头像
|
String originalFilename = agentheadimg.getOriginalFilename();
|
||||||
if (agentheadimg != null && agentheadimg.getOriginalFilename().lastIndexOf(".") > 0) {
|
if (originalFilename != null && originalFilename.lastIndexOf(".") > 0) {
|
||||||
inviteData.setConsult_dialog_headimg(super.saveImageFileWithMultipart(agentheadimg));
|
inviteData.setConsult_dialog_headimg(super.saveImageFileWithMultipart(agentheadimg));
|
||||||
}
|
}
|
||||||
inviteRes.save(inviteData);
|
}
|
||||||
cache.putConsultInviteByOrgi(inviteData.getOrgi(), inviteData);
|
inviteRes.save(inviteData);
|
||||||
return request(super.createRequestPageTempletResponse("redirect:/admin/webim/index.html?snsid=" + inviteData.getSnsaccountid()));
|
cache.putConsultInviteByOrgi(inviteData.getOrgi(), inviteData);
|
||||||
}
|
return request(super.createRequestPageTempletResponse("redirect:/admin/webim/index.html?snsid=" + inviteData.getSnsaccountid()));
|
||||||
|
}
|
||||||
@RequestMapping("/profile")
|
|
||||||
@Menu(type = "app", subtype = "profile", admin = true)
|
@RequestMapping("/profile")
|
||||||
public ModelAndView profile(ModelMap map, HttpServletRequest request, @Valid String snsid) {
|
@Menu(type = "app", subtype = "profile", admin = true)
|
||||||
CousultInvite coultInvite = OnlineUserProxy.consult(snsid, super.getOrgi(request));
|
public ModelAndView profile(ModelMap map, HttpServletRequest request, @Valid String snsid) {
|
||||||
logger.info("[profile] snsaccount Id {}, Ai {}, Aifirst {}, Ainame {}, Aisuccess {}, Aiid {}", coultInvite.getSnsaccountid(), coultInvite.isAi(), coultInvite.isAifirst(), coultInvite.getAiname(), coultInvite.getAisuccesstip(), coultInvite.getAiid());
|
CousultInvite coultInvite = OnlineUserProxy.consult(snsid, super.getOrgi(request));
|
||||||
|
|
||||||
if (coultInvite != null) {
|
if (coultInvite != null) {
|
||||||
map.addAttribute("inviteData", coultInvite);
|
logger.info("[profile] snsaccount Id {}, Ai {}, Aifirst {}, Ainame {}, Aisuccess {}, Aiid {}", coultInvite.getSnsaccountid(), coultInvite.isAi(), coultInvite.isAifirst(), coultInvite.getAiname(), coultInvite.getAisuccesstip(), coultInvite.getAiid());
|
||||||
map.addAttribute("skillGroups", getSkillGroups(request));
|
map.addAttribute("inviteData", coultInvite);
|
||||||
}
|
map.addAttribute("skillGroups", getSkillGroups(request));
|
||||||
map.addAttribute("import", request.getServerPort());
|
}
|
||||||
map.addAttribute("snsAccount", snsAccountRes.findBySnsidAndOrgi(snsid, super.getOrgi(request)));
|
map.addAttribute("import", request.getServerPort());
|
||||||
|
map.addAttribute("snsAccount", snsAccountRes.findBySnsidAndOrgi(snsid, super.getOrgi(request)));
|
||||||
map.put("serviceAiList", serviceAiRes.findByOrgi(super.getOrgi(request)));
|
|
||||||
return request(super.createAdminTempletResponse("/admin/webim/profile"));
|
map.put("serviceAiList", serviceAiRes.findByOrgi(super.getOrgi(request)));
|
||||||
}
|
return request(super.createAdminTempletResponse("/admin/webim/profile"));
|
||||||
|
}
|
||||||
@RequestMapping("/profile/save")
|
|
||||||
@Menu(type = "admin", subtype = "profile", admin = true)
|
@RequestMapping("/profile/save")
|
||||||
public ModelAndView saveprofile(HttpServletRequest request, @Valid CousultInvite inviteData, @RequestParam(value = "dialogad", required = false) MultipartFile dialogad) throws IOException {
|
@Menu(type = "admin", subtype = "profile", admin = true)
|
||||||
final String orgi = super.getOrgi(request);
|
public ModelAndView saveprofile(HttpServletRequest request, @Valid CousultInvite inviteData, @RequestParam(value = "dialogad", required = false) MultipartFile dialogad) throws IOException {
|
||||||
|
final String orgi = super.getOrgi(request);
|
||||||
CousultInvite tempInviteData;
|
|
||||||
logger.info("[profile/save] snsaccount Id {}, Ai {}, Aifirst {}, Ainame {}, Aisuccess {}, Aiid {}, traceUser {}",
|
if (inviteData != null && StringUtils.isNotBlank(inviteData.getId())) {
|
||||||
inviteData.getSnsaccountid(),
|
logger.info("[profile/save] snsaccount Id {}, Ai {}, Aifirst {}, Ainame {}, Aisuccess {}, Aiid {}, traceUser {}",
|
||||||
inviteData.isAi(),
|
inviteData.getSnsaccountid(),
|
||||||
inviteData.isAifirst(),
|
inviteData.isAi(),
|
||||||
inviteData.getAiname(),
|
inviteData.isAifirst(),
|
||||||
inviteData.getAisuccesstip(),
|
inviteData.getAiname(),
|
||||||
inviteData.getAiid(),
|
inviteData.getAisuccesstip(),
|
||||||
inviteData.isTraceuser());
|
inviteData.getAiid(),
|
||||||
|
inviteData.isTraceuser());
|
||||||
if (inviteData != null && StringUtils.isNotBlank(inviteData.getId())) {
|
// 从Cache及DB加载consult
|
||||||
// 从Cache及DB加载consult
|
CousultInvite tempInviteData = OnlineUserProxy.consult(inviteData.getSnsaccountid(), orgi);
|
||||||
tempInviteData = OnlineUserProxy.consult(inviteData.getSnsaccountid(), orgi);
|
|
||||||
|
if (tempInviteData != null) {
|
||||||
if (tempInviteData != null) {
|
tempInviteData.setDialog_name(inviteData.getDialog_name());
|
||||||
tempInviteData.setDialog_name(inviteData.getDialog_name());
|
tempInviteData.setDialog_address(inviteData.getDialog_address());
|
||||||
tempInviteData.setDialog_address(inviteData.getDialog_address());
|
tempInviteData.setDialog_phone(inviteData.getDialog_phone());
|
||||||
tempInviteData.setDialog_phone(inviteData.getDialog_phone());
|
tempInviteData.setDialog_mail(inviteData.getDialog_mail());
|
||||||
tempInviteData.setDialog_mail(inviteData.getDialog_mail());
|
tempInviteData.setDialog_introduction(inviteData.getDialog_introduction());
|
||||||
tempInviteData.setDialog_introduction(inviteData.getDialog_introduction());
|
tempInviteData.setDialog_message(inviteData.getDialog_message());
|
||||||
tempInviteData.setDialog_message(inviteData.getDialog_message());
|
tempInviteData.setLeavemessage(inviteData.isLeavemessage());
|
||||||
tempInviteData.setLeavemessage(inviteData.isLeavemessage());
|
tempInviteData.setLvmopentype(inviteData.getLvmopentype());
|
||||||
tempInviteData.setLvmopentype(inviteData.getLvmopentype());
|
tempInviteData.setLvmname(inviteData.isLvmname());
|
||||||
tempInviteData.setLvmname(inviteData.isLvmname());
|
tempInviteData.setLvmphone(inviteData.isLvmphone());
|
||||||
tempInviteData.setLvmphone(inviteData.isLvmphone());
|
tempInviteData.setLvmemail(inviteData.isLvmemail());
|
||||||
tempInviteData.setLvmemail(inviteData.isLvmemail());
|
tempInviteData.setLvmaddress(inviteData.isLvmaddress());
|
||||||
tempInviteData.setLvmaddress(inviteData.isLvmaddress());
|
tempInviteData.setLvmqq(inviteData.isLvmqq());
|
||||||
tempInviteData.setLvmqq(inviteData.isLvmqq());
|
|
||||||
|
tempInviteData.setConsult_skill_fixed(inviteData.isConsult_skill_fixed());
|
||||||
tempInviteData.setConsult_skill_fixed(inviteData.isConsult_skill_fixed());
|
tempInviteData.setConsult_skill_fixed_id(inviteData.getConsult_skill_fixed_id());
|
||||||
tempInviteData.setConsult_skill_fixed_id(inviteData.getConsult_skill_fixed_id());
|
tempInviteData.setSkill(inviteData.isSkill());
|
||||||
tempInviteData.setSkill(inviteData.isSkill());
|
tempInviteData.setConsult_skill_title(inviteData.getConsult_skill_title());
|
||||||
tempInviteData.setConsult_skill_title(inviteData.getConsult_skill_title());
|
tempInviteData.setConsult_skill_msg(inviteData.getConsult_skill_msg());
|
||||||
tempInviteData.setConsult_skill_msg(inviteData.getConsult_skill_msg());
|
tempInviteData.setConsult_skill_bottomtitle(inviteData.getConsult_skill_bottomtitle());
|
||||||
tempInviteData.setConsult_skill_bottomtitle(inviteData.getConsult_skill_bottomtitle());
|
tempInviteData.setConsult_skill_maxagent(inviteData.getConsult_skill_maxagent());
|
||||||
tempInviteData.setConsult_skill_maxagent(inviteData.getConsult_skill_maxagent());
|
tempInviteData.setConsult_skill_numbers(inviteData.getConsult_skill_numbers());
|
||||||
tempInviteData.setConsult_skill_numbers(inviteData.getConsult_skill_numbers());
|
tempInviteData.setConsult_skill_agent(inviteData.isConsult_skill_agent());
|
||||||
tempInviteData.setConsult_skill_agent(inviteData.isConsult_skill_agent());
|
|
||||||
|
tempInviteData.setOnlyareaskill(inviteData.isOnlyareaskill());
|
||||||
tempInviteData.setOnlyareaskill(inviteData.isOnlyareaskill());
|
tempInviteData.setAreaskilltipmsg(inviteData.getAreaskilltipmsg());
|
||||||
tempInviteData.setAreaskilltipmsg(inviteData.getAreaskilltipmsg());
|
|
||||||
|
tempInviteData.setConsult_info(inviteData.isConsult_info());
|
||||||
tempInviteData.setConsult_info(inviteData.isConsult_info());
|
tempInviteData.setConsult_info_email(inviteData.isConsult_info_email());
|
||||||
tempInviteData.setConsult_info_email(inviteData.isConsult_info_email());
|
tempInviteData.setConsult_info_name(inviteData.isConsult_info_name());
|
||||||
tempInviteData.setConsult_info_name(inviteData.isConsult_info_name());
|
tempInviteData.setConsult_info_phone(inviteData.isConsult_info_phone());
|
||||||
tempInviteData.setConsult_info_phone(inviteData.isConsult_info_phone());
|
tempInviteData.setConsult_info_resion(inviteData.isConsult_info_resion());
|
||||||
tempInviteData.setConsult_info_resion(inviteData.isConsult_info_resion());
|
tempInviteData.setConsult_info_message(inviteData.getConsult_info_message());
|
||||||
tempInviteData.setConsult_info_message(inviteData.getConsult_info_message());
|
tempInviteData.setConsult_info_cookies(inviteData.isConsult_info_cookies());
|
||||||
tempInviteData.setConsult_info_cookies(inviteData.isConsult_info_cookies());
|
|
||||||
|
tempInviteData.setRecordhis(inviteData.isRecordhis());
|
||||||
tempInviteData.setRecordhis(inviteData.isRecordhis());
|
tempInviteData.setTraceuser(inviteData.isTraceuser());
|
||||||
tempInviteData.setTraceuser(inviteData.isTraceuser());
|
|
||||||
|
tempInviteData.setAi(inviteData.isAi());
|
||||||
tempInviteData.setAi(inviteData.isAi());
|
tempInviteData.setAifirst(inviteData.isAifirst());
|
||||||
tempInviteData.setAifirst(inviteData.isAifirst());
|
tempInviteData.setAimsg(inviteData.getAimsg());
|
||||||
tempInviteData.setAimsg(inviteData.getAimsg());
|
tempInviteData.setAisuccesstip(inviteData.getAisuccesstip());
|
||||||
tempInviteData.setAisuccesstip(inviteData.getAisuccesstip());
|
tempInviteData.setAiname(inviteData.getAiname());
|
||||||
tempInviteData.setAiname(inviteData.getAiname());
|
tempInviteData.setAiid(inviteData.getAiid());
|
||||||
tempInviteData.setAiid(inviteData.getAiid());
|
|
||||||
|
|
||||||
|
tempInviteData.setMaxwordsnum(inviteData.getMaxwordsnum());
|
||||||
tempInviteData.setMaxwordsnum(inviteData.getMaxwordsnum());
|
tempInviteData.setCtrlenter(inviteData.isCtrlenter());
|
||||||
tempInviteData.setCtrlenter(inviteData.isCtrlenter());
|
tempInviteData.setWhitelist_mode(inviteData.isWhitelist_mode());
|
||||||
tempInviteData.setWhitelist_mode(inviteData.isWhitelist_mode());
|
|
||||||
|
if (dialogad != null && StringUtils.isNotBlank(dialogad.getName()) && dialogad.getBytes().length > 0) {
|
||||||
if (dialogad != null && StringUtils.isNotBlank(dialogad.getName()) && dialogad.getBytes() != null && dialogad.getBytes().length > 0) {
|
tempInviteData.setDialog_ad(super.saveImageFileWithMultipart(dialogad));
|
||||||
tempInviteData.setDialog_ad(super.saveImageFileWithMultipart(dialogad));
|
}
|
||||||
}
|
// 保存到DB
|
||||||
// 保存到DB
|
inviteRes.save(tempInviteData);
|
||||||
inviteRes.save(tempInviteData);
|
inviteData = tempInviteData;
|
||||||
inviteData = tempInviteData;
|
}
|
||||||
}
|
} else {
|
||||||
} else {
|
if (inviteData != null) {
|
||||||
inviteRes.save(inviteData);
|
inviteRes.save(inviteData);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
cache.putConsultInviteByOrgi(orgi, inviteData);
|
if (inviteData == null) {
|
||||||
return request(super.createRequestPageTempletResponse("redirect:/admin/webim/profile.html?snsid=" + inviteData.getSnsaccountid()));
|
throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Invite data not found");
|
||||||
}
|
}
|
||||||
|
cache.putConsultInviteByOrgi(orgi, inviteData);
|
||||||
@RequestMapping("/invote")
|
return request(super.createRequestPageTempletResponse("redirect:/admin/webim/profile.html?snsid=" + inviteData.getSnsaccountid()));
|
||||||
@Menu(type = "app", subtype = "invote", admin = true)
|
}
|
||||||
public ModelAndView invote(ModelMap map, HttpServletRequest request, @Valid String snsid) {
|
|
||||||
CousultInvite coultInvite = OnlineUserProxy.consult(snsid, super.getOrgi(request));
|
@RequestMapping("/invote")
|
||||||
logger.info("[invote] snsaccount Id {}, Ai {}, Aifirst {}, Ainame {}, Aisuccess {}, Aiid {}", coultInvite.getSnsaccountid(), coultInvite.isAi(), coultInvite.isAifirst(), coultInvite.getAiname(), coultInvite.getAisuccesstip(), coultInvite.getAiid());
|
@Menu(type = "app", subtype = "invote", admin = true)
|
||||||
|
public ModelAndView invote(ModelMap map, HttpServletRequest request, @Valid String snsid) {
|
||||||
if (coultInvite != null) {
|
CousultInvite coultInvite = OnlineUserProxy.consult(snsid, super.getOrgi(request));
|
||||||
map.addAttribute("inviteData", coultInvite);
|
|
||||||
}
|
if (coultInvite != null) {
|
||||||
map.addAttribute("import", request.getServerPort());
|
logger.info("[invote] snsaccount Id {}, Ai {}, Aifirst {}, Ainame {}, Aisuccess {}, Aiid {}", coultInvite.getSnsaccountid(), coultInvite.isAi(), coultInvite.isAifirst(), coultInvite.getAiname(), coultInvite.getAisuccesstip(), coultInvite.getAiid());
|
||||||
map.addAttribute("snsAccount", snsAccountRes.findBySnsidAndOrgi(snsid, super.getOrgi(request)));
|
map.addAttribute("inviteData", coultInvite);
|
||||||
return request(super.createAdminTempletResponse("/admin/webim/invote"));
|
}
|
||||||
}
|
map.addAttribute("import", request.getServerPort());
|
||||||
|
map.addAttribute("snsAccount", snsAccountRes.findBySnsidAndOrgi(snsid, super.getOrgi(request)));
|
||||||
@RequestMapping("/invote/save")
|
return request(super.createAdminTempletResponse("/admin/webim/invote"));
|
||||||
@Menu(type = "admin", subtype = "profile", admin = true)
|
}
|
||||||
public ModelAndView saveinvote(HttpServletRequest request, @Valid CousultInvite inviteData, @RequestParam(value = "invotebg", required = false) MultipartFile invotebg) throws IOException {
|
|
||||||
CousultInvite tempInviteData;
|
@RequestMapping("/invote/save")
|
||||||
logger.info("[invote/save] snsaccount Id {}, Ai {}, Aifirst {}, Ainame {}, Aisuccess {}, Aiid {}", inviteData.getSnsaccountid(), inviteData.isAi(), inviteData.isAifirst(), inviteData.getAiname(), inviteData.getAisuccesstip(), inviteData.getAiid());
|
@Menu(type = "admin", subtype = "profile", admin = true)
|
||||||
|
public ModelAndView saveinvote(HttpServletRequest request, @Valid CousultInvite inviteData, @RequestParam(value = "invotebg", required = false) MultipartFile invotebg) throws IOException {
|
||||||
if (inviteData != null && StringUtils.isNotBlank(inviteData.getId())) {
|
CousultInvite tempInviteData;
|
||||||
tempInviteData = OnlineUserProxy.consult(inviteData.getSnsaccountid(), super.getOrgi(request));
|
|
||||||
if (tempInviteData != null) {
|
if (inviteData != null && StringUtils.isNotBlank(inviteData.getId())) {
|
||||||
tempInviteData.setConsult_invite_enable(inviteData.isConsult_invite_enable());
|
logger.info("[invote/save] snsaccount Id {}, Ai {}, Aifirst {}, Ainame {}, Aisuccess {}, Aiid {}", inviteData.getSnsaccountid(), inviteData.isAi(), inviteData.isAifirst(), inviteData.getAiname(), inviteData.getAisuccesstip(), inviteData.getAiid());
|
||||||
tempInviteData.setConsult_invite_content(inviteData.getConsult_invite_content());
|
tempInviteData = OnlineUserProxy.consult(inviteData.getSnsaccountid(), super.getOrgi(request));
|
||||||
tempInviteData.setConsult_invite_accept(inviteData.getConsult_invite_accept());
|
if (tempInviteData != null) {
|
||||||
tempInviteData.setConsult_invite_later(inviteData.getConsult_invite_later());
|
tempInviteData.setConsult_invite_enable(inviteData.isConsult_invite_enable());
|
||||||
tempInviteData.setConsult_invite_delay(inviteData.getConsult_invite_delay());
|
tempInviteData.setConsult_invite_content(inviteData.getConsult_invite_content());
|
||||||
|
tempInviteData.setConsult_invite_accept(inviteData.getConsult_invite_accept());
|
||||||
tempInviteData.setConsult_invite_color(inviteData.getConsult_invite_color());
|
tempInviteData.setConsult_invite_later(inviteData.getConsult_invite_later());
|
||||||
|
tempInviteData.setConsult_invite_delay(inviteData.getConsult_invite_delay());
|
||||||
if (invotebg != null && StringUtils.isNotBlank(invotebg.getName()) && invotebg.getBytes() != null && invotebg.getBytes().length > 0) {
|
|
||||||
tempInviteData.setConsult_invite_bg(super.saveImageFileWithMultipart(invotebg));
|
tempInviteData.setConsult_invite_color(inviteData.getConsult_invite_color());
|
||||||
}
|
|
||||||
inviteRes.save(tempInviteData);
|
if (invotebg != null && StringUtils.isNotBlank(invotebg.getName()) && invotebg.getBytes().length > 0) {
|
||||||
inviteData = tempInviteData;
|
tempInviteData.setConsult_invite_bg(super.saveImageFileWithMultipart(invotebg));
|
||||||
}
|
}
|
||||||
} else {
|
inviteRes.save(tempInviteData);
|
||||||
inviteRes.save(inviteData);
|
inviteData = tempInviteData;
|
||||||
}
|
}
|
||||||
cache.putConsultInviteByOrgi(inviteData.getOrgi(), inviteData);
|
} else {
|
||||||
return request(super.createRequestPageTempletResponse("redirect:/admin/webim/invote.html?snsid=" + inviteData.getSnsaccountid()));
|
if (inviteData != null) {
|
||||||
}
|
inviteRes.save(inviteData);
|
||||||
|
}
|
||||||
/**
|
}
|
||||||
* 获取当前登录者组织下的技能组列表
|
|
||||||
*
|
if (inviteData == null) {
|
||||||
* @param request
|
throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Invite data not found");
|
||||||
* @return
|
}
|
||||||
*/
|
|
||||||
private List<Organ> getSkillGroups(HttpServletRequest request) {
|
cache.putConsultInviteByOrgi(inviteData.getOrgi(), inviteData);
|
||||||
List<Organ> skillgroups = new ArrayList<>();
|
return request(super.createRequestPageTempletResponse("redirect:/admin/webim/invote.html?snsid=" + inviteData.getSnsaccountid()));
|
||||||
if (super.isTenantshare()) {
|
}
|
||||||
List<String> organIdList = new ArrayList<>();
|
|
||||||
List<OrgiSkillRel> orgiSkillRelList = orgiSkillRelService.findByOrgi(super.getOrgi(request));
|
/**
|
||||||
if (!orgiSkillRelList.isEmpty()) {
|
* 获取当前登录者组织下的技能组列表
|
||||||
for (OrgiSkillRel rel : orgiSkillRelList) {
|
*/
|
||||||
organIdList.add(rel.getSkillid());
|
private List<Organ> getSkillGroups(HttpServletRequest request) {
|
||||||
}
|
List<Organ> skillgroups = new ArrayList<>();
|
||||||
}
|
if (super.isTenantshare()) {
|
||||||
skillgroups = organRes.findAll(organIdList);
|
List<String> organIdList = new ArrayList<>();
|
||||||
} else {
|
List<OrgiSkillRel> orgiSkillRelList = orgiSkillRelService.findByOrgi(super.getOrgi(request));
|
||||||
List<Organ> allgroups = organRes.findByOrgiAndOrgid(super.getOrgi(request), super.getOrgid(request));
|
if (!orgiSkillRelList.isEmpty()) {
|
||||||
for (Organ o : allgroups) {
|
for (OrgiSkillRel rel : orgiSkillRelList) {
|
||||||
if (o.isSkill()) {
|
organIdList.add(rel.getSkillid());
|
||||||
skillgroups.add(o);
|
}
|
||||||
}
|
}
|
||||||
}
|
skillgroups = organRes.findAllById(organIdList);
|
||||||
}
|
} else {
|
||||||
return skillgroups;
|
List<Organ> allgroups = organRes.findByOrgiAndOrgid(super.getOrgi(request), super.getOrgid(request));
|
||||||
}
|
for (Organ o : allgroups) {
|
||||||
|
if (o.isSkill()) {
|
||||||
/**
|
skillgroups.add(o);
|
||||||
* 获取当前产品下人员信息
|
}
|
||||||
*
|
}
|
||||||
* @param request
|
}
|
||||||
* @return
|
return skillgroups;
|
||||||
*/
|
}
|
||||||
private List<User> getUsers(HttpServletRequest request) {
|
|
||||||
List<User> userList;
|
/**
|
||||||
if (super.isTenantshare()) {
|
* 获取当前产品下人员信息
|
||||||
List<String> organIdList = new ArrayList<>();
|
*/
|
||||||
List<OrgiSkillRel> orgiSkillRelList = orgiSkillRelService.findByOrgi(super.getOrgi(request));
|
private List<User> getUsers(HttpServletRequest request) {
|
||||||
if (!orgiSkillRelList.isEmpty()) {
|
List<User> userList;
|
||||||
for (OrgiSkillRel rel : orgiSkillRelList) {
|
if (super.isTenantshare()) {
|
||||||
organIdList.add(rel.getSkillid());
|
List<String> organIdList = new ArrayList<>();
|
||||||
}
|
List<OrgiSkillRel> orgiSkillRelList = orgiSkillRelService.findByOrgi(super.getOrgi(request));
|
||||||
}
|
if (!orgiSkillRelList.isEmpty()) {
|
||||||
userList = userProxy.findByOrganInAndAgentAndDatastatus(organIdList, true, false);
|
for (OrgiSkillRel rel : orgiSkillRelList) {
|
||||||
} else {
|
organIdList.add(rel.getSkillid());
|
||||||
userList = userRes.findByOrgiAndAgentAndDatastatus(super.getOrgi(request), true, false);
|
}
|
||||||
}
|
}
|
||||||
return userList;
|
userList = userProxy.findByOrganInAndAgentAndDatastatus(organIdList, true, false);
|
||||||
}
|
} else {
|
||||||
}
|
userList = userRes.findByOrgiAndAgentAndDatastatus(super.getOrgi(request), true, false);
|
||||||
|
}
|
||||||
|
return userList;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -20,8 +20,9 @@ import com.chatopera.cc.basic.MainContext;
|
|||||||
import com.chatopera.cc.basic.MainUtils;
|
import com.chatopera.cc.basic.MainUtils;
|
||||||
import com.chatopera.cc.controller.Handler;
|
import com.chatopera.cc.controller.Handler;
|
||||||
import com.chatopera.cc.controller.api.request.RestUtils;
|
import com.chatopera.cc.controller.api.request.RestUtils;
|
||||||
import com.chatopera.cc.exception.CSKefuRestException;
|
import com.chatopera.cc.model.ContactNotes;
|
||||||
import com.chatopera.cc.model.*;
|
import com.chatopera.cc.model.OrganUser;
|
||||||
|
import com.chatopera.cc.model.User;
|
||||||
import com.chatopera.cc.persistence.es.ContactNotesRepository;
|
import com.chatopera.cc.persistence.es.ContactNotesRepository;
|
||||||
import com.chatopera.cc.persistence.es.ContactsRepository;
|
import com.chatopera.cc.persistence.es.ContactsRepository;
|
||||||
import com.chatopera.cc.persistence.repository.OrganRepository;
|
import com.chatopera.cc.persistence.repository.OrganRepository;
|
||||||
@ -32,15 +33,16 @@ import com.chatopera.cc.util.json.GsonTools;
|
|||||||
import com.google.gson.JsonArray;
|
import com.google.gson.JsonArray;
|
||||||
import com.google.gson.JsonObject;
|
import com.google.gson.JsonObject;
|
||||||
import com.google.gson.JsonParser;
|
import com.google.gson.JsonParser;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.data.domain.Page;
|
import org.springframework.data.domain.Page;
|
||||||
import org.springframework.data.domain.PageRequest;
|
import org.springframework.data.domain.PageRequest;
|
||||||
import org.springframework.http.HttpHeaders;
|
import org.springframework.http.HttpHeaders;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
|
import org.springframework.lang.NonNull;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestMethod;
|
import org.springframework.web.bind.annotation.RequestMethod;
|
||||||
@ -49,6 +51,7 @@ import org.springframework.web.bind.annotation.RestController;
|
|||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 联系人笔记
|
* 联系人笔记
|
||||||
@ -56,39 +59,34 @@ import java.util.List;
|
|||||||
*/
|
*/
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/api/contacts/notes")
|
@RequestMapping("/api/contacts/notes")
|
||||||
|
@RequiredArgsConstructor
|
||||||
public class ApiContactNotesController extends Handler {
|
public class ApiContactNotesController extends Handler {
|
||||||
private final static Logger logger = LoggerFactory.getLogger(ApiContactNotesController.class);
|
private final static Logger logger = LoggerFactory.getLogger(ApiContactNotesController.class);
|
||||||
|
|
||||||
@Autowired
|
@NonNull
|
||||||
private ContactNotesRepository contactNotesRes;
|
private final ContactNotesRepository contactNotesRes;
|
||||||
|
|
||||||
|
@NonNull
|
||||||
|
private final ContactsRepository contactsRes;
|
||||||
|
|
||||||
@Autowired
|
@NonNull
|
||||||
private ContactsRepository contactsRes;
|
private final UserRepository userRes;
|
||||||
|
|
||||||
|
@NonNull
|
||||||
|
private final OrganRepository organRes;
|
||||||
|
|
||||||
@Autowired
|
@NonNull
|
||||||
private UserRepository userRes;
|
private final OrganUserRepository organUserRes;
|
||||||
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private OrganRepository organRes;
|
|
||||||
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private OrganUserRepository organUserRes;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取创建人
|
* 获取创建人
|
||||||
*
|
|
||||||
* @param creater
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
private JsonObject creater(final String creater) {
|
private JsonObject creater(final String creater) {
|
||||||
JsonObject data = new JsonObject();
|
JsonObject data = new JsonObject();
|
||||||
// 增加创建人
|
// 增加创建人
|
||||||
User u = userRes.findById(creater);
|
Optional<User> optional = userRes.findById(creater);
|
||||||
if (u != null) {
|
if (optional.isPresent()) {
|
||||||
|
User u = optional.get();
|
||||||
data.addProperty("creater", u.getId());
|
data.addProperty("creater", u.getId());
|
||||||
data.addProperty("creatername", u.getUname());
|
data.addProperty("creatername", u.getUname());
|
||||||
|
|
||||||
@ -101,13 +99,13 @@ public class ApiContactNotesController extends Handler {
|
|||||||
JsonArray y = new JsonArray();
|
JsonArray y = new JsonArray();
|
||||||
|
|
||||||
for (final OrganUser organ : organs) {
|
for (final OrganUser organ : organs) {
|
||||||
Organ o = organRes.findOne(organ.getOrgan());
|
organRes.findById(organ.getOrgan())
|
||||||
if (o != null) {
|
.ifPresent(o -> {
|
||||||
JsonObject x = new JsonObject();
|
JsonObject x = new JsonObject();
|
||||||
x.addProperty("createrorgan", o.getName());
|
x.addProperty("createrorgan", o.getName());
|
||||||
x.addProperty("createrorganid", o.getId());
|
x.addProperty("createrorganid", o.getId());
|
||||||
y.add(x);
|
y.add(x);
|
||||||
}
|
});
|
||||||
}
|
}
|
||||||
data.add("organs", y);
|
data.add("organs", y);
|
||||||
}
|
}
|
||||||
@ -119,17 +117,15 @@ public class ApiContactNotesController extends Handler {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取笔记详情
|
* 获取笔记详情
|
||||||
*
|
|
||||||
* @param j
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
private JsonObject detail(final JsonObject j) throws GsonTools.JsonObjectExtensionConflictException {
|
private JsonObject detail(final JsonObject j) throws GsonTools.JsonObjectExtensionConflictException {
|
||||||
logger.info("[contact note] detail {}] {}", j.toString());
|
logger.info("[contact note] detail: {}", j.toString());
|
||||||
JsonObject resp = new JsonObject();
|
JsonObject resp = new JsonObject();
|
||||||
// TODO 增加权限检查
|
// TODO 增加权限检查
|
||||||
if (j.has("id") && StringUtils.isNotBlank(j.get("id").getAsString())) {
|
if (j.has("id") && StringUtils.isNotBlank(j.get("id").getAsString())) {
|
||||||
ContactNotes cn = contactNotesRes.findOne(j.get("id").getAsString());
|
Optional<ContactNotes> optional = contactNotesRes.findById(j.get("id").getAsString());
|
||||||
if (cn != null) {
|
if (optional.isPresent()) {
|
||||||
|
ContactNotes cn = optional.get();
|
||||||
JsonObject data = new JsonObject();
|
JsonObject data = new JsonObject();
|
||||||
data.addProperty("contactid", cn.getContactid());
|
data.addProperty("contactid", cn.getContactid());
|
||||||
data.addProperty("category", cn.getCategory());
|
data.addProperty("category", cn.getCategory());
|
||||||
@ -151,9 +147,6 @@ public class ApiContactNotesController extends Handler {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建联系人笔记
|
* 创建联系人笔记
|
||||||
*
|
|
||||||
* @param payload
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
private JsonObject create(final JsonObject payload) throws GsonTools.JsonObjectExtensionConflictException {
|
private JsonObject create(final JsonObject payload) throws GsonTools.JsonObjectExtensionConflictException {
|
||||||
logger.info("[contact note] create {}", payload.toString());
|
logger.info("[contact note] create {}", payload.toString());
|
||||||
@ -199,9 +192,6 @@ public class ApiContactNotesController extends Handler {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 验证创建数据
|
* 验证创建数据
|
||||||
*
|
|
||||||
* @param payload
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
private String validateCreatePayload(JsonObject payload) {
|
private String validateCreatePayload(JsonObject payload) {
|
||||||
if (!payload.has("category")) {
|
if (!payload.has("category")) {
|
||||||
@ -215,8 +205,7 @@ public class ApiContactNotesController extends Handler {
|
|||||||
if ((!payload.has("contactid")) || StringUtils.isBlank(payload.get("contactid").getAsString())) {
|
if ((!payload.has("contactid")) || StringUtils.isBlank(payload.get("contactid").getAsString())) {
|
||||||
return "参数传递不合法,没有[contactid]。";
|
return "参数传递不合法,没有[contactid]。";
|
||||||
} else {
|
} else {
|
||||||
Contacts c = contactsRes.findOne(payload.get("contactid").getAsString());
|
if (!contactsRes.existsById(payload.get("contactid").getAsString()))
|
||||||
if (c == null)
|
|
||||||
return "参数不合法,不存在该联系人。";
|
return "参数不合法,不存在该联系人。";
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -225,12 +214,9 @@ public class ApiContactNotesController extends Handler {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Build query string
|
* Build query string
|
||||||
*
|
|
||||||
* @param j
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
private String querybuilder(final JsonObject j) {
|
private String querybuilder(final JsonObject j) {
|
||||||
StringBuffer sb = new StringBuffer();
|
StringBuilder sb = new StringBuilder();
|
||||||
if (j.has("orgi")) {
|
if (j.has("orgi")) {
|
||||||
sb.append("orgi:");
|
sb.append("orgi:");
|
||||||
sb.append(j.get("orgi").getAsString());
|
sb.append(j.get("orgi").getAsString());
|
||||||
@ -242,10 +228,6 @@ public class ApiContactNotesController extends Handler {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据联系人ID获取联系人笔记列表
|
* 根据联系人ID获取联系人笔记列表
|
||||||
*
|
|
||||||
* @param j
|
|
||||||
* @param request
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
private JsonObject fetch(final JsonObject j, final HttpServletRequest request) throws GsonTools.JsonObjectExtensionConflictException {
|
private JsonObject fetch(final JsonObject j, final HttpServletRequest request) throws GsonTools.JsonObjectExtensionConflictException {
|
||||||
logger.info("[contact note] fetch [{}]", j.toString());
|
logger.info("[contact note] fetch [{}]", j.toString());
|
||||||
@ -256,9 +238,8 @@ public class ApiContactNotesController extends Handler {
|
|||||||
return resp;
|
return resp;
|
||||||
}
|
}
|
||||||
final String cid = j.get("contactid").getAsString();
|
final String cid = j.get("contactid").getAsString();
|
||||||
Contacts c = contactsRes.findOne(cid);
|
|
||||||
|
|
||||||
if (c == null) {
|
if (!contactsRes.existsById(cid)) {
|
||||||
resp.addProperty(RestUtils.RESP_KEY_RC, RestUtils.RESP_RC_FAIL_4);
|
resp.addProperty(RestUtils.RESP_KEY_RC, RestUtils.RESP_RC_FAIL_4);
|
||||||
resp.addProperty(RestUtils.RESP_KEY_ERROR, "不存在该联系人。");
|
resp.addProperty(RestUtils.RESP_KEY_ERROR, "不存在该联系人。");
|
||||||
return resp;
|
return resp;
|
||||||
@ -298,17 +279,11 @@ public class ApiContactNotesController extends Handler {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 联系人笔记
|
* 联系人笔记
|
||||||
*
|
|
||||||
* @param request
|
|
||||||
* @param body
|
|
||||||
* @return
|
|
||||||
* @throws CSKefuRestException
|
|
||||||
* @throws GsonTools.JsonObjectExtensionConflictException
|
|
||||||
*/
|
*/
|
||||||
@RequestMapping(method = RequestMethod.POST)
|
@RequestMapping(method = RequestMethod.POST)
|
||||||
@Menu(type = "apps", subtype = "contactnotes", access = true)
|
@Menu(type = "apps", subtype = "contactnotes", access = true)
|
||||||
public ResponseEntity<String> operations(HttpServletRequest request, @RequestBody final String body) throws CSKefuRestException, GsonTools.JsonObjectExtensionConflictException {
|
public ResponseEntity<String> operations(HttpServletRequest request, @RequestBody final String body) throws GsonTools.JsonObjectExtensionConflictException {
|
||||||
final JsonObject j = (new JsonParser()).parse(body).getAsJsonObject();
|
final JsonObject j = JsonParser.parseString(body).getAsJsonObject();
|
||||||
logger.info("[contact note] operations payload {}", j.toString());
|
logger.info("[contact note] operations payload {}", j.toString());
|
||||||
JsonObject json = new JsonObject();
|
JsonObject json = new JsonObject();
|
||||||
HttpHeaders headers = RestUtils.header();
|
HttpHeaders headers = RestUtils.header();
|
||||||
@ -335,7 +310,7 @@ public class ApiContactNotesController extends Handler {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return new ResponseEntity<String>(json.toString(), headers, HttpStatus.OK);
|
return new ResponseEntity<>(json.toString(), headers, HttpStatus.OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,94 +1,87 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2017 优客服-多渠道客服系统
|
* Copyright (C) 2017 优客服-多渠道客服系统
|
||||||
* Modifications copyright (C) 2018-2019 Chatopera Inc, <https://www.chatopera.com>
|
* Modifications copyright (C) 2018-2019 Chatopera Inc, <https://www.chatopera.com>
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
package com.chatopera.cc.controller.api;
|
package com.chatopera.cc.controller.api;
|
||||||
|
|
||||||
import com.chatopera.cc.controller.Handler;
|
import com.chatopera.cc.controller.Handler;
|
||||||
import com.chatopera.cc.model.Organ;
|
import com.chatopera.cc.model.Organ;
|
||||||
import com.chatopera.cc.persistence.repository.OrganRepository;
|
import com.chatopera.cc.persistence.repository.OrganRepository;
|
||||||
import com.chatopera.cc.util.Menu;
|
import com.chatopera.cc.util.Menu;
|
||||||
import com.chatopera.cc.util.RestResult;
|
import com.chatopera.cc.util.RestResult;
|
||||||
import com.chatopera.cc.util.RestResultType;
|
import com.chatopera.cc.util.RestResultType;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.lang.NonNull;
|
||||||
import org.springframework.web.bind.annotation.RequestMethod;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RequestMethod;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
|
||||||
import javax.validation.Valid;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.validation.Valid;
|
||||||
/**
|
|
||||||
* 组织机构/部门/技能组功能
|
/**
|
||||||
*/
|
* 组织机构/部门/技能组功能
|
||||||
@RestController
|
*/
|
||||||
@RequestMapping("/api/organ")
|
@RestController
|
||||||
public class ApiOrganController extends Handler{
|
@RequestMapping("/api/organ")
|
||||||
|
@RequiredArgsConstructor
|
||||||
@Autowired
|
public class ApiOrganController extends Handler {
|
||||||
private OrganRepository organRepository;
|
|
||||||
|
@NonNull
|
||||||
/**
|
private final OrganRepository organRepository;
|
||||||
* 返回所有部门
|
|
||||||
* @param request
|
/**
|
||||||
* @param username 搜索用户名,精确搜索
|
* 返回所有部门
|
||||||
* @return
|
*/
|
||||||
*/
|
@RequestMapping(method = RequestMethod.GET)
|
||||||
@RequestMapping( method = RequestMethod.GET)
|
@Menu(type = "apps", subtype = "organ", access = true)
|
||||||
@Menu(type = "apps" , subtype = "organ" , access = true)
|
public ResponseEntity<RestResult> list(HttpServletRequest request) {
|
||||||
public ResponseEntity<RestResult> list(HttpServletRequest request) {
|
return new ResponseEntity<>(new RestResult(RestResultType.OK, organRepository.findByOrgi(super.getOrgi(request))), HttpStatus.OK);
|
||||||
return new ResponseEntity<>(new RestResult(RestResultType.OK, organRepository.findByOrgi(super.getOrgi(request))), HttpStatus.OK);
|
}
|
||||||
}
|
|
||||||
|
/**
|
||||||
/**
|
* 新增或修改部门
|
||||||
* 新增或修改部门
|
*/
|
||||||
* @param request
|
@RequestMapping(method = RequestMethod.PUT)
|
||||||
* @param user
|
@Menu(type = "apps", subtype = "organ", access = true)
|
||||||
* @return
|
public ResponseEntity<RestResult> put(@Valid Organ organ) {
|
||||||
*/
|
if (organ != null && !StringUtils.isBlank(organ.getName())) {
|
||||||
@RequestMapping(method = RequestMethod.PUT)
|
organRepository.save(organ);
|
||||||
@Menu(type = "apps" , subtype = "organ" , access = true)
|
}
|
||||||
public ResponseEntity<RestResult> put(HttpServletRequest request , @Valid Organ organ) {
|
return new ResponseEntity<>(new RestResult(RestResultType.OK), HttpStatus.OK);
|
||||||
if(organ != null && !StringUtils.isBlank(organ.getName())){
|
}
|
||||||
organRepository.save(organ) ;
|
|
||||||
}
|
/**
|
||||||
return new ResponseEntity<>(new RestResult(RestResultType.OK), HttpStatus.OK);
|
* 删除用户,只提供 按照用户ID删除 , 并且,不能删除系统管理员
|
||||||
}
|
*/
|
||||||
|
@RequestMapping(method = RequestMethod.DELETE)
|
||||||
/**
|
@Menu(type = "apps", subtype = "user", access = true)
|
||||||
* 删除用户,只提供 按照用户ID删除 , 并且,不能删除系统管理员
|
public ResponseEntity<RestResult> delete(HttpServletRequest request, @Valid String id) {
|
||||||
* @param request
|
RestResult result = new RestResult(RestResultType.OK);
|
||||||
* @param id
|
Organ organ;
|
||||||
* @return
|
if (!StringUtils.isBlank(id)) {
|
||||||
*/
|
organ = organRepository.findByIdAndOrgi(id, super.getOrgi(request));
|
||||||
@RequestMapping(method = RequestMethod.DELETE)
|
if (organ != null) { //系统管理员, 不允许 使用 接口删除
|
||||||
@Menu(type = "apps" , subtype = "user" , access = true)
|
organRepository.delete(organ);
|
||||||
public ResponseEntity<RestResult> delete(HttpServletRequest request , @Valid String id) {
|
} else {
|
||||||
RestResult result = new RestResult(RestResultType.OK) ;
|
result.setStatus(RestResultType.ORGAN_DELETE);
|
||||||
Organ organ = null ;
|
}
|
||||||
if(!StringUtils.isBlank(id)){
|
}
|
||||||
organ = organRepository.findByIdAndOrgi(id, super.getOrgi(request)) ;
|
return new ResponseEntity<>(result, HttpStatus.OK);
|
||||||
if(organ != null){ //系统管理员, 不允许 使用 接口删除
|
}
|
||||||
organRepository.delete(organ);
|
}
|
||||||
}else{
|
|
||||||
result.setStatus(RestResultType.ORGAN_DELETE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return new ResponseEntity<>(result, HttpStatus.OK);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -25,9 +25,10 @@ import com.chatopera.cc.persistence.repository.OrgiSkillRelRepository;
|
|||||||
import com.chatopera.cc.persistence.repository.UserRepository;
|
import com.chatopera.cc.persistence.repository.UserRepository;
|
||||||
import com.chatopera.cc.proxy.UserProxy;
|
import com.chatopera.cc.proxy.UserProxy;
|
||||||
import com.chatopera.cc.util.Menu;
|
import com.chatopera.cc.util.Menu;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.data.domain.Page;
|
import org.springframework.data.domain.Page;
|
||||||
import org.springframework.data.domain.PageRequest;
|
import org.springframework.data.domain.PageRequest;
|
||||||
|
import org.springframework.lang.NonNull;
|
||||||
import org.springframework.stereotype.Controller;
|
import org.springframework.stereotype.Controller;
|
||||||
import org.springframework.ui.ModelMap;
|
import org.springframework.ui.ModelMap;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
@ -40,22 +41,23 @@ import java.util.List;
|
|||||||
|
|
||||||
@Controller
|
@Controller
|
||||||
@RequestMapping("/res")
|
@RequestMapping("/res")
|
||||||
|
@RequiredArgsConstructor
|
||||||
public class UsersResourceController extends Handler {
|
public class UsersResourceController extends Handler {
|
||||||
@Autowired
|
@NonNull
|
||||||
private UserRepository userRes;
|
private final UserRepository userRes;
|
||||||
|
|
||||||
@Autowired
|
@NonNull
|
||||||
private OrgiSkillRelRepository orgiSkillRelService;
|
private final OrgiSkillRelRepository orgiSkillRelService;
|
||||||
|
|
||||||
@Autowired
|
@NonNull
|
||||||
private OrganRepository organRes;
|
private final OrganRepository organRes;
|
||||||
|
|
||||||
@Autowired
|
@NonNull
|
||||||
private UserProxy userProxy;
|
private final UserProxy userProxy;
|
||||||
|
|
||||||
@RequestMapping("/users")
|
@RequestMapping("/users")
|
||||||
@Menu(type = "res", subtype = "users")
|
@Menu(type = "res", subtype = "users")
|
||||||
public ModelAndView add(ModelMap map, HttpServletRequest request, @Valid String q, @Valid String id) {
|
public ModelAndView add(ModelMap map, HttpServletRequest request, @Valid String q) {
|
||||||
if (q == null) {
|
if (q == null) {
|
||||||
q = "";
|
q = "";
|
||||||
}
|
}
|
||||||
@ -65,7 +67,7 @@ public class UsersResourceController extends Handler {
|
|||||||
|
|
||||||
@RequestMapping("/bpm/users")
|
@RequestMapping("/bpm/users")
|
||||||
@Menu(type = "res", subtype = "users")
|
@Menu(type = "res", subtype = "users")
|
||||||
public ModelAndView bpmusers(ModelMap map, HttpServletRequest request, @Valid String q, @Valid String id) {
|
public ModelAndView bpmusers(ModelMap map, HttpServletRequest request, @Valid String q) {
|
||||||
if (q == null) {
|
if (q == null) {
|
||||||
q = "";
|
q = "";
|
||||||
}
|
}
|
||||||
@ -75,7 +77,7 @@ public class UsersResourceController extends Handler {
|
|||||||
|
|
||||||
@RequestMapping("/bpm/organ")
|
@RequestMapping("/bpm/organ")
|
||||||
@Menu(type = "res", subtype = "users")
|
@Menu(type = "res", subtype = "users")
|
||||||
public ModelAndView organ(ModelMap map, HttpServletRequest request, @Valid String q, @Valid String ids) {
|
public ModelAndView organ(ModelMap map, HttpServletRequest request, @Valid String ids) {
|
||||||
map.addAttribute("organList", getOrgans(request));
|
map.addAttribute("organList", getOrgans(request));
|
||||||
map.addAttribute("usersList", getUsers(request));
|
map.addAttribute("usersList", getUsers(request));
|
||||||
map.addAttribute("ids", ids);
|
map.addAttribute("ids", ids);
|
||||||
@ -83,7 +85,7 @@ public class UsersResourceController extends Handler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private List<User> getUsers(HttpServletRequest request) {
|
private List<User> getUsers(HttpServletRequest request) {
|
||||||
List<User> list = null;
|
List<User> list;
|
||||||
if (super.isTenantshare()) {
|
if (super.isTenantshare()) {
|
||||||
List<String> organIdList = new ArrayList<>();
|
List<String> organIdList = new ArrayList<>();
|
||||||
List<OrgiSkillRel> orgiSkillRelList = orgiSkillRelService.findByOrgi(super.getOrgi(request));
|
List<OrgiSkillRel> orgiSkillRelList = orgiSkillRelService.findByOrgi(super.getOrgi(request));
|
||||||
@ -101,16 +103,12 @@ public class UsersResourceController extends Handler {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取当前产品下人员信息
|
* 获取当前产品下人员信息
|
||||||
*
|
|
||||||
* @param request
|
|
||||||
* @param q
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
private Page<User> getUsers(HttpServletRequest request, String q) {
|
private Page<User> getUsers(HttpServletRequest request, String q) {
|
||||||
if (q == null) {
|
if (q == null) {
|
||||||
q = "";
|
q = "";
|
||||||
}
|
}
|
||||||
Page<User> list = null;
|
Page<User> list;
|
||||||
if (super.isTenantshare()) {
|
if (super.isTenantshare()) {
|
||||||
List<String> organIdList = new ArrayList<>();
|
List<String> organIdList = new ArrayList<>();
|
||||||
List<OrgiSkillRel> orgiSkillRelList = orgiSkillRelService.findByOrgi(super.getOrgi(request));
|
List<OrgiSkillRel> orgiSkillRelList = orgiSkillRelService.findByOrgi(super.getOrgi(request));
|
||||||
@ -128,12 +126,9 @@ public class UsersResourceController extends Handler {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取当前产品下 技能组 组织信息
|
* 获取当前产品下 技能组 组织信息
|
||||||
*
|
|
||||||
* @param request
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
private List<Organ> getOrgans(HttpServletRequest request) {
|
private List<Organ> getOrgans(HttpServletRequest request) {
|
||||||
List<Organ> list = null;
|
List<Organ> list;
|
||||||
if (super.isTenantshare()) {
|
if (super.isTenantshare()) {
|
||||||
List<String> organIdList = new ArrayList<>();
|
List<String> organIdList = new ArrayList<>();
|
||||||
List<OrgiSkillRel> orgiSkillRelList = orgiSkillRelService.findByOrgi(super.getOrgi(request));
|
List<OrgiSkillRel> orgiSkillRelList = orgiSkillRelService.findByOrgi(super.getOrgi(request));
|
||||||
|
@ -1,46 +1,48 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2017 优客服-多渠道客服系统
|
* Copyright (C) 2017 优客服-多渠道客服系统
|
||||||
* Modifications copyright (C) 2018-2019 Chatopera Inc, <https://www.chatopera.com>
|
* Modifications copyright (C) 2018-2019 Chatopera Inc, <https://www.chatopera.com>
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
package com.chatopera.cc.persistence.impl;
|
package com.chatopera.cc.persistence.impl;
|
||||||
|
|
||||||
import com.chatopera.cc.model.Organ;
|
import com.chatopera.cc.model.Organ;
|
||||||
import com.chatopera.cc.persistence.interfaces.DataExchangeInterface;
|
import com.chatopera.cc.persistence.interfaces.DataExchangeInterface;
|
||||||
import com.chatopera.cc.persistence.repository.OrganRepository;
|
import com.chatopera.cc.persistence.repository.OrganRepository;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.lang.NonNull;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.List;
|
import java.io.Serializable;
|
||||||
|
import java.util.List;
|
||||||
@Service("organdata")
|
|
||||||
public class OrganDataExchangeImpl implements DataExchangeInterface {
|
@Service("organdata")
|
||||||
@Autowired
|
@RequiredArgsConstructor
|
||||||
private OrganRepository organRes ;
|
public class OrganDataExchangeImpl implements DataExchangeInterface {
|
||||||
|
@NonNull
|
||||||
public String getDataByIdAndOrgi(String id, String orgi){
|
private final OrganRepository organRes;
|
||||||
Organ organ = organRes.findByIdAndOrgi(id, orgi) ;
|
|
||||||
return organ!=null ? organ.getName() : id;
|
public String getDataByIdAndOrgi(String id, String orgi) {
|
||||||
}
|
Organ organ = organRes.findByIdAndOrgi(id, orgi);
|
||||||
|
return organ != null ? organ.getName() : id;
|
||||||
@Override
|
}
|
||||||
public List<Serializable> getListDataByIdAndOrgi(String id , String creater, String orgi) {
|
|
||||||
return null ;
|
@Override
|
||||||
}
|
public List<Serializable> getListDataByIdAndOrgi(String id, String creater, String orgi) {
|
||||||
|
return null;
|
||||||
public void process(Object data , String orgi) {
|
}
|
||||||
|
|
||||||
}
|
public void process(Object data, String orgi) {
|
||||||
}
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -1,53 +1,51 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2017 优客服-多渠道客服系统
|
* Copyright (C) 2017 优客服-多渠道客服系统
|
||||||
* Modifications copyright (C) 2018-2019 Chatopera Inc, <https://www.chatopera.com>
|
* Modifications copyright (C) 2018-2019 Chatopera Inc, <https://www.chatopera.com>
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
package com.chatopera.cc.persistence.repository;
|
package com.chatopera.cc.persistence.repository;
|
||||||
|
|
||||||
import com.chatopera.cc.model.Organ;
|
import com.chatopera.cc.model.Organ;
|
||||||
import org.springframework.data.domain.Page;
|
import org.springframework.data.domain.Page;
|
||||||
import org.springframework.data.domain.Pageable;
|
import org.springframework.data.domain.Pageable;
|
||||||
import org.springframework.data.jpa.repository.JpaRepository;
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public interface OrganRepository
|
public interface OrganRepository extends JpaRepository<Organ, String> {
|
||||||
extends JpaRepository<Organ, String>
|
Organ findByIdAndOrgi(String paramString, String orgi);
|
||||||
{
|
|
||||||
Organ findByIdAndOrgi(String paramString, String orgi);
|
Page<Organ> findByOrgi(String orgi, Pageable paramPageable);
|
||||||
|
|
||||||
Page<Organ> findByOrgi(String orgi, Pageable paramPageable);
|
// Page<Organ> findByOrgiAndOrgid(String orgi, String orgid, Pageable paramPageable);
|
||||||
|
|
||||||
Page<Organ> findByOrgiAndOrgid(String orgi, String orgid, Pageable paramPageable);
|
Organ findByNameAndOrgi(String paramString, String orgi);
|
||||||
|
|
||||||
Organ findByNameAndOrgi(String paramString, String orgi);
|
Organ findByNameAndOrgiAndOrgid(String paramString, String orgi, String orgid);
|
||||||
|
|
||||||
Organ findByNameAndOrgiAndOrgid(String paramString, String orgi, String orgid);
|
// Organ findByParentAndOrgi(String parent, String orgi);
|
||||||
|
|
||||||
Organ findByParentAndOrgi(String parent, String orgi);
|
List<Organ> findByOrgiAndParent(String orgi, String parent);
|
||||||
|
|
||||||
List<Organ> findByOrgiAndParent(String orgi, String parent);
|
List<Organ> findByOrgi(String orgi);
|
||||||
|
|
||||||
List<Organ> findByOrgi(String orgi);
|
List<Organ> findByOrgiAndOrgid(String orgi, String orgid);
|
||||||
|
|
||||||
List<Organ> findByOrgiAndOrgid(String orgi, String orgid);
|
List<Organ> findByOrgiAndSkill(String orgi, boolean skill);
|
||||||
|
|
||||||
List<Organ> findByOrgiAndSkill(String orgi, boolean skill);
|
List<Organ> findByOrgiAndSkillAndOrgid(String orgi, boolean skill, String orgid);
|
||||||
|
|
||||||
List<Organ> findByOrgiAndSkillAndOrgid(String orgi, boolean skill, String orgid);
|
List<Organ> findByIdInAndSkill(List<String> organIdList, boolean b);
|
||||||
|
|
||||||
List<Organ> findByIdInAndSkill(List<String> organIdList, boolean b);
|
}
|
||||||
|
|
||||||
}
|
|
||||||
|
@ -32,6 +32,7 @@ import freemarker.template.TemplateException;
|
|||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.lang.Nullable;
|
||||||
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
|
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
|
||||||
|
|
||||||
import javax.servlet.http.Cookie;
|
import javax.servlet.http.Cookie;
|
||||||
@ -61,6 +62,7 @@ public class OnlineUserProxy {
|
|||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
@Nullable
|
||||||
public static CousultInvite consult(final String snsid, final String orgi) {
|
public static CousultInvite consult(final String snsid, final String orgi) {
|
||||||
// logger.info("[consult] snsid {}, orgi {}", snsid, orgi);
|
// logger.info("[consult] snsid {}, orgi {}", snsid, orgi);
|
||||||
CousultInvite consultInvite = MainContext.getCache().findOneConsultInviteBySnsidAndOrgi(snsid, orgi);
|
CousultInvite consultInvite = MainContext.getCache().findOneConsultInviteBySnsidAndOrgi(snsid, orgi);
|
||||||
|
@ -1,30 +1,23 @@
|
|||||||
package com.chatopera.cc.proxy;
|
package com.chatopera.cc.proxy;
|
||||||
|
|
||||||
import com.chatopera.cc.controller.admin.OrganController;
|
|
||||||
import com.chatopera.cc.model.Organ;
|
import com.chatopera.cc.model.Organ;
|
||||||
import com.chatopera.cc.model.User;
|
|
||||||
import com.chatopera.cc.persistence.repository.OrganRepository;
|
import com.chatopera.cc.persistence.repository.OrganRepository;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.slf4j.Logger;
|
import org.springframework.lang.NonNull;
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
|
@RequiredArgsConstructor
|
||||||
public class OrganProxy {
|
public class OrganProxy {
|
||||||
private final static Logger logger = LoggerFactory.getLogger(OrganController.class);
|
|
||||||
|
|
||||||
@Autowired
|
@NonNull
|
||||||
private OrganRepository organRes;
|
private final OrganRepository organRes;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 检查组织机构树
|
* 检查组织机构树
|
||||||
* @param organ
|
|
||||||
* @param organId
|
|
||||||
* @param orgi
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
private boolean checkParentOrgan(Organ organ, String organId, String orgi) {
|
private boolean checkParentOrgan(Organ organ, String organId, String orgi) {
|
||||||
if (StringUtils.equals(organ.getParent(), "0")) {
|
if (StringUtils.equals(organ.getParent(), "0")) {
|
||||||
@ -48,13 +41,7 @@ public class OrganProxy {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
public String updateOrgan(final Organ organ, final String orgi) {
|
||||||
* @param organ
|
|
||||||
* @param orgi
|
|
||||||
* @param user
|
|
||||||
* @return msg
|
|
||||||
*/
|
|
||||||
public String updateOrgan(final Organ organ, final String orgi, final User user) {
|
|
||||||
final Organ oldOrgan = organRes.findByNameAndOrgi(organ.getName(), orgi);
|
final Organ oldOrgan = organRes.findByNameAndOrgi(organ.getName(), orgi);
|
||||||
|
|
||||||
String msg = "admin_organ_update_success";
|
String msg = "admin_organ_update_success";
|
||||||
|
@ -20,52 +20,47 @@ import com.chatopera.cc.persistence.repository.OrganUserRepository;
|
|||||||
import com.chatopera.cc.persistence.repository.RoleAuthRepository;
|
import com.chatopera.cc.persistence.repository.RoleAuthRepository;
|
||||||
import com.chatopera.cc.persistence.repository.UserRepository;
|
import com.chatopera.cc.persistence.repository.UserRepository;
|
||||||
import com.google.gson.JsonObject;
|
import com.google.gson.JsonObject;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.data.domain.Page;
|
import org.springframework.data.domain.Page;
|
||||||
import org.springframework.data.domain.Pageable;
|
import org.springframework.data.domain.Pageable;
|
||||||
import org.springframework.data.jpa.domain.Specification;
|
import org.springframework.data.jpa.domain.Specification;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.springframework.lang.NonNull;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
import org.springframework.web.server.ResponseStatusException;
|
||||||
|
|
||||||
import javax.persistence.criteria.CriteriaBuilder;
|
|
||||||
import javax.persistence.criteria.CriteriaQuery;
|
|
||||||
import javax.persistence.criteria.Predicate;
|
import javax.persistence.criteria.Predicate;
|
||||||
import javax.persistence.criteria.Root;
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 用户/坐席 常用方法
|
* 用户/坐席 常用方法
|
||||||
*/
|
*/
|
||||||
@Component
|
@Component
|
||||||
|
@RequiredArgsConstructor
|
||||||
public class UserProxy {
|
public class UserProxy {
|
||||||
private final static Logger logger = LoggerFactory.getLogger(UserProxy.class);
|
private final static Logger logger = LoggerFactory.getLogger(UserProxy.class);
|
||||||
|
|
||||||
@Autowired
|
@NonNull
|
||||||
private OrganUserRepository organUserRes;
|
private final OrganUserRepository organUserRes;
|
||||||
|
|
||||||
@Autowired
|
@NonNull
|
||||||
private OrganRepository organRes;
|
private final OrganRepository organRes;
|
||||||
|
|
||||||
@Autowired
|
@NonNull
|
||||||
private UserRepository userRes;
|
private final UserRepository userRes;
|
||||||
|
|
||||||
@Autowired
|
@NonNull
|
||||||
private RoleAuthRepository roleAuthRes;
|
private final RoleAuthRepository roleAuthRes;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建新用户
|
* 创建新用户
|
||||||
* 支持多租户
|
* 支持多租户
|
||||||
*
|
|
||||||
* @param user
|
|
||||||
* @param orgi
|
|
||||||
* @param orgid
|
|
||||||
* @param orgiByTenantshare
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
public String createNewUser(final User user, final String orgi, final String orgid, final String orgiByTenantshare) {
|
public String createNewUser(final User user, final String orgi, final String orgid, final String orgiByTenantshare) {
|
||||||
String msg = "";
|
String msg;
|
||||||
msg = validUser(user);
|
msg = validUser(user);
|
||||||
if (StringUtils.isNotBlank(msg) && !msg.equals("new_user_success")) {
|
if (StringUtils.isNotBlank(msg) && !msg.equals("new_user_success")) {
|
||||||
return msg;
|
return msg;
|
||||||
@ -90,8 +85,10 @@ public class UserProxy {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@NonNull
|
||||||
public User findOne(final String id) {
|
public User findOne(final String id) {
|
||||||
return userRes.findOne(id);
|
return userRes.findById(id)
|
||||||
|
.orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_FOUND, String.format("User %s not found", id)));
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<String> findUserIdsInOrgan(final String organ) {
|
public List<String> findUserIdsInOrgan(final String organ) {
|
||||||
@ -127,13 +124,10 @@ public class UserProxy {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 通过坐席ID查找其技能组Map
|
* 通过坐席ID查找其技能组Map
|
||||||
*
|
|
||||||
* @param agentno
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
public HashMap<String, String> getSkillsMapByAgentno(final String agentno) {
|
public HashMap<String, String> getSkillsMapByAgentno(final String agentno) {
|
||||||
|
|
||||||
final User user = userRes.findOne(agentno);
|
final User user = userRes.findById(agentno).orElse(null);
|
||||||
if (user == null) return new HashMap<>();
|
if (user == null) return new HashMap<>();
|
||||||
|
|
||||||
attachOrgansPropertiesForUser(user);
|
attachOrgansPropertiesForUser(user);
|
||||||
@ -142,9 +136,6 @@ public class UserProxy {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 获得一个用户的直属组织机构
|
* 获得一个用户的直属组织机构
|
||||||
*
|
|
||||||
* @param userid
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
public List<String> findOrgansByUserid(final String userid) {
|
public List<String> findOrgansByUserid(final String userid) {
|
||||||
List<OrganUser> x = organUserRes.findByUserid(userid);
|
List<OrganUser> x = organUserRes.findByUserid(userid);
|
||||||
@ -216,10 +207,6 @@ public class UserProxy {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 检查用户更新是否合理
|
* 检查用户更新是否合理
|
||||||
*
|
|
||||||
* @param user
|
|
||||||
* @param oldUser
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
public String validUserUpdate(final User user, final User oldUser) {
|
public String validUserUpdate(final User user, final User oldUser) {
|
||||||
String msg = "edit_user_success";
|
String msg = "edit_user_success";
|
||||||
@ -265,9 +252,6 @@ public class UserProxy {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 从Json中创建User
|
* 从Json中创建User
|
||||||
*
|
|
||||||
* @param json
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
public User parseUserFromJson(final JsonObject json) {
|
public User parseUserFromJson(final JsonObject json) {
|
||||||
User tempUser = new User();
|
User tempUser = new User();
|
||||||
@ -323,11 +307,7 @@ public class UserProxy {
|
|||||||
// 是否是坐席
|
// 是否是坐席
|
||||||
if (json.has("agent")) {
|
if (json.has("agent")) {
|
||||||
String val = json.get("agent").getAsString();
|
String val = json.get("agent").getAsString();
|
||||||
if (StringUtils.isNotBlank(val) && StringUtils.equals("1", val)) {
|
tempUser.setAgent(StringUtils.isNotBlank(val) && StringUtils.equals("1", val));
|
||||||
tempUser.setAgent(true);
|
|
||||||
} else {
|
|
||||||
tempUser.setAgent(false);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
tempUser.setAgent(false);
|
tempUser.setAgent(false);
|
||||||
}
|
}
|
||||||
@ -349,11 +329,7 @@ public class UserProxy {
|
|||||||
// 是否是呼叫中心
|
// 是否是呼叫中心
|
||||||
if (json.has("callcenter")) {
|
if (json.has("callcenter")) {
|
||||||
String val = json.get("callcenter").getAsString();
|
String val = json.get("callcenter").getAsString();
|
||||||
if (StringUtils.isNotBlank(val) && StringUtils.equals("1", val)) {
|
tempUser.setCallcenter(StringUtils.isNotBlank(val) && StringUtils.equals("1", val));
|
||||||
tempUser.setCallcenter(true);
|
|
||||||
} else {
|
|
||||||
tempUser.setCallcenter(false);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
tempUser.setCallcenter(false);
|
tempUser.setCallcenter(false);
|
||||||
}
|
}
|
||||||
@ -374,9 +350,6 @@ public class UserProxy {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 验证用户数据合法性
|
* 验证用户数据合法性
|
||||||
*
|
|
||||||
* @param user
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
public String validUser(final User user) {
|
public String validUser(final User user) {
|
||||||
String msg = "new_user_success";
|
String msg = "new_user_success";
|
||||||
@ -428,11 +401,6 @@ public class UserProxy {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 或取Sips列表
|
* 或取Sips列表
|
||||||
*
|
|
||||||
* @param organ
|
|
||||||
* @param datastatus
|
|
||||||
* @param orgi
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
public List<String> findSipsByOrganAndDatastatusAndOrgi(final String organ, final boolean datastatus, final String orgi) {
|
public List<String> findSipsByOrganAndDatastatusAndOrgi(final String organ, final boolean datastatus, final String orgi) {
|
||||||
List<String> users = findUserIdsInOrgan(organ);
|
List<String> users = findUserIdsInOrgan(organ);
|
||||||
@ -445,15 +413,8 @@ public class UserProxy {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 通过租户ID,是否为坐席,是否有效和组织机构查询坐席数
|
* 通过租户ID,是否为坐席,是否有效和组织机构查询坐席数
|
||||||
*
|
|
||||||
* @param orgi
|
|
||||||
* @param agent
|
|
||||||
* @param datastatus
|
|
||||||
* @param organ
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
public long countByOrgiAndAgentAndDatastatusAndOrgan(
|
public long countByOrgiAndAgentAndDatastatusAndOrgan(
|
||||||
final String orgi,
|
|
||||||
final boolean agent,
|
final boolean agent,
|
||||||
final boolean datastatus,
|
final boolean datastatus,
|
||||||
final String organ) {
|
final String organ) {
|
||||||
@ -468,26 +429,19 @@ public class UserProxy {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 增加用户的角色信息
|
* 增加用户的角色信息
|
||||||
*
|
|
||||||
* @param user
|
|
||||||
*/
|
*/
|
||||||
public void attachRolesMap(final User user) {
|
public void attachRolesMap(final User user) {
|
||||||
// 获取用户的角色权限,进行授权
|
// 获取用户的角色权限,进行授权
|
||||||
List<RoleAuth> roleAuthList = roleAuthRes.findAll(new Specification<RoleAuth>() {
|
List<RoleAuth> roleAuthList = roleAuthRes.findAll((Specification<RoleAuth>) (root, query, cb) -> {
|
||||||
@Override
|
List<Predicate> criteria = new ArrayList<>();
|
||||||
public Predicate toPredicate(
|
if (user.getRoleList() != null && user.getRoleList().size() > 0) {
|
||||||
Root<RoleAuth> root, CriteriaQuery<?> query,
|
for (Role role : user.getRoleList()) {
|
||||||
CriteriaBuilder cb) {
|
criteria.add(cb.equal(root.get("roleid").as(String.class), role.getId()));
|
||||||
List<Predicate> criteria = new ArrayList<Predicate>();
|
|
||||||
if (user.getRoleList() != null && user.getRoleList().size() > 0) {
|
|
||||||
for (Role role : user.getRoleList()) {
|
|
||||||
criteria.add(cb.equal(root.get("roleid").as(String.class), role.getId()));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Predicate[] p = new Predicate[criteria.size()];
|
|
||||||
cb.and(cb.equal(root.get("orgi").as(String.class), user.getOrgi()));
|
|
||||||
return cb.or(criteria.toArray(p));
|
|
||||||
}
|
}
|
||||||
|
Predicate[] p = new Predicate[criteria.size()];
|
||||||
|
cb.and(cb.equal(root.get("orgi").as(String.class), user.getOrgi()));
|
||||||
|
return cb.or(criteria.toArray(p));
|
||||||
});
|
});
|
||||||
|
|
||||||
// clear previous auth map values, ensure the changes are token effect in real time.
|
// clear previous auth map values, ensure the changes are token effect in real time.
|
||||||
@ -501,8 +455,6 @@ public class UserProxy {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 获得一个部门及其子部门并添加到User的myorgans中
|
* 获得一个部门及其子部门并添加到User的myorgans中
|
||||||
*
|
|
||||||
* @param user
|
|
||||||
*/
|
*/
|
||||||
public void processAffiliates(final User user, final Organ organ) {
|
public void processAffiliates(final User user, final Organ organ) {
|
||||||
if (organ == null) {
|
if (organ == null) {
|
||||||
@ -530,8 +482,6 @@ public class UserProxy {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取用户部门以及下级部门
|
* 获取用户部门以及下级部门
|
||||||
*
|
|
||||||
* @param user
|
|
||||||
*/
|
*/
|
||||||
public void attachOrgansPropertiesForUser(final User user) {
|
public void attachOrgansPropertiesForUser(final User user) {
|
||||||
List<OrganUser> organs = organUserRes.findByUserid(user.getId());
|
List<OrganUser> organs = organUserRes.findByUserid(user.getId());
|
||||||
@ -542,8 +492,10 @@ public class UserProxy {
|
|||||||
|
|
||||||
for (final OrganUser organ : organs) {
|
for (final OrganUser organ : organs) {
|
||||||
// 添加直属部门到organs
|
// 添加直属部门到organs
|
||||||
final Organ o = organRes.findOne(organ.getOrgan());
|
String id = organ.getOrgan();
|
||||||
user.getOrgans().put(organ.getOrgan(), o);
|
final Organ o = organRes.findById(id)
|
||||||
|
.orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_FOUND, String.format("Organization %s not found", id)));
|
||||||
|
user.getOrgans().put(id, o);
|
||||||
if (o.isSkill()) {
|
if (o.isSkill()) {
|
||||||
skills.put(o.getId(), o.getName());
|
skills.put(o.getId(), o.getName());
|
||||||
}
|
}
|
||||||
|
@ -1,506 +1,424 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2017 优客服-多渠道客服系统
|
* Copyright (C) 2017 优客服-多渠道客服系统
|
||||||
* Modifications copyright (C) 2018-2019 Chatopera Inc, <https://www.chatopera.com>
|
* Modifications copyright (C) 2018-2019 Chatopera Inc, <https://www.chatopera.com>
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
package com.chatopera.cc.util;
|
package com.chatopera.cc.util;
|
||||||
|
|
||||||
import com.chatopera.cc.basic.Constants;
|
import com.chatopera.cc.basic.Constants;
|
||||||
import com.chatopera.cc.basic.MainContext;
|
import com.chatopera.cc.basic.MainContext;
|
||||||
import com.chatopera.cc.model.*;
|
import com.chatopera.cc.model.*;
|
||||||
import com.chatopera.cc.persistence.repository.*;
|
import com.chatopera.cc.persistence.repository.*;
|
||||||
import com.chatopera.cc.proxy.UserProxy;
|
import com.chatopera.cc.proxy.UserProxy;
|
||||||
import com.chatopera.cc.util.es.SearchTools;
|
import com.chatopera.cc.util.es.SearchTools;
|
||||||
import com.chatopera.cc.util.es.UKDataBean;
|
import com.chatopera.cc.util.es.UKDataBean;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.elasticsearch.index.query.BoolQueryBuilder;
|
import org.elasticsearch.index.query.BoolQueryBuilder;
|
||||||
import org.springframework.data.domain.PageImpl;
|
import org.springframework.data.domain.PageImpl;
|
||||||
import org.springframework.data.jpa.domain.Specification;
|
import org.springframework.data.jpa.domain.Specification;
|
||||||
import org.springframework.ui.ModelMap;
|
import org.springframework.ui.ModelMap;
|
||||||
|
|
||||||
import javax.persistence.criteria.CriteriaBuilder;
|
import javax.persistence.criteria.CriteriaBuilder.In;
|
||||||
import javax.persistence.criteria.CriteriaBuilder.In;
|
import javax.persistence.criteria.Predicate;
|
||||||
import javax.persistence.criteria.CriteriaQuery;
|
import javax.validation.Valid;
|
||||||
import javax.persistence.criteria.Predicate;
|
import java.util.ArrayList;
|
||||||
import javax.persistence.criteria.Root;
|
import java.util.Collections;
|
||||||
import javax.validation.Valid;
|
import java.util.LinkedHashSet;
|
||||||
import java.util.ArrayList;
|
import java.util.List;
|
||||||
import java.util.LinkedHashSet;
|
|
||||||
import java.util.List;
|
import static org.elasticsearch.index.query.QueryBuilders.termQuery;
|
||||||
|
|
||||||
import static org.elasticsearch.index.query.QueryBuilders.termQuery;
|
public class CallCenterUtils {
|
||||||
|
|
||||||
public class CallCenterUtils {
|
|
||||||
|
private static UserProxy userProxy;
|
||||||
|
|
||||||
private static UserProxy userProxy;
|
/**
|
||||||
|
*
|
||||||
/**
|
*/
|
||||||
* @param extno
|
public static SipTrunk siptrunk(String extno, SipTrunkRepository sipTrunkRes, ExtentionRepository extRes) {
|
||||||
* @param sipTrunkRes
|
SipTrunk sipTrunk = null;
|
||||||
* @param extRes
|
List<Extention> extList = extRes.findByExtention(extno);
|
||||||
* @return
|
if (extList.size() > 0) {
|
||||||
*/
|
Extention ext = extList.get(0);
|
||||||
public static SipTrunk siptrunk(String extno, SipTrunkRepository sipTrunkRes, ExtentionRepository extRes) {
|
if (StringUtils.isNotBlank(ext.getSiptrunk())) {
|
||||||
SipTrunk sipTrunk = null;
|
sipTrunk = MainContext.getCache().findOneSystemByIdAndOrgi(ext.getSiptrunk(), ext.getOrgi());
|
||||||
List<Extention> extList = extRes.findByExtention(extno);
|
if (sipTrunk == null) {
|
||||||
if (extList.size() > 0) {
|
sipTrunk = sipTrunkRes.findByIdAndOrgi(ext.getSiptrunk(), ext.getOrgi());
|
||||||
Extention ext = extList.get(0);
|
if (sipTrunk != null) {
|
||||||
if (StringUtils.isNotBlank(ext.getSiptrunk())) {
|
MainContext.getCache().putSystemByIdAndOrgi(sipTrunk.getId(), ext.getOrgi(), sipTrunk);
|
||||||
sipTrunk = MainContext.getCache().findOneSystemByIdAndOrgi(ext.getSiptrunk(), ext.getOrgi());
|
}
|
||||||
if (sipTrunk == null) {
|
}
|
||||||
sipTrunk = sipTrunkRes.findByIdAndOrgi(ext.getSiptrunk(), ext.getOrgi());
|
} else {
|
||||||
if (sipTrunk != null) {
|
List<SipTrunk> sipTrunkList = sipTrunkRes.findByDefaultsipAndOrgi(true, ext.getOrgi());
|
||||||
MainContext.getCache().putSystemByIdAndOrgi(sipTrunk.getId(), ext.getOrgi(), sipTrunk);
|
if (sipTrunkList.size() > 0) {
|
||||||
}
|
sipTrunk = sipTrunkList.get(0);
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
List<SipTrunk> sipTrunkList = sipTrunkRes.findByDefaultsipAndOrgi(true, ext.getOrgi());
|
}
|
||||||
if (sipTrunkList.size() > 0) {
|
return sipTrunk;
|
||||||
sipTrunk = sipTrunkList.get(0);
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
/**
|
||||||
return sipTrunk;
|
*
|
||||||
}
|
*/
|
||||||
|
public static SipTrunk siptrunk(String name, SipTrunkRepository sipTrunkRes) {
|
||||||
|
SipTrunk sipTrunk = null;
|
||||||
/**
|
List<SipTrunk> sipTrunkList = sipTrunkRes.findByName(name);
|
||||||
* @param name
|
if (sipTrunkList.size() > 0) {
|
||||||
* @param sipTrunkRes
|
sipTrunk = sipTrunkList.get(0);
|
||||||
* @return
|
} else {
|
||||||
*/
|
sipTrunkList = sipTrunkRes.findByDefaultsip(true);
|
||||||
public static SipTrunk siptrunk(String name, SipTrunkRepository sipTrunkRes) {
|
if (sipTrunkList.size() > 0) {
|
||||||
SipTrunk sipTrunk = null;
|
sipTrunk = sipTrunkList.get(0);
|
||||||
List<SipTrunk> sipTrunkList = sipTrunkRes.findByName(name);
|
}
|
||||||
if (sipTrunkList.size() > 0) {
|
}
|
||||||
sipTrunk = sipTrunkList.get(0);
|
if (sipTrunk != null) {
|
||||||
} else {
|
MainContext.getCache().putSystemByIdAndOrgi(sipTrunk.getId(), sipTrunk.getOrgi(), sipTrunk);
|
||||||
sipTrunkList = sipTrunkRes.findByDefaultsip(true);
|
}
|
||||||
if (sipTrunkList.size() > 0) {
|
return sipTrunk;
|
||||||
sipTrunk = sipTrunkList.get(0);
|
}
|
||||||
}
|
|
||||||
}
|
/**
|
||||||
if (sipTrunk != null) {
|
* 我的部门以及授权给我的部门
|
||||||
MainContext.getCache().putSystemByIdAndOrgi(sipTrunk.getId(), sipTrunk.getOrgi(), sipTrunk);
|
*/
|
||||||
}
|
public static List<String> getAuthOrgan(UserRoleRepository userRoleRes, UKefuCallOutRoleRepository callOutRoleRes, User user) {
|
||||||
return sipTrunk;
|
List<UserRole> userRole = userRoleRes.findByOrgiAndUser(user.getOrgi(), user);
|
||||||
}
|
ArrayList<String> organList = new ArrayList<>();
|
||||||
|
if (userRole.size() > 0) {
|
||||||
/**
|
for (UserRole userTemp : userRole) {
|
||||||
* 我的部门以及授权给我的部门
|
UKefuCallOutRole roleOrgan = callOutRoleRes.findByOrgiAndRoleid(
|
||||||
*
|
user.getOrgi(),
|
||||||
* @param userRoleRes
|
userTemp.getRole().getId());
|
||||||
* @param callOutRoleRes
|
if (roleOrgan != null) {
|
||||||
* @param user
|
if (StringUtils.isNotBlank(roleOrgan.getOrganid())) {
|
||||||
* @return
|
String[] organ = roleOrgan.getOrganid().split(",");
|
||||||
*/
|
Collections.addAll(organList, organ);
|
||||||
public static List<String> getAuthOrgan(UserRoleRepository userRoleRes, UKefuCallOutRoleRepository callOutRoleRes, User user) {
|
|
||||||
List<UserRole> userRole = userRoleRes.findByOrgiAndUser(user.getOrgi(), user);
|
}
|
||||||
ArrayList<String> organList = new ArrayList<String>();
|
}
|
||||||
if (userRole.size() > 0) {
|
}
|
||||||
for (UserRole userTemp : userRole) {
|
}
|
||||||
UKefuCallOutRole roleOrgan = callOutRoleRes.findByOrgiAndRoleid(
|
|
||||||
user.getOrgi(),
|
getUserProxy().attachOrgansPropertiesForUser(user);
|
||||||
userTemp.getRole().getId());
|
if (user.getAffiliates().size() > 0) {
|
||||||
if (roleOrgan != null) {
|
organList.addAll(user.getAffiliates());
|
||||||
if (StringUtils.isNotBlank(roleOrgan.getOrganid())) {
|
}
|
||||||
String[] organ = roleOrgan.getOrganid().split(",");
|
|
||||||
for (int i = 0; i < organ.length; i++) {
|
return organList;
|
||||||
organList.add(organ[i]);
|
}
|
||||||
}
|
|
||||||
|
/**
|
||||||
}
|
* 我的部门以及授权给我的部门 - 批次
|
||||||
}
|
*/
|
||||||
}
|
public static List<JobDetail> getBatchList(JobDetailRepository batchRes, final User user) {
|
||||||
}
|
|
||||||
|
//final List<String> organList = CallCenterUtils.getAuthOrgan(userRoleRes, callOutRoleRes, user);
|
||||||
getUserProxy().attachOrgansPropertiesForUser(user);
|
|
||||||
if (user.getAffiliates().size() > 0) {
|
final List<String> organList = CallCenterUtils.getExistOrgan(user);
|
||||||
for (final String organ : user.getAffiliates()) {
|
|
||||||
organList.add(organ);
|
return batchRes.findAll((Specification<JobDetail>) (root, query, cb) -> {
|
||||||
}
|
List<Predicate> list = new ArrayList<>();
|
||||||
}
|
In<Object> in = cb.in(root.get("organ"));
|
||||||
|
|
||||||
return organList;
|
list.add(cb.equal(root.get("orgi").as(String.class), user.getOrgi()));
|
||||||
}
|
list.add(cb.equal(root.get("tasktype").as(String.class), MainContext.TaskType.BATCH.toString()));
|
||||||
|
|
||||||
/**
|
if (organList.size() > 0) {
|
||||||
* 我的部门以及授权给我的部门 - 批次
|
|
||||||
*
|
for (String id : organList) {
|
||||||
* @param batchRes
|
in.value(id);
|
||||||
* @param userRoleRes
|
}
|
||||||
* @param callOutRoleRes
|
} else {
|
||||||
* @param user
|
in.value(Constants.CSKEFU_SYSTEM_NO_DAT);
|
||||||
* @return
|
}
|
||||||
*/
|
list.add(in);
|
||||||
public static List<JobDetail> getBatchList(JobDetailRepository batchRes, UserRoleRepository userRoleRes, UKefuCallOutRoleRepository callOutRoleRes, final User user) {
|
|
||||||
|
Predicate[] p = new Predicate[list.size()];
|
||||||
//final List<String> organList = CallCenterUtils.getAuthOrgan(userRoleRes, callOutRoleRes, user);
|
return cb.and(list.toArray(p));
|
||||||
|
});
|
||||||
final List<String> organList = CallCenterUtils.getExistOrgan(user);
|
}
|
||||||
|
|
||||||
List<JobDetail> batchList = batchRes.findAll(new Specification<JobDetail>() {
|
/**
|
||||||
@Override
|
* 我的部门以及授权给我的部门 - 筛选表单
|
||||||
public Predicate toPredicate(
|
*/
|
||||||
Root<JobDetail> root, CriteriaQuery<?> query,
|
public static List<FormFilter> getFormFilterList(FormFilterRepository filterRes, final User user) {
|
||||||
CriteriaBuilder cb) {
|
|
||||||
List<Predicate> list = new ArrayList<Predicate>();
|
//final List<String> organList = CallCenterUtils.getAuthOrgan(userRoleRes, callOutRoleRes, user);
|
||||||
In<Object> in = cb.in(root.get("organ"));
|
|
||||||
|
final List<String> organList = CallCenterUtils.getExistOrgan(user);
|
||||||
list.add(cb.equal(root.get("orgi").as(String.class), user.getOrgi()));
|
|
||||||
list.add(cb.equal(root.get("tasktype").as(String.class), MainContext.TaskType.BATCH.toString()));
|
return filterRes.findAll((Specification<FormFilter>) (root, query, cb) -> {
|
||||||
|
List<Predicate> list = new ArrayList<>();
|
||||||
if (organList.size() > 0) {
|
In<Object> in = cb.in(root.get("organ"));
|
||||||
|
|
||||||
for (String id : organList) {
|
list.add(cb.equal(root.get("orgi").as(String.class), user.getOrgi()));
|
||||||
in.value(id);
|
|
||||||
}
|
if (organList.size() > 0) {
|
||||||
} else {
|
|
||||||
in.value(Constants.CSKEFU_SYSTEM_NO_DAT);
|
for (String id : organList) {
|
||||||
}
|
in.value(id);
|
||||||
list.add(in);
|
}
|
||||||
|
} else {
|
||||||
Predicate[] p = new Predicate[list.size()];
|
in.value(Constants.CSKEFU_SYSTEM_NO_DAT);
|
||||||
return cb.and(list.toArray(p));
|
}
|
||||||
}
|
list.add(in);
|
||||||
});
|
|
||||||
|
Predicate[] p = new Predicate[list.size()];
|
||||||
return batchList;
|
return cb.and(list.toArray(p));
|
||||||
}
|
});
|
||||||
|
}
|
||||||
/**
|
|
||||||
* 我的部门以及授权给我的部门 - 筛选表单
|
/**
|
||||||
*
|
* 我的部门以及授权给我的部门 - 活动
|
||||||
* @param filterRes
|
*/
|
||||||
* @param userRoleRes
|
public static List<JobDetail> getActivityList(JobDetailRepository batchRes, final User user) {
|
||||||
* @param callOutRoleRes
|
|
||||||
* @param user
|
//final List<String> organList = CallCenterUtils.getAuthOrgan(userRoleRes, callOutRoleRes, user);
|
||||||
* @return
|
|
||||||
*/
|
final List<String> organList = CallCenterUtils.getExistOrgan(user);
|
||||||
public static List<FormFilter> getFormFilterList(FormFilterRepository filterRes, UserRoleRepository userRoleRes, UKefuCallOutRoleRepository callOutRoleRes, final User user) {
|
|
||||||
|
return batchRes.findAll((Specification<JobDetail>) (root, query, cb) -> {
|
||||||
//final List<String> organList = CallCenterUtils.getAuthOrgan(userRoleRes, callOutRoleRes, user);
|
List<Predicate> list = new ArrayList<>();
|
||||||
|
In<Object> in = cb.in(root.get("organ"));
|
||||||
final List<String> organList = CallCenterUtils.getExistOrgan(user);
|
|
||||||
|
list.add(cb.equal(root.get("orgi").as(String.class), user.getOrgi()));
|
||||||
List<FormFilter> formFilterList = filterRes.findAll(new Specification<FormFilter>() {
|
list.add(cb.equal(root.get("tasktype").as(String.class), MainContext.TaskType.ACTIVE.toString()));
|
||||||
@Override
|
|
||||||
public Predicate toPredicate(
|
if (organList.size() > 0) {
|
||||||
Root<FormFilter> root, CriteriaQuery<?> query,
|
|
||||||
CriteriaBuilder cb) {
|
for (String id : organList) {
|
||||||
List<Predicate> list = new ArrayList<Predicate>();
|
in.value(id);
|
||||||
In<Object> in = cb.in(root.get("organ"));
|
}
|
||||||
|
} else {
|
||||||
list.add(cb.equal(root.get("orgi").as(String.class), user.getOrgi()));
|
in.value(Constants.CSKEFU_SYSTEM_NO_DAT);
|
||||||
|
}
|
||||||
if (organList.size() > 0) {
|
list.add(in);
|
||||||
|
|
||||||
for (String id : organList) {
|
Predicate[] p = new Predicate[list.size()];
|
||||||
in.value(id);
|
return cb.and(list.toArray(p));
|
||||||
}
|
});
|
||||||
} else {
|
}
|
||||||
in.value(Constants.CSKEFU_SYSTEM_NO_DAT);
|
|
||||||
}
|
/**
|
||||||
list.add(in);
|
* 查询条件,下拉信息返回
|
||||||
|
*/
|
||||||
Predicate[] p = new Predicate[list.size()];
|
public static void getAllCallOutList(ModelMap map, User user, String ownerdept, String actid) {
|
||||||
return cb.and(list.toArray(p));
|
JobDetailRepository batchRes = MainContext.getContext().getBean(JobDetailRepository.class);
|
||||||
}
|
UserRoleRepository userRoleRes = MainContext.getContext().getBean(UserRoleRepository.class);
|
||||||
});
|
UKefuCallOutRoleRepository callOutRoleRes = MainContext.getContext().getBean(UKefuCallOutRoleRepository.class);
|
||||||
|
FormFilterRepository filterRes = MainContext.getContext().getBean(FormFilterRepository.class);
|
||||||
return formFilterList;
|
OrganRepository organRes = MainContext.getContext().getBean(OrganRepository.class);
|
||||||
}
|
|
||||||
|
List<JobDetail> activityList = CallCenterUtils.getActivityList(batchRes, user);
|
||||||
/**
|
List<SaleStatus> salestatusList = new ArrayList<>();
|
||||||
* 我的部门以及授权给我的部门 - 活动
|
for (JobDetail act : activityList) {
|
||||||
*
|
List<SaleStatus> salestastus = MainContext.getContext().getBean(
|
||||||
* @param batchRes
|
SaleStatusRepository.class).findByOrgiAndActivityid(user.getOrgi(), act.getDicid());
|
||||||
* @param userRoleRes
|
salestatusList.addAll(salestastus);
|
||||||
* @param callOutRoleRes
|
|
||||||
* @param user
|
}
|
||||||
* @return
|
LinkedHashSet<SaleStatus> set = new LinkedHashSet<>(salestatusList.size());
|
||||||
*/
|
set.addAll(salestatusList);
|
||||||
public static List<JobDetail> getActivityList(JobDetailRepository batchRes, UserRoleRepository userRoleRes, UKefuCallOutRoleRepository callOutRoleRes, final User user) {
|
salestatusList.clear();
|
||||||
|
salestatusList.addAll(set);
|
||||||
//final List<String> organList = CallCenterUtils.getAuthOrgan(userRoleRes, callOutRoleRes, user);
|
map.put("salestatusList", salestatusList);
|
||||||
|
map.put("batchList", CallCenterUtils.getBatchList(batchRes, user));
|
||||||
final List<String> organList = CallCenterUtils.getExistOrgan(user);
|
map.put("activityList", CallCenterUtils.getActivityList(batchRes, user));
|
||||||
|
map.put("formFilterList", CallCenterUtils.getFormFilterList(filterRes, user));
|
||||||
List<JobDetail> activityList = batchRes.findAll(new Specification<JobDetail>() {
|
if (StringUtils.isBlank(ownerdept)) {
|
||||||
@Override
|
|
||||||
public Predicate toPredicate(
|
map.addAttribute(
|
||||||
Root<JobDetail> root, CriteriaQuery<?> query,
|
"owneruserList",
|
||||||
CriteriaBuilder cb) {
|
getUserProxy().findByOrganAndOrgiAndDatastatus(
|
||||||
List<Predicate> list = new ArrayList<Predicate>();
|
Constants.CSKEFU_SYSTEM_NO_DAT, user.getOrgi(), false));
|
||||||
In<Object> in = cb.in(root.get("organ"));
|
} else {
|
||||||
|
map.addAttribute(
|
||||||
list.add(cb.equal(root.get("orgi").as(String.class), user.getOrgi()));
|
"owneruserList", getUserProxy().findByOrganAndOrgiAndDatastatus(ownerdept, user.getOrgi(), false));
|
||||||
list.add(cb.equal(root.get("tasktype").as(String.class), MainContext.TaskType.ACTIVE.toString()));
|
|
||||||
|
}
|
||||||
if (organList.size() > 0) {
|
map.addAttribute(
|
||||||
|
"skillGroups", organRes.findAllById(CallCenterUtils.getAuthOrgan(userRoleRes, callOutRoleRes, user)));
|
||||||
for (String id : organList) {
|
map.put(
|
||||||
in.value(id);
|
"taskList", MainContext.getContext().getBean(UKefuCallOutTaskRepository.class).findByActidAndOrgi(
|
||||||
}
|
actid,
|
||||||
} else {
|
user.getOrgi()));
|
||||||
in.value(Constants.CSKEFU_SYSTEM_NO_DAT);
|
map.put(
|
||||||
}
|
"allUserList",
|
||||||
list.add(in);
|
MainContext.getContext().getBean(UserRepository.class).findByOrgiAndDatastatus(user.getOrgi(), false));
|
||||||
|
//JobDetail act = batchRes.findByIdAndOrgi(actid, user.getOrgi());
|
||||||
Predicate[] p = new Predicate[list.size()];
|
//if(act != null){
|
||||||
return cb.and(list.toArray(p));
|
// map.put("salestatusList",MainContext.getContext().getBean(SaleStatusRepository.class).findByOrgiAndActivityid(user.getOrgi(), act.getDicid()));
|
||||||
}
|
//}
|
||||||
});
|
map.addAttribute("statusList", Dict.getInstance().getDic("com.dic.callout.activity"));
|
||||||
|
}
|
||||||
return activityList;
|
|
||||||
}
|
/**
|
||||||
|
* 指定活动,已设置的分配数
|
||||||
/**
|
*/
|
||||||
* 查询条件,下拉信息返回
|
public static void getNamenum(ModelMap map, String activityid, User user) {
|
||||||
*
|
|
||||||
* @param map
|
CallAgentRepository callAgentRes = MainContext.getContext().getBean(CallAgentRepository.class);
|
||||||
* @param user
|
|
||||||
* @param ownerdept
|
List<CallAgent> actList = callAgentRes.findByOrgiAndActid(user.getOrgi(), activityid);
|
||||||
* @param actid
|
int namenum = 0;
|
||||||
*/
|
if (actList.size() > 0) {
|
||||||
public static void getAllCallOutList(ModelMap map, User user, String ownerdept, String actid) {
|
for (CallAgent callAgent : actList) {
|
||||||
JobDetailRepository batchRes = MainContext.getContext().getBean(JobDetailRepository.class);
|
if (callAgent.getDisnum() > 0) {
|
||||||
UserRoleRepository userRoleRes = MainContext.getContext().getBean(UserRoleRepository.class);
|
namenum = namenum + callAgent.getDisnum();
|
||||||
UKefuCallOutRoleRepository callOutRoleRes = MainContext.getContext().getBean(UKefuCallOutRoleRepository.class);
|
}
|
||||||
FormFilterRepository filterRes = MainContext.getContext().getBean(FormFilterRepository.class);
|
}
|
||||||
OrganRepository organRes = MainContext.getContext().getBean(OrganRepository.class);
|
}
|
||||||
|
map.put("namenum", namenum);
|
||||||
List<JobDetail> activityList = CallCenterUtils.getActivityList(batchRes, userRoleRes, callOutRoleRes, user);
|
}
|
||||||
List<SaleStatus> salestatusList = new ArrayList<>();
|
|
||||||
for (JobDetail act : activityList) {
|
/**
|
||||||
List<SaleStatus> salestastus = MainContext.getContext().getBean(
|
* 查询目前存在的部门
|
||||||
SaleStatusRepository.class).findByOrgiAndActivityid(user.getOrgi(), act.getDicid());
|
* 已分配部门的坐席,如果部门被删之后,这个方法可以把这些用户过滤掉
|
||||||
salestatusList.addAll(salestastus);
|
*/
|
||||||
|
public static List<String> getExistOrgan(User user) {
|
||||||
}
|
|
||||||
LinkedHashSet<SaleStatus> set = new LinkedHashSet<SaleStatus>(salestatusList.size());
|
UserRoleRepository userRoleRes = MainContext.getContext().getBean(UserRoleRepository.class);
|
||||||
set.addAll(salestatusList);
|
UKefuCallOutRoleRepository callOutRoleRes = MainContext.getContext().getBean(UKefuCallOutRoleRepository.class);
|
||||||
salestatusList.clear();
|
OrganRepository organRes = MainContext.getContext().getBean(OrganRepository.class);
|
||||||
salestatusList.addAll(set);
|
|
||||||
map.put("salestatusList", salestatusList);
|
final List<String> organList = CallCenterUtils.getAuthOrgan(userRoleRes, callOutRoleRes, user);
|
||||||
map.put("batchList", CallCenterUtils.getBatchList(batchRes, userRoleRes, callOutRoleRes, user));
|
|
||||||
map.put("activityList", CallCenterUtils.getActivityList(batchRes, userRoleRes, callOutRoleRes, user));
|
List<Organ> organAllList = organRes.findByOrgi(user.getOrgi());
|
||||||
map.put("formFilterList", CallCenterUtils.getFormFilterList(filterRes, userRoleRes, callOutRoleRes, user));
|
|
||||||
if (StringUtils.isBlank(ownerdept)) {
|
final List<String> tempList = new ArrayList<>();
|
||||||
|
|
||||||
map.addAttribute(
|
for (String organid : organList) {
|
||||||
"owneruserList",
|
for (Organ organ : organAllList) {
|
||||||
getUserProxy().findByOrganAndOrgiAndDatastatus(
|
if (organid.equals(organ.getId())) {
|
||||||
Constants.CSKEFU_SYSTEM_NO_DAT, user.getOrgi(), false));
|
tempList.add(organid);
|
||||||
} else {
|
}
|
||||||
map.addAttribute(
|
}
|
||||||
"owneruserList", getUserProxy().findByOrganAndOrgiAndDatastatus(ownerdept, user.getOrgi(), false));
|
}
|
||||||
|
return tempList;
|
||||||
}
|
}
|
||||||
map.addAttribute(
|
|
||||||
"skillGroups", organRes.findAll(CallCenterUtils.getAuthOrgan(userRoleRes, callOutRoleRes, user)));
|
/**
|
||||||
map.put(
|
* 分配给坐席的名单,单个名单,回收到池子
|
||||||
"taskList", MainContext.getContext().getBean(UKefuCallOutTaskRepository.class).findByActidAndOrgi(
|
*/
|
||||||
actid,
|
public static void getAgentRenum(UKefuCallOutTask task, JobDetail batch, UKefuCallOutFilter ukefuCallOutFilter) {
|
||||||
user.getOrgi()));
|
|
||||||
map.put(
|
UKefuCallOutTaskRepository callOutTaskRes = MainContext.getContext().getBean(UKefuCallOutTaskRepository.class);
|
||||||
"allUserList",
|
JobDetailRepository batchRes = MainContext.getContext().getBean(JobDetailRepository.class);
|
||||||
MainContext.getContext().getBean(UserRepository.class).findByOrgiAndDatastatus(user.getOrgi(), false));
|
UKefuCallOutFilterRepository callOutFilterRes = MainContext.getContext().getBean(
|
||||||
//JobDetail act = batchRes.findByIdAndOrgi(actid, user.getOrgi());
|
UKefuCallOutFilterRepository.class);
|
||||||
//if(act != null){
|
|
||||||
// map.put("salestatusList",MainContext.getContext().getBean(SaleStatusRepository.class).findByOrgiAndActivityid(user.getOrgi(), act.getDicid()));
|
//修改,拨打任务
|
||||||
//}
|
if (task != null) {
|
||||||
map.addAttribute("statusList", Dict.getInstance().getDic("com.dic.callout.activity"));
|
task.setAssigned(task.getAssigned() - 1);//分配到坐席数
|
||||||
}
|
task.setNotassigned(task.getNotassigned() + 1);//未分配数
|
||||||
|
task.setRenum(task.getRenum() + 1);//回收到池子数
|
||||||
/**
|
callOutTaskRes.save(task);
|
||||||
* 指定活动,已设置的分配数
|
}
|
||||||
*
|
|
||||||
* @param map
|
//修改,批次
|
||||||
* @param activityid
|
if (batch != null) {
|
||||||
* @param user
|
batch.setAssigned(batch.getAssigned() - 1);//已分配
|
||||||
*/
|
batch.setNotassigned(batch.getNotassigned() + 1);//未分配
|
||||||
public static void getNamenum(ModelMap map, String activityid, User user) {
|
batchRes.save(batch);
|
||||||
|
}
|
||||||
CallAgentRepository callAgentRes = MainContext.getContext().getBean(CallAgentRepository.class);
|
|
||||||
|
//修改,筛选记录
|
||||||
List<CallAgent> actList = callAgentRes.findByOrgiAndActid(user.getOrgi(), activityid);
|
if (ukefuCallOutFilter != null) {
|
||||||
int namenum = 0;
|
ukefuCallOutFilter.setAssigned(ukefuCallOutFilter.getAssigned() - 1);//分配给坐席数
|
||||||
if (actList.size() > 0) {
|
ukefuCallOutFilter.setRenum(ukefuCallOutFilter.getRenum() + 1);//回收到池子数
|
||||||
for (CallAgent callAgent : actList) {
|
ukefuCallOutFilter.setNotassigned(ukefuCallOutFilter.getNotassigned() + 1);//未分配数
|
||||||
if (callAgent.getDisnum() > 0) {
|
callOutFilterRes.save(ukefuCallOutFilter);
|
||||||
namenum = namenum + callAgent.getDisnum();
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
/**
|
||||||
map.put("namenum", namenum);
|
* 分配给坐席的名单,单个名单,回收到部门
|
||||||
}
|
*/
|
||||||
|
public static void getAgentReorgannum(UKefuCallOutTask task, UKefuCallOutFilter ukefuCallOutFilter) {
|
||||||
/**
|
|
||||||
* 查询目前存在的部门
|
UKefuCallOutTaskRepository callOutTaskRes = MainContext.getContext().getBean(UKefuCallOutTaskRepository.class);
|
||||||
* 已分配部门的坐席,如果部门被删之后,这个方法可以把这些用户过滤掉
|
UKefuCallOutFilterRepository callOutFilterRes = MainContext.getContext().getBean(
|
||||||
*
|
UKefuCallOutFilterRepository.class);
|
||||||
* @param user
|
|
||||||
* @return
|
//修改,拨打任务
|
||||||
*/
|
if (task != null) {
|
||||||
public static List<String> getExistOrgan(User user) {
|
task.setNotassigned(task.getNotassigned() + 1);//未分配数
|
||||||
|
task.setAssignedorgan(task.getAssignedorgan() - 1);//分配到部门数
|
||||||
UserRoleRepository userRoleRes = MainContext.getContext().getBean(UserRoleRepository.class);
|
task.setReorgannum(task.getReorgannum() + 1);//回收到部门数
|
||||||
UKefuCallOutRoleRepository callOutRoleRes = MainContext.getContext().getBean(UKefuCallOutRoleRepository.class);
|
callOutTaskRes.save(task);
|
||||||
OrganRepository organRes = MainContext.getContext().getBean(OrganRepository.class);
|
}
|
||||||
|
|
||||||
final List<String> organList = CallCenterUtils.getAuthOrgan(userRoleRes, callOutRoleRes, user);
|
|
||||||
|
//修改,筛选记录
|
||||||
List<Organ> organAllList = organRes.findByOrgi(user.getOrgi());
|
if (ukefuCallOutFilter != null) {
|
||||||
|
ukefuCallOutFilter.setAssigned(ukefuCallOutFilter.getAssigned() - 1);//分配给坐席数
|
||||||
final List<String> tempList = new ArrayList<String>();
|
ukefuCallOutFilter.setReorgannum(ukefuCallOutFilter.getReorgannum() + 1);//回收到部门数
|
||||||
|
callOutFilterRes.save(ukefuCallOutFilter);
|
||||||
for (String organid : organList) {
|
}
|
||||||
for (Organ organ : organAllList) {
|
}
|
||||||
if (organid.equals(organ.getId())) {
|
|
||||||
tempList.add(organid);
|
/**
|
||||||
}
|
* 分配给部门的名单,单个名单,回收到池子
|
||||||
}
|
*/
|
||||||
}
|
public static void getOrganRenum(UKefuCallOutTask task, JobDetail batch, UKefuCallOutFilter ukefuCallOutFilter) {
|
||||||
return tempList;
|
|
||||||
}
|
UKefuCallOutTaskRepository callOutTaskRes = MainContext.getContext().getBean(UKefuCallOutTaskRepository.class);
|
||||||
|
JobDetailRepository batchRes = MainContext.getContext().getBean(JobDetailRepository.class);
|
||||||
/**
|
UKefuCallOutFilterRepository callOutFilterRes = MainContext.getContext().getBean(
|
||||||
* 分配给坐席的名单,单个名单,回收到池子
|
UKefuCallOutFilterRepository.class);
|
||||||
*
|
|
||||||
* @param task
|
//修改,拨打任务
|
||||||
* @param batch
|
if (task != null) {
|
||||||
* @param ukefuCallOutFilter
|
task.setAssignedorgan(task.getAssignedorgan() - 1);//分配到部门数
|
||||||
*/
|
task.setNotassigned(task.getNotassigned() + 1);//未分配数
|
||||||
public static void getAgentRenum(UKefuCallOutTask task, JobDetail batch, UKefuCallOutFilter ukefuCallOutFilter) {
|
task.setRenum(task.getRenum() + 1);//回收到池子数
|
||||||
|
callOutTaskRes.save(task);
|
||||||
UKefuCallOutTaskRepository callOutTaskRes = MainContext.getContext().getBean(UKefuCallOutTaskRepository.class);
|
}
|
||||||
JobDetailRepository batchRes = MainContext.getContext().getBean(JobDetailRepository.class);
|
|
||||||
UKefuCallOutFilterRepository callOutFilterRes = MainContext.getContext().getBean(
|
//修改,批次
|
||||||
UKefuCallOutFilterRepository.class);
|
if (batch != null) {
|
||||||
|
batch.setAssigned(batch.getAssigned() - 1);//已分配
|
||||||
//修改,拨打任务
|
batch.setNotassigned(batch.getNotassigned() + 1);//未分配
|
||||||
if (task != null) {
|
batchRes.save(batch);
|
||||||
task.setAssigned(task.getAssigned() - 1);//分配到坐席数
|
}
|
||||||
task.setNotassigned(task.getNotassigned() + 1);//未分配数
|
|
||||||
task.setRenum(task.getRenum() + 1);//回收到池子数
|
//修改,筛选记录
|
||||||
callOutTaskRes.save(task);
|
if (ukefuCallOutFilter != null) {
|
||||||
}
|
ukefuCallOutFilter.setAssignedorgan(ukefuCallOutFilter.getAssignedorgan() - 1);//分配到部门数
|
||||||
|
ukefuCallOutFilter.setRenum(ukefuCallOutFilter.getRenum() + 1);//回收到池子数
|
||||||
//修改,批次
|
ukefuCallOutFilter.setNotassigned(ukefuCallOutFilter.getNotassigned() + 1);//未分配数
|
||||||
if (batch != null) {
|
callOutFilterRes.save(ukefuCallOutFilter);
|
||||||
batch.setAssigned(batch.getAssigned() - 1);//已分配
|
}
|
||||||
batch.setNotassigned(batch.getNotassigned() + 1);//未分配
|
}
|
||||||
batchRes.save(batch);
|
|
||||||
}
|
/**
|
||||||
|
* 获取指定活动,已分配的名单数
|
||||||
//修改,筛选记录
|
*/
|
||||||
if (ukefuCallOutFilter != null) {
|
public static int getActDisnum(@Valid String actid, @Valid int p, @Valid int ps) {
|
||||||
ukefuCallOutFilter.setAssigned(ukefuCallOutFilter.getAssigned() - 1);//分配给坐席数
|
BoolQueryBuilder queryBuilder = new BoolQueryBuilder();
|
||||||
ukefuCallOutFilter.setRenum(ukefuCallOutFilter.getRenum() + 1);//回收到池子数
|
queryBuilder.must(termQuery("actid", actid));// 活动ID
|
||||||
ukefuCallOutFilter.setNotassigned(ukefuCallOutFilter.getNotassigned() + 1);//未分配数
|
queryBuilder.mustNot(termQuery("status", MainContext.NamesDisStatusType.NOT.toString()));
|
||||||
callOutFilterRes.save(ukefuCallOutFilter);
|
PageImpl<UKDataBean> dataList = SearchTools.search(queryBuilder, p, ps);
|
||||||
}
|
return dataList.getContent().size();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public static UserProxy getUserProxy() {
|
||||||
* 分配给坐席的名单,单个名单,回收到部门
|
if (userProxy == null) {
|
||||||
*
|
userProxy = MainContext.getContext().getBean(UserProxy.class);
|
||||||
* @param task
|
}
|
||||||
* @param ukefuCallOutFilter
|
return userProxy;
|
||||||
*/
|
}
|
||||||
public static void getAgentReorgannum(UKefuCallOutTask task, UKefuCallOutFilter ukefuCallOutFilter) {
|
}
|
||||||
|
|
||||||
UKefuCallOutTaskRepository callOutTaskRes = MainContext.getContext().getBean(UKefuCallOutTaskRepository.class);
|
|
||||||
UKefuCallOutFilterRepository callOutFilterRes = MainContext.getContext().getBean(
|
|
||||||
UKefuCallOutFilterRepository.class);
|
|
||||||
|
|
||||||
//修改,拨打任务
|
|
||||||
if (task != null) {
|
|
||||||
task.setNotassigned(task.getNotassigned() + 1);//未分配数
|
|
||||||
task.setAssignedorgan(task.getAssignedorgan() - 1);//分配到部门数
|
|
||||||
task.setReorgannum(task.getReorgannum() + 1);//回收到部门数
|
|
||||||
callOutTaskRes.save(task);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//修改,筛选记录
|
|
||||||
if (ukefuCallOutFilter != null) {
|
|
||||||
ukefuCallOutFilter.setAssigned(ukefuCallOutFilter.getAssigned() - 1);//分配给坐席数
|
|
||||||
ukefuCallOutFilter.setReorgannum(ukefuCallOutFilter.getReorgannum() + 1);//回收到部门数
|
|
||||||
callOutFilterRes.save(ukefuCallOutFilter);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 分配给部门的名单,单个名单,回收到池子
|
|
||||||
*
|
|
||||||
* @param task
|
|
||||||
* @param batch
|
|
||||||
* @param ukefuCallOutFilter
|
|
||||||
*/
|
|
||||||
public static void getOrganRenum(UKefuCallOutTask task, JobDetail batch, UKefuCallOutFilter ukefuCallOutFilter) {
|
|
||||||
|
|
||||||
UKefuCallOutTaskRepository callOutTaskRes = MainContext.getContext().getBean(UKefuCallOutTaskRepository.class);
|
|
||||||
JobDetailRepository batchRes = MainContext.getContext().getBean(JobDetailRepository.class);
|
|
||||||
UKefuCallOutFilterRepository callOutFilterRes = MainContext.getContext().getBean(
|
|
||||||
UKefuCallOutFilterRepository.class);
|
|
||||||
|
|
||||||
//修改,拨打任务
|
|
||||||
if (task != null) {
|
|
||||||
task.setAssignedorgan(task.getAssignedorgan() - 1);//分配到部门数
|
|
||||||
task.setNotassigned(task.getNotassigned() + 1);//未分配数
|
|
||||||
task.setRenum(task.getRenum() + 1);//回收到池子数
|
|
||||||
callOutTaskRes.save(task);
|
|
||||||
}
|
|
||||||
|
|
||||||
//修改,批次
|
|
||||||
if (batch != null) {
|
|
||||||
batch.setAssigned(batch.getAssigned() - 1);//已分配
|
|
||||||
batch.setNotassigned(batch.getNotassigned() + 1);//未分配
|
|
||||||
batchRes.save(batch);
|
|
||||||
}
|
|
||||||
|
|
||||||
//修改,筛选记录
|
|
||||||
if (ukefuCallOutFilter != null) {
|
|
||||||
ukefuCallOutFilter.setAssignedorgan(ukefuCallOutFilter.getAssignedorgan() - 1);//分配到部门数
|
|
||||||
ukefuCallOutFilter.setRenum(ukefuCallOutFilter.getRenum() + 1);//回收到池子数
|
|
||||||
ukefuCallOutFilter.setNotassigned(ukefuCallOutFilter.getNotassigned() + 1);//未分配数
|
|
||||||
callOutFilterRes.save(ukefuCallOutFilter);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取指定活动,已分配的名单数
|
|
||||||
*
|
|
||||||
* @param actid
|
|
||||||
* @param user
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public static int getActDisnum(@Valid String actid, User user, @Valid int p, @Valid int ps) {
|
|
||||||
BoolQueryBuilder queryBuilder = new BoolQueryBuilder();
|
|
||||||
queryBuilder.must(termQuery("actid", actid));// 活动ID
|
|
||||||
queryBuilder.mustNot(termQuery("status", MainContext.NamesDisStatusType.NOT.toString()));
|
|
||||||
PageImpl<UKDataBean> dataList = SearchTools.search(queryBuilder, p, ps);
|
|
||||||
return dataList.getContent().size();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static UserProxy getUserProxy() {
|
|
||||||
if (userProxy == null) {
|
|
||||||
userProxy = MainContext.getContext().getBean(UserProxy.class);
|
|
||||||
}
|
|
||||||
return userProxy;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user