1
0
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:
dengchao@xgtl 2020-04-16 17:35:53 +08:00
parent 33a12a8be9
commit dd02157fad
11 changed files with 1045 additions and 1219 deletions

View File

@ -281,7 +281,7 @@ public class OrganController extends Handler {
@RequestMapping("/update")
@Menu(type = "admin", subtype = "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(
"redirect:/admin/organ/index.html?msg=" + msg + "&organ=" + organ.getId()));
}

View File

@ -26,16 +26,18 @@ import com.chatopera.cc.persistence.repository.*;
import com.chatopera.cc.proxy.OnlineUserProxy;
import com.chatopera.cc.proxy.UserProxy;
import com.chatopera.cc.util.Menu;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpStatus;
import org.springframework.lang.NonNull;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.server.ResponseStatusException;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
@ -46,43 +48,41 @@ import java.util.List;
@Controller
@RequestMapping("/admin/webim")
@RequiredArgsConstructor
public class WebIMController extends Handler {
private final static Logger logger = LoggerFactory.getLogger(WebIMController.class);
@Autowired
private ConsultInviteRepository inviteRes;
@NonNull
private final ConsultInviteRepository inviteRes;
@Autowired
private OrganRepository organRes;
@NonNull
private final OrganRepository organRes;
@Autowired
private UserRepository userRes;
@NonNull
private final UserRepository userRes;
@Autowired
private ServiceAiRepository serviceAiRes;
@NonNull
private final ServiceAiRepository serviceAiRes;
@Autowired
private OrgiSkillRelRepository orgiSkillRelService;
@NonNull
private final OrgiSkillRelRepository orgiSkillRelService;
@Value("${web.upload-path}")
private String path;
@NonNull
private final SNSAccountRepository snsAccountRes;
@Autowired
private SNSAccountRepository snsAccountRes;
@NonNull
private final Cache cache;
@Autowired
private Cache cache;
@Autowired
private UserProxy userProxy;
@NonNull
private final UserProxy userProxy;
@RequestMapping("/index")
@Menu(type = "app", subtype = "app", admin = true)
public ModelAndView index(ModelMap map, HttpServletRequest request, @Valid String snsid) {
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) {
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("skillGroups", getSkillGroups(request));
map.addAttribute("agentList", getUsers(request));
@ -93,12 +93,7 @@ public class WebIMController extends Handler {
}
/**
* @param request
* @param inviteData
* @param webimlogo
* @param agentheadimg
* @return
* @throws IOException
*
*/
@RequestMapping("/save")
@Menu(type = "admin", subtype = "app", admin = true)
@ -124,14 +119,20 @@ public class WebIMController extends Handler {
}
inviteData.setOrgi(super.getOrgi(request));
// 网页品牌标识
if (webimlogo != null && webimlogo.getOriginalFilename().lastIndexOf(".") > 0) {
if (webimlogo != null) {
String originalFilename = webimlogo.getOriginalFilename();
if (originalFilename != null && originalFilename.lastIndexOf(".") > 0) {
inviteData.setConsult_dialog_logo(super.saveImageFileWithMultipart(webimlogo));
}
}
// 网页坐席头像
if (agentheadimg != null && agentheadimg.getOriginalFilename().lastIndexOf(".") > 0) {
if (agentheadimg != null) {
String originalFilename = agentheadimg.getOriginalFilename();
if (originalFilename != null && originalFilename.lastIndexOf(".") > 0) {
inviteData.setConsult_dialog_headimg(super.saveImageFileWithMultipart(agentheadimg));
}
}
inviteRes.save(inviteData);
cache.putConsultInviteByOrgi(inviteData.getOrgi(), inviteData);
return request(super.createRequestPageTempletResponse("redirect:/admin/webim/index.html?snsid=" + inviteData.getSnsaccountid()));
@ -141,9 +142,9 @@ public class WebIMController extends Handler {
@Menu(type = "app", subtype = "profile", admin = true)
public ModelAndView profile(ModelMap map, HttpServletRequest request, @Valid String snsid) {
CousultInvite coultInvite = OnlineUserProxy.consult(snsid, super.getOrgi(request));
logger.info("[profile] snsaccount Id {}, Ai {}, Aifirst {}, Ainame {}, Aisuccess {}, Aiid {}", coultInvite.getSnsaccountid(), coultInvite.isAi(), coultInvite.isAifirst(), coultInvite.getAiname(), coultInvite.getAisuccesstip(), coultInvite.getAiid());
if (coultInvite != null) {
logger.info("[profile] 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("skillGroups", getSkillGroups(request));
}
@ -159,7 +160,7 @@ public class WebIMController extends Handler {
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;
if (inviteData != null && StringUtils.isNotBlank(inviteData.getId())) {
logger.info("[profile/save] snsaccount Id {}, Ai {}, Aifirst {}, Ainame {}, Aisuccess {}, Aiid {}, traceUser {}",
inviteData.getSnsaccountid(),
inviteData.isAi(),
@ -168,10 +169,8 @@ public class WebIMController extends Handler {
inviteData.getAisuccesstip(),
inviteData.getAiid(),
inviteData.isTraceuser());
if (inviteData != null && StringUtils.isNotBlank(inviteData.getId())) {
// 从Cache及DB加载consult
tempInviteData = OnlineUserProxy.consult(inviteData.getSnsaccountid(), orgi);
CousultInvite tempInviteData = OnlineUserProxy.consult(inviteData.getSnsaccountid(), orgi);
if (tempInviteData != null) {
tempInviteData.setDialog_name(inviteData.getDialog_name());
@ -224,7 +223,7 @@ public class WebIMController extends Handler {
tempInviteData.setCtrlenter(inviteData.isCtrlenter());
tempInviteData.setWhitelist_mode(inviteData.isWhitelist_mode());
if (dialogad != null && StringUtils.isNotBlank(dialogad.getName()) && dialogad.getBytes() != null && dialogad.getBytes().length > 0) {
if (dialogad != null && StringUtils.isNotBlank(dialogad.getName()) && dialogad.getBytes().length > 0) {
tempInviteData.setDialog_ad(super.saveImageFileWithMultipart(dialogad));
}
// 保存到DB
@ -232,9 +231,13 @@ public class WebIMController extends Handler {
inviteData = tempInviteData;
}
} else {
if (inviteData != null) {
inviteRes.save(inviteData);
}
}
if (inviteData == null) {
throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Invite data not found");
}
cache.putConsultInviteByOrgi(orgi, inviteData);
return request(super.createRequestPageTempletResponse("redirect:/admin/webim/profile.html?snsid=" + inviteData.getSnsaccountid()));
}
@ -243,9 +246,9 @@ public class WebIMController extends Handler {
@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));
logger.info("[invote] snsaccount Id {}, Ai {}, Aifirst {}, Ainame {}, Aisuccess {}, Aiid {}", coultInvite.getSnsaccountid(), coultInvite.isAi(), coultInvite.isAifirst(), coultInvite.getAiname(), coultInvite.getAisuccesstip(), coultInvite.getAiid());
if (coultInvite != null) {
logger.info("[invote] 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("import", request.getServerPort());
@ -257,9 +260,9 @@ public class WebIMController extends Handler {
@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;
logger.info("[invote/save] snsaccount Id {}, Ai {}, Aifirst {}, Ainame {}, Aisuccess {}, Aiid {}", inviteData.getSnsaccountid(), inviteData.isAi(), inviteData.isAifirst(), inviteData.getAiname(), inviteData.getAisuccesstip(), inviteData.getAiid());
if (inviteData != null && StringUtils.isNotBlank(inviteData.getId())) {
logger.info("[invote/save] snsaccount Id {}, Ai {}, Aifirst {}, Ainame {}, Aisuccess {}, Aiid {}", inviteData.getSnsaccountid(), inviteData.isAi(), inviteData.isAifirst(), inviteData.getAiname(), inviteData.getAisuccesstip(), inviteData.getAiid());
tempInviteData = OnlineUserProxy.consult(inviteData.getSnsaccountid(), super.getOrgi(request));
if (tempInviteData != null) {
tempInviteData.setConsult_invite_enable(inviteData.isConsult_invite_enable());
@ -270,24 +273,28 @@ public class WebIMController extends Handler {
tempInviteData.setConsult_invite_color(inviteData.getConsult_invite_color());
if (invotebg != null && StringUtils.isNotBlank(invotebg.getName()) && invotebg.getBytes() != null && invotebg.getBytes().length > 0) {
if (invotebg != null && StringUtils.isNotBlank(invotebg.getName()) && invotebg.getBytes().length > 0) {
tempInviteData.setConsult_invite_bg(super.saveImageFileWithMultipart(invotebg));
}
inviteRes.save(tempInviteData);
inviteData = tempInviteData;
}
} else {
if (inviteData != null) {
inviteRes.save(inviteData);
}
}
if (inviteData == null) {
throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Invite data not found");
}
cache.putConsultInviteByOrgi(inviteData.getOrgi(), inviteData);
return request(super.createRequestPageTempletResponse("redirect:/admin/webim/invote.html?snsid=" + inviteData.getSnsaccountid()));
}
/**
* 获取当前登录者组织下的技能组列表
*
* @param request
* @return
*/
private List<Organ> getSkillGroups(HttpServletRequest request) {
List<Organ> skillgroups = new ArrayList<>();
@ -299,7 +306,7 @@ public class WebIMController extends Handler {
organIdList.add(rel.getSkillid());
}
}
skillgroups = organRes.findAll(organIdList);
skillgroups = organRes.findAllById(organIdList);
} else {
List<Organ> allgroups = organRes.findByOrgiAndOrgid(super.getOrgi(request), super.getOrgid(request));
for (Organ o : allgroups) {
@ -313,9 +320,6 @@ public class WebIMController extends Handler {
/**
* 获取当前产品下人员信息
*
* @param request
* @return
*/
private List<User> getUsers(HttpServletRequest request) {
List<User> userList;

View File

@ -20,8 +20,9 @@ import com.chatopera.cc.basic.MainContext;
import com.chatopera.cc.basic.MainUtils;
import com.chatopera.cc.controller.Handler;
import com.chatopera.cc.controller.api.request.RestUtils;
import com.chatopera.cc.exception.CSKefuRestException;
import com.chatopera.cc.model.*;
import com.chatopera.cc.model.ContactNotes;
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.ContactsRepository;
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.JsonObject;
import com.google.gson.JsonParser;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.lang.NonNull;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@ -49,6 +51,7 @@ import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.List;
import java.util.Optional;
/**
* 联系人笔记
@ -56,39 +59,34 @@ import java.util.List;
*/
@RestController
@RequestMapping("/api/contacts/notes")
@RequiredArgsConstructor
public class ApiContactNotesController extends Handler {
private final static Logger logger = LoggerFactory.getLogger(ApiContactNotesController.class);
@Autowired
private ContactNotesRepository contactNotesRes;
@NonNull
private final ContactNotesRepository contactNotesRes;
@NonNull
private final ContactsRepository contactsRes;
@Autowired
private ContactsRepository contactsRes;
@NonNull
private final UserRepository userRes;
@NonNull
private final OrganRepository organRes;
@Autowired
private UserRepository userRes;
@Autowired
private OrganRepository organRes;
@Autowired
private OrganUserRepository organUserRes;
@NonNull
private final OrganUserRepository organUserRes;
/**
* 获取创建人
*
* @param creater
* @return
*/
private JsonObject creater(final String creater) {
JsonObject data = new JsonObject();
// 增加创建人
User u = userRes.findById(creater);
if (u != null) {
Optional<User> optional = userRes.findById(creater);
if (optional.isPresent()) {
User u = optional.get();
data.addProperty("creater", u.getId());
data.addProperty("creatername", u.getUname());
@ -101,13 +99,13 @@ public class ApiContactNotesController extends Handler {
JsonArray y = new JsonArray();
for (final OrganUser organ : organs) {
Organ o = organRes.findOne(organ.getOrgan());
if (o != null) {
organRes.findById(organ.getOrgan())
.ifPresent(o -> {
JsonObject x = new JsonObject();
x.addProperty("createrorgan", o.getName());
x.addProperty("createrorganid", o.getId());
y.add(x);
}
});
}
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 {
logger.info("[contact note] detail {}] {}", j.toString());
logger.info("[contact note] detail: {}", j.toString());
JsonObject resp = new JsonObject();
// TODO 增加权限检查
if (j.has("id") && StringUtils.isNotBlank(j.get("id").getAsString())) {
ContactNotes cn = contactNotesRes.findOne(j.get("id").getAsString());
if (cn != null) {
Optional<ContactNotes> optional = contactNotesRes.findById(j.get("id").getAsString());
if (optional.isPresent()) {
ContactNotes cn = optional.get();
JsonObject data = new JsonObject();
data.addProperty("contactid", cn.getContactid());
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 {
logger.info("[contact note] create {}", payload.toString());
@ -199,9 +192,6 @@ public class ApiContactNotesController extends Handler {
/**
* 验证创建数据
*
* @param payload
* @return
*/
private String validateCreatePayload(JsonObject payload) {
if (!payload.has("category")) {
@ -215,8 +205,7 @@ public class ApiContactNotesController extends Handler {
if ((!payload.has("contactid")) || StringUtils.isBlank(payload.get("contactid").getAsString())) {
return "参数传递不合法,没有[contactid]。";
} else {
Contacts c = contactsRes.findOne(payload.get("contactid").getAsString());
if (c == null)
if (!contactsRes.existsById(payload.get("contactid").getAsString()))
return "参数不合法,不存在该联系人。";
}
@ -225,12 +214,9 @@ public class ApiContactNotesController extends Handler {
/**
* Build query string
*
* @param j
* @return
*/
private String querybuilder(final JsonObject j) {
StringBuffer sb = new StringBuffer();
StringBuilder sb = new StringBuilder();
if (j.has("orgi")) {
sb.append("orgi:");
sb.append(j.get("orgi").getAsString());
@ -242,10 +228,6 @@ public class ApiContactNotesController extends Handler {
/**
* 根据联系人ID获取联系人笔记列表
*
* @param j
* @param request
* @return
*/
private JsonObject fetch(final JsonObject j, final HttpServletRequest request) throws GsonTools.JsonObjectExtensionConflictException {
logger.info("[contact note] fetch [{}]", j.toString());
@ -256,9 +238,8 @@ public class ApiContactNotesController extends Handler {
return resp;
}
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_ERROR, "不存在该联系人。");
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)
@Menu(type = "apps", subtype = "contactnotes", access = true)
public ResponseEntity<String> operations(HttpServletRequest request, @RequestBody final String body) throws CSKefuRestException, GsonTools.JsonObjectExtensionConflictException {
final JsonObject j = (new JsonParser()).parse(body).getAsJsonObject();
public ResponseEntity<String> operations(HttpServletRequest request, @RequestBody final String body) throws GsonTools.JsonObjectExtensionConflictException {
final JsonObject j = JsonParser.parseString(body).getAsJsonObject();
logger.info("[contact note] operations payload {}", j.toString());
JsonObject json = new JsonObject();
HttpHeaders headers = RestUtils.header();
@ -335,7 +310,7 @@ public class ApiContactNotesController extends Handler {
break;
}
}
return new ResponseEntity<String>(json.toString(), headers, HttpStatus.OK);
return new ResponseEntity<>(json.toString(), headers, HttpStatus.OK);
}

View File

@ -22,10 +22,11 @@ import com.chatopera.cc.persistence.repository.OrganRepository;
import com.chatopera.cc.util.Menu;
import com.chatopera.cc.util.RestResult;
import com.chatopera.cc.util.RestResultType;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.lang.NonNull;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@ -38,16 +39,14 @@ import javax.validation.Valid;
*/
@RestController
@RequestMapping("/api/organ")
@RequiredArgsConstructor
public class ApiOrganController extends Handler {
@Autowired
private OrganRepository organRepository;
@NonNull
private final OrganRepository organRepository;
/**
* 返回所有部门
* @param request
* @param username 搜索用户名精确搜索
* @return
*/
@RequestMapping(method = RequestMethod.GET)
@Menu(type = "apps", subtype = "organ", access = true)
@ -57,13 +56,10 @@ public class ApiOrganController extends Handler{
/**
* 新增或修改部门
* @param request
* @param user
* @return
*/
@RequestMapping(method = RequestMethod.PUT)
@Menu(type = "apps", subtype = "organ", access = true)
public ResponseEntity<RestResult> put(HttpServletRequest request , @Valid Organ organ) {
public ResponseEntity<RestResult> put(@Valid Organ organ) {
if (organ != null && !StringUtils.isBlank(organ.getName())) {
organRepository.save(organ);
}
@ -72,15 +68,12 @@ public class ApiOrganController extends Handler{
/**
* 删除用户只提供 按照用户ID删除 并且不能删除系统管理员
* @param request
* @param id
* @return
*/
@RequestMapping(method = RequestMethod.DELETE)
@Menu(type = "apps", subtype = "user", access = true)
public ResponseEntity<RestResult> delete(HttpServletRequest request, @Valid String id) {
RestResult result = new RestResult(RestResultType.OK);
Organ organ = null ;
Organ organ;
if (!StringUtils.isBlank(id)) {
organ = organRepository.findByIdAndOrgi(id, super.getOrgi(request));
if (organ != null) { //系统管理员 不允许 使用 接口删除

View File

@ -25,9 +25,10 @@ import com.chatopera.cc.persistence.repository.OrgiSkillRelRepository;
import com.chatopera.cc.persistence.repository.UserRepository;
import com.chatopera.cc.proxy.UserProxy;
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.PageRequest;
import org.springframework.lang.NonNull;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
@ -40,22 +41,23 @@ import java.util.List;
@Controller
@RequestMapping("/res")
@RequiredArgsConstructor
public class UsersResourceController extends Handler {
@Autowired
private UserRepository userRes;
@NonNull
private final UserRepository userRes;
@Autowired
private OrgiSkillRelRepository orgiSkillRelService;
@NonNull
private final OrgiSkillRelRepository orgiSkillRelService;
@Autowired
private OrganRepository organRes;
@NonNull
private final OrganRepository organRes;
@Autowired
private UserProxy userProxy;
@NonNull
private final UserProxy userProxy;
@RequestMapping("/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) {
q = "";
}
@ -65,7 +67,7 @@ public class UsersResourceController extends Handler {
@RequestMapping("/bpm/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) {
q = "";
}
@ -75,7 +77,7 @@ public class UsersResourceController extends Handler {
@RequestMapping("/bpm/organ")
@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("usersList", getUsers(request));
map.addAttribute("ids", ids);
@ -83,7 +85,7 @@ public class UsersResourceController extends Handler {
}
private List<User> getUsers(HttpServletRequest request) {
List<User> list = null;
List<User> list;
if (super.isTenantshare()) {
List<String> organIdList = new ArrayList<>();
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) {
if (q == null) {
q = "";
}
Page<User> list = null;
Page<User> list;
if (super.isTenantshare()) {
List<String> organIdList = new ArrayList<>();
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) {
List<Organ> list = null;
List<Organ> list;
if (super.isTenantshare()) {
List<String> organIdList = new ArrayList<>();
List<OrgiSkillRel> orgiSkillRelList = orgiSkillRelService.findByOrgi(super.getOrgi(request));

View File

@ -19,16 +19,18 @@ package com.chatopera.cc.persistence.impl;
import com.chatopera.cc.model.Organ;
import com.chatopera.cc.persistence.interfaces.DataExchangeInterface;
import com.chatopera.cc.persistence.repository.OrganRepository;
import org.springframework.beans.factory.annotation.Autowired;
import lombok.RequiredArgsConstructor;
import org.springframework.lang.NonNull;
import org.springframework.stereotype.Service;
import java.io.Serializable;
import java.util.List;
@Service("organdata")
@RequiredArgsConstructor
public class OrganDataExchangeImpl implements DataExchangeInterface {
@Autowired
private OrganRepository organRes ;
@NonNull
private final OrganRepository organRes;
public String getDataByIdAndOrgi(String id, String orgi) {
Organ organ = organRes.findByIdAndOrgi(id, orgi);

View File

@ -23,20 +23,18 @@ import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
public interface OrganRepository
extends JpaRepository<Organ, String>
{
public interface OrganRepository extends JpaRepository<Organ, String> {
Organ findByIdAndOrgi(String paramString, String orgi);
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 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);

View File

@ -32,6 +32,7 @@ import freemarker.template.TemplateException;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.lang.Nullable;
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
import javax.servlet.http.Cookie;
@ -61,6 +62,7 @@ public class OnlineUserProxy {
/**
*
*/
@Nullable
public static CousultInvite consult(final String snsid, final String orgi) {
// logger.info("[consult] snsid {}, orgi {}", snsid, orgi);
CousultInvite consultInvite = MainContext.getCache().findOneConsultInviteBySnsidAndOrgi(snsid, orgi);

View File

@ -1,30 +1,23 @@
package com.chatopera.cc.proxy;
import com.chatopera.cc.controller.admin.OrganController;
import com.chatopera.cc.model.Organ;
import com.chatopera.cc.model.User;
import com.chatopera.cc.persistence.repository.OrganRepository;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.lang.NonNull;
import org.springframework.stereotype.Service;
import java.util.Date;
@Service
@RequiredArgsConstructor
public class OrganProxy {
private final static Logger logger = LoggerFactory.getLogger(OrganController.class);
@Autowired
private OrganRepository organRes;
@NonNull
private final OrganRepository organRes;
/**
* 检查组织机构树
* @param organ
* @param organId
* @param orgi
* @return
*/
private boolean checkParentOrgan(Organ organ, String organId, String orgi) {
if (StringUtils.equals(organ.getParent(), "0")) {
@ -48,13 +41,7 @@ public class OrganProxy {
}
/**
* @param organ
* @param orgi
* @param user
* @return msg
*/
public String updateOrgan(final Organ organ, final String orgi, final User user) {
public String updateOrgan(final Organ organ, final String orgi) {
final Organ oldOrgan = organRes.findByNameAndOrgi(organ.getName(), orgi);
String msg = "admin_organ_update_success";

View File

@ -20,52 +20,47 @@ import com.chatopera.cc.persistence.repository.OrganUserRepository;
import com.chatopera.cc.persistence.repository.RoleAuthRepository;
import com.chatopera.cc.persistence.repository.UserRepository;
import com.google.gson.JsonObject;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
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.web.server.ResponseStatusException;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import java.util.*;
/**
* 用户/坐席 常用方法
*/
@Component
@RequiredArgsConstructor
public class UserProxy {
private final static Logger logger = LoggerFactory.getLogger(UserProxy.class);
@Autowired
private OrganUserRepository organUserRes;
@NonNull
private final OrganUserRepository organUserRes;
@Autowired
private OrganRepository organRes;
@NonNull
private final OrganRepository organRes;
@Autowired
private UserRepository userRes;
@NonNull
private final UserRepository userRes;
@Autowired
private RoleAuthRepository roleAuthRes;
@NonNull
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) {
String msg = "";
String msg;
msg = validUser(user);
if (StringUtils.isNotBlank(msg) && !msg.equals("new_user_success")) {
return msg;
@ -90,8 +85,10 @@ public class UserProxy {
}
@NonNull
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) {
@ -127,13 +124,10 @@ public class UserProxy {
/**
* 通过坐席ID查找其技能组Map
*
* @param agentno
* @return
*/
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<>();
attachOrgansPropertiesForUser(user);
@ -142,9 +136,6 @@ public class UserProxy {
/**
* 获得一个用户的直属组织机构
*
* @param userid
* @return
*/
public List<String> findOrgansByUserid(final String 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) {
String msg = "edit_user_success";
@ -265,9 +252,6 @@ public class UserProxy {
/**
* 从Json中创建User
*
* @param json
* @return
*/
public User parseUserFromJson(final JsonObject json) {
User tempUser = new User();
@ -323,11 +307,7 @@ public class UserProxy {
// 是否是坐席
if (json.has("agent")) {
String val = json.get("agent").getAsString();
if (StringUtils.isNotBlank(val) && StringUtils.equals("1", val)) {
tempUser.setAgent(true);
} else {
tempUser.setAgent(false);
}
tempUser.setAgent(StringUtils.isNotBlank(val) && StringUtils.equals("1", val));
} else {
tempUser.setAgent(false);
}
@ -349,11 +329,7 @@ public class UserProxy {
// 是否是呼叫中心
if (json.has("callcenter")) {
String val = json.get("callcenter").getAsString();
if (StringUtils.isNotBlank(val) && StringUtils.equals("1", val)) {
tempUser.setCallcenter(true);
} else {
tempUser.setCallcenter(false);
}
tempUser.setCallcenter(StringUtils.isNotBlank(val) && StringUtils.equals("1", val));
} else {
tempUser.setCallcenter(false);
}
@ -374,9 +350,6 @@ public class UserProxy {
/**
* 验证用户数据合法性
*
* @param user
* @return
*/
public String validUser(final User user) {
String msg = "new_user_success";
@ -428,11 +401,6 @@ public class UserProxy {
/**
* 或取Sips列表
*
* @param organ
* @param datastatus
* @param orgi
* @return
*/
public List<String> findSipsByOrganAndDatastatusAndOrgi(final String organ, final boolean datastatus, final String orgi) {
List<String> users = findUserIdsInOrgan(organ);
@ -445,15 +413,8 @@ public class UserProxy {
/**
* 通过租户ID是否为坐席是否有效和组织机构查询坐席数
*
* @param orgi
* @param agent
* @param datastatus
* @param organ
* @return
*/
public long countByOrgiAndAgentAndDatastatusAndOrgan(
final String orgi,
final boolean agent,
final boolean datastatus,
final String organ) {
@ -468,17 +429,11 @@ public class UserProxy {
/**
* 增加用户的角色信息
*
* @param user
*/
public void attachRolesMap(final User user) {
// 获取用户的角色权限进行授权
List<RoleAuth> roleAuthList = roleAuthRes.findAll(new Specification<RoleAuth>() {
@Override
public Predicate toPredicate(
Root<RoleAuth> root, CriteriaQuery<?> query,
CriteriaBuilder cb) {
List<Predicate> criteria = new ArrayList<Predicate>();
List<RoleAuth> roleAuthList = roleAuthRes.findAll((Specification<RoleAuth>) (root, query, cb) -> {
List<Predicate> criteria = new ArrayList<>();
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()));
@ -487,7 +442,6 @@ public class UserProxy {
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.
@ -501,8 +455,6 @@ public class UserProxy {
/**
* 获得一个部门及其子部门并添加到User的myorgans中
*
* @param user
*/
public void processAffiliates(final User user, final Organ organ) {
if (organ == null) {
@ -530,8 +482,6 @@ public class UserProxy {
/**
* 获取用户部门以及下级部门
*
* @param user
*/
public void attachOrgansPropertiesForUser(final User user) {
List<OrganUser> organs = organUserRes.findByUserid(user.getId());
@ -542,8 +492,10 @@ public class UserProxy {
for (final OrganUser organ : organs) {
// 添加直属部门到organs
final Organ o = organRes.findOne(organ.getOrgan());
user.getOrgans().put(organ.getOrgan(), o);
String id = organ.getOrgan();
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()) {
skills.put(o.getId(), o.getName());
}

View File

@ -29,13 +29,11 @@ import org.springframework.data.domain.PageImpl;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.ui.ModelMap;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaBuilder.In;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import javax.validation.Valid;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedHashSet;
import java.util.List;
@ -47,10 +45,7 @@ public class CallCenterUtils {
private static UserProxy userProxy;
/**
* @param extno
* @param sipTrunkRes
* @param extRes
* @return
*
*/
public static SipTrunk siptrunk(String extno, SipTrunkRepository sipTrunkRes, ExtentionRepository extRes) {
SipTrunk sipTrunk = null;
@ -77,9 +72,7 @@ public class CallCenterUtils {
/**
* @param name
* @param sipTrunkRes
* @return
*
*/
public static SipTrunk siptrunk(String name, SipTrunkRepository sipTrunkRes) {
SipTrunk sipTrunk = null;
@ -100,15 +93,10 @@ public class CallCenterUtils {
/**
* 我的部门以及授权给我的部门
*
* @param userRoleRes
* @param callOutRoleRes
* @param user
* @return
*/
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>();
ArrayList<String> organList = new ArrayList<>();
if (userRole.size() > 0) {
for (UserRole userTemp : userRole) {
UKefuCallOutRole roleOrgan = callOutRoleRes.findByOrgiAndRoleid(
@ -117,9 +105,7 @@ public class CallCenterUtils {
if (roleOrgan != null) {
if (StringUtils.isNotBlank(roleOrgan.getOrganid())) {
String[] organ = roleOrgan.getOrganid().split(",");
for (int i = 0; i < organ.length; i++) {
organList.add(organ[i]);
}
Collections.addAll(organList, organ);
}
}
@ -128,9 +114,7 @@ public class CallCenterUtils {
getUserProxy().attachOrgansPropertiesForUser(user);
if (user.getAffiliates().size() > 0) {
for (final String organ : user.getAffiliates()) {
organList.add(organ);
}
organList.addAll(user.getAffiliates());
}
return organList;
@ -138,25 +122,15 @@ public class CallCenterUtils {
/**
* 我的部门以及授权给我的部门 - 批次
*
* @param batchRes
* @param userRoleRes
* @param callOutRoleRes
* @param user
* @return
*/
public static List<JobDetail> getBatchList(JobDetailRepository batchRes, UserRoleRepository userRoleRes, UKefuCallOutRoleRepository callOutRoleRes, final User user) {
public static List<JobDetail> getBatchList(JobDetailRepository batchRes, final User user) {
//final List<String> organList = CallCenterUtils.getAuthOrgan(userRoleRes, callOutRoleRes, user);
final List<String> organList = CallCenterUtils.getExistOrgan(user);
List<JobDetail> batchList = batchRes.findAll(new Specification<JobDetail>() {
@Override
public Predicate toPredicate(
Root<JobDetail> root, CriteriaQuery<?> query,
CriteriaBuilder cb) {
List<Predicate> list = new ArrayList<Predicate>();
return batchRes.findAll((Specification<JobDetail>) (root, query, cb) -> {
List<Predicate> list = new ArrayList<>();
In<Object> in = cb.in(root.get("organ"));
list.add(cb.equal(root.get("orgi").as(String.class), user.getOrgi()));
@ -174,33 +148,20 @@ public class CallCenterUtils {
Predicate[] p = new Predicate[list.size()];
return cb.and(list.toArray(p));
}
});
return batchList;
}
/**
* 我的部门以及授权给我的部门 - 筛选表单
*
* @param filterRes
* @param userRoleRes
* @param callOutRoleRes
* @param user
* @return
*/
public static List<FormFilter> getFormFilterList(FormFilterRepository filterRes, UserRoleRepository userRoleRes, UKefuCallOutRoleRepository callOutRoleRes, final User user) {
public static List<FormFilter> getFormFilterList(FormFilterRepository filterRes, final User user) {
//final List<String> organList = CallCenterUtils.getAuthOrgan(userRoleRes, callOutRoleRes, user);
final List<String> organList = CallCenterUtils.getExistOrgan(user);
List<FormFilter> formFilterList = filterRes.findAll(new Specification<FormFilter>() {
@Override
public Predicate toPredicate(
Root<FormFilter> root, CriteriaQuery<?> query,
CriteriaBuilder cb) {
List<Predicate> list = new ArrayList<Predicate>();
return filterRes.findAll((Specification<FormFilter>) (root, query, cb) -> {
List<Predicate> list = new ArrayList<>();
In<Object> in = cb.in(root.get("organ"));
list.add(cb.equal(root.get("orgi").as(String.class), user.getOrgi()));
@ -217,33 +178,20 @@ public class CallCenterUtils {
Predicate[] p = new Predicate[list.size()];
return cb.and(list.toArray(p));
}
});
return formFilterList;
}
/**
* 我的部门以及授权给我的部门 - 活动
*
* @param batchRes
* @param userRoleRes
* @param callOutRoleRes
* @param user
* @return
*/
public static List<JobDetail> getActivityList(JobDetailRepository batchRes, UserRoleRepository userRoleRes, UKefuCallOutRoleRepository callOutRoleRes, final User user) {
public static List<JobDetail> getActivityList(JobDetailRepository batchRes, final User user) {
//final List<String> organList = CallCenterUtils.getAuthOrgan(userRoleRes, callOutRoleRes, user);
final List<String> organList = CallCenterUtils.getExistOrgan(user);
List<JobDetail> activityList = batchRes.findAll(new Specification<JobDetail>() {
@Override
public Predicate toPredicate(
Root<JobDetail> root, CriteriaQuery<?> query,
CriteriaBuilder cb) {
List<Predicate> list = new ArrayList<Predicate>();
return batchRes.findAll((Specification<JobDetail>) (root, query, cb) -> {
List<Predicate> list = new ArrayList<>();
In<Object> in = cb.in(root.get("organ"));
list.add(cb.equal(root.get("orgi").as(String.class), user.getOrgi()));
@ -261,19 +209,11 @@ public class CallCenterUtils {
Predicate[] p = new Predicate[list.size()];
return cb.and(list.toArray(p));
}
});
return activityList;
}
/**
* 查询条件下拉信息返回
*
* @param map
* @param user
* @param ownerdept
* @param actid
*/
public static void getAllCallOutList(ModelMap map, User user, String ownerdept, String actid) {
JobDetailRepository batchRes = MainContext.getContext().getBean(JobDetailRepository.class);
@ -282,7 +222,7 @@ public class CallCenterUtils {
FormFilterRepository filterRes = MainContext.getContext().getBean(FormFilterRepository.class);
OrganRepository organRes = MainContext.getContext().getBean(OrganRepository.class);
List<JobDetail> activityList = CallCenterUtils.getActivityList(batchRes, userRoleRes, callOutRoleRes, user);
List<JobDetail> activityList = CallCenterUtils.getActivityList(batchRes, user);
List<SaleStatus> salestatusList = new ArrayList<>();
for (JobDetail act : activityList) {
List<SaleStatus> salestastus = MainContext.getContext().getBean(
@ -290,14 +230,14 @@ public class CallCenterUtils {
salestatusList.addAll(salestastus);
}
LinkedHashSet<SaleStatus> set = new LinkedHashSet<SaleStatus>(salestatusList.size());
LinkedHashSet<SaleStatus> set = new LinkedHashSet<>(salestatusList.size());
set.addAll(salestatusList);
salestatusList.clear();
salestatusList.addAll(set);
map.put("salestatusList", salestatusList);
map.put("batchList", CallCenterUtils.getBatchList(batchRes, userRoleRes, callOutRoleRes, user));
map.put("activityList", CallCenterUtils.getActivityList(batchRes, userRoleRes, callOutRoleRes, user));
map.put("formFilterList", CallCenterUtils.getFormFilterList(filterRes, userRoleRes, callOutRoleRes, user));
map.put("batchList", CallCenterUtils.getBatchList(batchRes, user));
map.put("activityList", CallCenterUtils.getActivityList(batchRes, user));
map.put("formFilterList", CallCenterUtils.getFormFilterList(filterRes, user));
if (StringUtils.isBlank(ownerdept)) {
map.addAttribute(
@ -310,7 +250,7 @@ public class CallCenterUtils {
}
map.addAttribute(
"skillGroups", organRes.findAll(CallCenterUtils.getAuthOrgan(userRoleRes, callOutRoleRes, user)));
"skillGroups", organRes.findAllById(CallCenterUtils.getAuthOrgan(userRoleRes, callOutRoleRes, user)));
map.put(
"taskList", MainContext.getContext().getBean(UKefuCallOutTaskRepository.class).findByActidAndOrgi(
actid,
@ -327,10 +267,6 @@ public class CallCenterUtils {
/**
* 指定活动已设置的分配数
*
* @param map
* @param activityid
* @param user
*/
public static void getNamenum(ModelMap map, String activityid, User user) {
@ -351,9 +287,6 @@ public class CallCenterUtils {
/**
* 查询目前存在的部门
* 已分配部门的坐席如果部门被删之后这个方法可以把这些用户过滤掉
*
* @param user
* @return
*/
public static List<String> getExistOrgan(User user) {
@ -365,7 +298,7 @@ public class CallCenterUtils {
List<Organ> organAllList = organRes.findByOrgi(user.getOrgi());
final List<String> tempList = new ArrayList<String>();
final List<String> tempList = new ArrayList<>();
for (String organid : organList) {
for (Organ organ : organAllList) {
@ -379,10 +312,6 @@ public class CallCenterUtils {
/**
* 分配给坐席的名单单个名单回收到池子
*
* @param task
* @param batch
* @param ukefuCallOutFilter
*/
public static void getAgentRenum(UKefuCallOutTask task, JobDetail batch, UKefuCallOutFilter ukefuCallOutFilter) {
@ -417,9 +346,6 @@ public class CallCenterUtils {
/**
* 分配给坐席的名单单个名单回收到部门
*
* @param task
* @param ukefuCallOutFilter
*/
public static void getAgentReorgannum(UKefuCallOutTask task, UKefuCallOutFilter ukefuCallOutFilter) {
@ -446,10 +372,6 @@ public class CallCenterUtils {
/**
* 分配给部门的名单单个名单回收到池子
*
* @param task
* @param batch
* @param ukefuCallOutFilter
*/
public static void getOrganRenum(UKefuCallOutTask task, JobDetail batch, UKefuCallOutFilter ukefuCallOutFilter) {
@ -484,12 +406,8 @@ public class CallCenterUtils {
/**
* 获取指定活动已分配的名单数
*
* @param actid
* @param user
* @return
*/
public static int getActDisnum(@Valid String actid, User user, @Valid int p, @Valid int ps) {
public static int getActDisnum(@Valid String actid, @Valid int p, @Valid int ps) {
BoolQueryBuilder queryBuilder = new BoolQueryBuilder();
queryBuilder.must(termQuery("actid", actid));// 活动ID
queryBuilder.mustNot(termQuery("status", MainContext.NamesDisStatusType.NOT.toString()));