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

Closed #123 检测组织列表

This commit is contained in:
Hai Liang Wang 2018-10-25 15:21:40 +08:00
parent 77643c7ef8
commit a2ef70e7cb
4 changed files with 405 additions and 384 deletions

View File

@ -39,7 +39,7 @@ public class ApplicationController extends Handler{
view.addObject("istenantshare",super.isEnabletneant());
if(super.isEnabletneant()) {
//多租户启用 非超级管理员 一定要选择租户才能进入界面
if(!user.isSuperuser() && !StringUtils.isBlank(user.getOrgid()) && super.isTenantconsole() && MainContext.SYSTEM_ORGI.equals(user.getOrgi())) {
if(!user.isSuperuser() && StringUtils.isNotBlank(user.getOrgid()) && super.isTenantconsole() && MainContext.SYSTEM_ORGI.equals(user.getOrgi())) {
view = request(super.createRequestPageTempletResponse("redirect:/apps/tenant/index"));
}
if(StringUtils.isBlank(user.getOrgid())) {

View File

@ -16,23 +16,16 @@
*/
package com.chatopera.cc.app.handler;
import static org.elasticsearch.index.query.QueryBuilders.termQuery;
import static org.elasticsearch.index.query.QueryBuilders.termsQuery;
import java.text.ParseException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import com.chatopera.cc.app.basic.MainContext;
import com.chatopera.cc.app.basic.MainUtils;
import com.chatopera.cc.app.basic.Viewport;
import com.chatopera.cc.exception.CSKefuException;
import com.chatopera.cc.app.cache.CacheHelper;
import com.chatopera.cc.app.persistence.repository.TenantRepository;
import com.chatopera.cc.app.handler.api.rest.QueryParams;
import com.chatopera.cc.app.model.SystemConfig;
import com.chatopera.cc.app.model.Tenant;
import com.chatopera.cc.app.model.User;
import com.chatopera.cc.app.persistence.repository.TenantRepository;
import com.chatopera.cc.exception.CSKefuException;
import org.apache.commons.lang.StringUtils;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
@ -47,7 +40,12 @@ import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.servlet.ModelAndView;
import com.chatopera.cc.app.model.SystemConfig;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import java.text.ParseException;
import static org.elasticsearch.index.query.QueryBuilders.termQuery;
import static org.elasticsearch.index.query.QueryBuilders.termsQuery;
@Controller
@ -72,11 +70,12 @@ public class Handler {
if (StringUtils.isBlank(authorization) && request.getCookies() != null) {
for (Cookie cookie : request.getCookies()) {
if (cookie.getName().equals("authorization")) {
authorization = cookie.getValue() ; break ;
authorization = cookie.getValue();
break;
}
}
}
if(!StringUtils.isBlank(authorization)){
if (StringUtils.isNotBlank(authorization)) {
user = (User) CacheHelper.getApiUserCacheBean().getCacheObject(authorization, MainContext.SYSTEM_ORGI);
}
if (user == null) {
@ -94,6 +93,7 @@ public class Handler {
/**
* 构建ElasticSearch基于部门查询的Filter
*
* @param request
* @param boolQueryBuilder
* @return
@ -119,7 +119,6 @@ public class Handler {
}
/**
*
* @param queryBuilder
* @param request
*/
@ -127,56 +126,56 @@ public class Handler {
queryBuilder.must(termQuery("orgi", this.getOrgi(request)));
//搜索框
if(!StringUtils.isBlank(request.getParameter("q"))) {
if (StringUtils.isNotBlank(request.getParameter("q"))) {
String q = request.getParameter("q");
q = q.replaceAll("(OR|AND|NOT|:|\\(|\\))", "");
if(!StringUtils.isBlank(q)){
if (StringUtils.isNotBlank(q)) {
queryBuilder.must(QueryBuilders.boolQuery().must(new QueryStringQueryBuilder(q).defaultOperator(Operator.AND)));
map.put("q", q);
}
}
//筛选表单
if(!StringUtils.isBlank(request.getParameter("filterid"))) {
if (StringUtils.isNotBlank(request.getParameter("filterid"))) {
queryBuilder.must(termQuery("filterid", request.getParameter("filterid")));
map.put("filterid", request.getParameter("filterid"));
}
//批次
if(!StringUtils.isBlank(request.getParameter("batid"))) {
if (StringUtils.isNotBlank(request.getParameter("batid"))) {
queryBuilder.must(termQuery("batid", request.getParameter("batid")));
map.put("batid", request.getParameter("batid"));
}
//活动
if(!StringUtils.isBlank(request.getParameter("actid"))) {
if (StringUtils.isNotBlank(request.getParameter("actid"))) {
queryBuilder.must(termQuery("actid", request.getParameter("actid")));
map.put("actid", request.getParameter("actid"));
}
//业务状态
if(!StringUtils.isBlank(request.getParameter("workstatus"))) {
if (StringUtils.isNotBlank(request.getParameter("workstatus"))) {
queryBuilder.must(termQuery("workstatus", request.getParameter("workstatus")));
map.put("workstatus", request.getParameter("workstatus"));
}
//拨打状态
if(!StringUtils.isBlank(request.getParameter("callstatus"))) {
if (StringUtils.isNotBlank(request.getParameter("callstatus"))) {
queryBuilder.must(termQuery("callstatus", request.getParameter("callstatus")));
map.put("callstatus", request.getParameter("callstatus"));
}
//预约状态
if(!StringUtils.isBlank(request.getParameter("apstatus"))) {
if (StringUtils.isNotBlank(request.getParameter("apstatus"))) {
queryBuilder.must(termQuery("apstatus", request.getParameter("apstatus")));
map.put("apstatus", request.getParameter("apstatus"));
}
RangeQueryBuilder rangeQuery = null;
//拨打时间区间查询
if(!StringUtils.isBlank(request.getParameter("callbegin")) || !StringUtils.isBlank(request.getParameter("callend"))){
if (StringUtils.isNotBlank(request.getParameter("callbegin")) || StringUtils.isNotBlank(request.getParameter("callend"))) {
if(!StringUtils.isBlank(request.getParameter("callbegin"))) {
if (StringUtils.isNotBlank(request.getParameter("callbegin"))) {
try {
rangeQuery = QueryBuilders.rangeQuery("calltime").from(MainUtils.dateFormate.parse(request.getParameter("callbegin")).getTime());
@ -185,7 +184,7 @@ public class Handler {
e.printStackTrace();
}
}
if(!StringUtils.isBlank(request.getParameter("callend")) ) {
if (StringUtils.isNotBlank(request.getParameter("callend"))) {
try {
@ -204,9 +203,9 @@ public class Handler {
map.put("callend", request.getParameter("callend"));
}
//预约时间区间查询
if(!StringUtils.isBlank(request.getParameter("apbegin")) || !StringUtils.isBlank(request.getParameter("apend"))){
if (StringUtils.isNotBlank(request.getParameter("apbegin")) || StringUtils.isNotBlank(request.getParameter("apend"))) {
if(!StringUtils.isBlank(request.getParameter("apbegin"))) {
if (StringUtils.isNotBlank(request.getParameter("apbegin"))) {
try {
rangeQuery = QueryBuilders.rangeQuery("aptime").from(MainUtils.dateFormate.parse(request.getParameter("apbegin")).getTime());
@ -215,7 +214,7 @@ public class Handler {
e.printStackTrace();
}
}
if(!StringUtils.isBlank(request.getParameter("apend")) ) {
if (StringUtils.isNotBlank(request.getParameter("apend"))) {
try {
@ -230,7 +229,6 @@ public class Handler {
}
}
map.put("apbegin", request.getParameter("apbegin"));
map.put("apend", request.getParameter("apend"));
@ -241,22 +239,22 @@ public class Handler {
}
//外呼任务id
if(!StringUtils.isBlank(request.getParameter("taskid"))) {
if (StringUtils.isNotBlank(request.getParameter("taskid"))) {
queryBuilder.must(termQuery("taskid", request.getParameter("taskid")));
map.put("taskid", request.getParameter("taskid"));
}
//坐席
if(!StringUtils.isBlank(request.getParameter("owneruser"))) {
if (StringUtils.isNotBlank(request.getParameter("owneruser"))) {
queryBuilder.must(termQuery("owneruser", request.getParameter("owneruser")));
map.put("owneruser", request.getParameter("owneruser"));
}
//部门
if(!StringUtils.isBlank(request.getParameter("ownerdept"))) {
if (StringUtils.isNotBlank(request.getParameter("ownerdept"))) {
queryBuilder.must(termQuery("ownerdept", request.getParameter("ownerdept")));
map.put("ownerdept", request.getParameter("ownerdept"));
}
//分配状态
if(!StringUtils.isBlank(request.getParameter("status"))) {
if (StringUtils.isNotBlank(request.getParameter("status"))) {
queryBuilder.must(termQuery("status", request.getParameter("status")));
map.put("status", request.getParameter("status"));
}
@ -268,12 +266,12 @@ public class Handler {
User user = (User) request.getSession(true).getAttribute(MainContext.IM_USER_SESSION_NAME);
if (user == null) {
user = new User();
if(!StringUtils.isBlank(userid)){
if (StringUtils.isNotBlank(userid)) {
user.setId(userid);
} else {
user.setId(MainUtils.getContextID(request.getSession().getId()));
}
if(!StringUtils.isBlank(nickname)){
if (StringUtils.isNotBlank(nickname)) {
user.setUsername(nickname);
} else {
user.setUsername(MainContext.GUEST_USER + "_" + MainUtils.genIDByKey(user.getId()));
@ -293,14 +291,17 @@ public class Handler {
/**
* 创建系统监控的 模板页面
*
* @param page
* @return
*/
public Viewport createAdminTempletResponse(String page) {
return new Viewport("/admin/include/tpl", page);
}
/**
* 创建系统监控的 模板页面
*
* @param page
* @return
*/
@ -310,6 +311,7 @@ public class Handler {
/**
* 创建系统监控的 模板页面
*
* @param page
* @return
*/
@ -322,7 +324,6 @@ public class Handler {
}
/**
*
* @param data
* @return
*/
@ -333,7 +334,7 @@ public class Handler {
public int getP(HttpServletRequest request) {
int page = 0;
String p = request.getParameter("p");
if(!StringUtils.isBlank(p) && p.matches("[\\d]*")){
if (StringUtils.isNotBlank(p) && p.matches("[\\d]*")) {
page = Integer.parseInt(p);
if (page > 0) {
page = page - 1;
@ -345,7 +346,7 @@ public class Handler {
public int getPs(HttpServletRequest request) {
int pagesize = PAGE_SIZE_TW;
String ps = request.getParameter("ps");
if(!StringUtils.isBlank(ps) && ps.matches("[\\d]*")){
if (StringUtils.isNotBlank(ps) && ps.matches("[\\d]*")) {
pagesize = Integer.parseInt(ps);
}
return pagesize;
@ -353,7 +354,7 @@ public class Handler {
public int getP(QueryParams params) {
int page = 0;
if(params!=null && !StringUtils.isBlank(params.getP()) && params.getP().matches("[\\d]*")){
if (params != null && StringUtils.isNotBlank(params.getP()) && params.getP().matches("[\\d]*")) {
page = Integer.parseInt(params.getP());
if (page > 0) {
page = page - 1;
@ -364,7 +365,7 @@ public class Handler {
public int getPs(QueryParams params) {
int pagesize = PAGE_SIZE_TW;
if(params != null && !StringUtils.isBlank(params.getPs()) && params.getPs().matches("[\\d]*")){
if (params != null && StringUtils.isNotBlank(params.getPs()) && params.getPs().matches("[\\d]*")) {
pagesize = Integer.parseInt(params.getPs());
}
return pagesize;
@ -374,7 +375,7 @@ public class Handler {
public int get50Ps(HttpServletRequest request) {
int pagesize = PAGE_SIZE_FV;
String ps = request.getParameter("ps");
if(!StringUtils.isBlank(ps) && ps.matches("[\\d]*")){
if (StringUtils.isNotBlank(ps) && ps.matches("[\\d]*")) {
pagesize = Integer.parseInt(ps);
}
return pagesize;
@ -383,8 +384,10 @@ public class Handler {
public String getOrgi(HttpServletRequest request) {
return getUser(request).getOrgi();
}
/**
* 机构id
*
* @param request
* @return
*/
@ -396,8 +399,10 @@ public class Handler {
public Tenant getTenant(HttpServletRequest request) {
return tenantRes.findById(getOrgi(request));
}
/**
* 根据是否租户共享获取orgi
*
* @param request
* @return
*/
@ -412,6 +417,7 @@ public class Handler {
/**
* 判断是否租户共享
*
* @return
*/
public boolean isTenantshare() {
@ -424,6 +430,7 @@ public class Handler {
/**
* 判断是否多租户
*
* @return
*/
public boolean isEnabletneant() {
@ -433,8 +440,10 @@ public class Handler {
}
return false;
}
/**
* 判断是否多租户
*
* @return
*/
public boolean isTenantconsole() {

View File

@ -18,13 +18,13 @@ package com.chatopera.cc.app.handler;
import com.chatopera.cc.app.basic.MainContext;
import com.chatopera.cc.app.basic.MainUtils;
import com.chatopera.cc.util.Menu;
import com.chatopera.cc.app.model.*;
import com.chatopera.cc.app.cache.CacheHelper;
import com.chatopera.cc.app.model.*;
import com.chatopera.cc.app.persistence.repository.OrganRepository;
import com.chatopera.cc.app.persistence.repository.RoleAuthRepository;
import com.chatopera.cc.app.persistence.repository.UserRepository;
import com.chatopera.cc.app.persistence.repository.UserRoleRepository;
import com.chatopera.cc.util.Menu;
import com.chatopera.cc.util.OnlineUserUtils;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
@ -78,10 +78,18 @@ public class LoginController extends Handler {
private void organs(final User user, final String organ) {
if (organ == null)
return;
if (user.inMyorgans(organ))
return;
user.getMyorgans().add(organ);
List<Organ> y = organRepository.findByOrgiAndParent(user.getOrgi(), organ);
for (Organ x : y) {
try {
organs(user, x.getId());
} catch (Exception e) {
logger.error("organs", e);
}
}
}

View File

@ -515,6 +515,10 @@ public class User implements java.io.Serializable{
this.ordertype = ordertype;
}
public boolean inMyorgans(final String organ){
return myorgans.contains(organ);
}
@Transient
public HashSet<String> getMyorgans() {
return myorgans;