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()); view.addObject("istenantshare",super.isEnabletneant());
if(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")); view = request(super.createRequestPageTempletResponse("redirect:/apps/tenant/index"));
} }
if(StringUtils.isBlank(user.getOrgid())) { if(StringUtils.isBlank(user.getOrgid())) {

View File

@ -16,23 +16,16 @@
*/ */
package com.chatopera.cc.app.handler; 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.MainContext;
import com.chatopera.cc.app.basic.MainUtils; import com.chatopera.cc.app.basic.MainUtils;
import com.chatopera.cc.app.basic.Viewport; 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.cache.CacheHelper;
import com.chatopera.cc.app.persistence.repository.TenantRepository;
import com.chatopera.cc.app.handler.api.rest.QueryParams; 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.Tenant;
import com.chatopera.cc.app.model.User; 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.apache.commons.lang.StringUtils;
import org.elasticsearch.index.query.BoolQueryBuilder; import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders; 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.bind.annotation.SessionAttributes;
import org.springframework.web.servlet.ModelAndView; 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 @Controller
@ -72,11 +70,12 @@ public class Handler {
if (StringUtils.isBlank(authorization) && request.getCookies() != null) { if (StringUtils.isBlank(authorization) && request.getCookies() != null) {
for (Cookie cookie : request.getCookies()) { for (Cookie cookie : request.getCookies()) {
if (cookie.getName().equals("authorization")) { 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); user = (User) CacheHelper.getApiUserCacheBean().getCacheObject(authorization, MainContext.SYSTEM_ORGI);
} }
if (user == null) { if (user == null) {
@ -94,6 +93,7 @@ public class Handler {
/** /**
* 构建ElasticSearch基于部门查询的Filter * 构建ElasticSearch基于部门查询的Filter
*
* @param request * @param request
* @param boolQueryBuilder * @param boolQueryBuilder
* @return * @return
@ -119,7 +119,6 @@ public class Handler {
} }
/** /**
*
* @param queryBuilder * @param queryBuilder
* @param request * @param request
*/ */
@ -127,56 +126,56 @@ public class Handler {
queryBuilder.must(termQuery("orgi", this.getOrgi(request))); queryBuilder.must(termQuery("orgi", this.getOrgi(request)));
//搜索框 //搜索框
if(!StringUtils.isBlank(request.getParameter("q"))) { if (StringUtils.isNotBlank(request.getParameter("q"))) {
String q = request.getParameter("q"); String q = request.getParameter("q");
q = q.replaceAll("(OR|AND|NOT|:|\\(|\\))", ""); 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))); queryBuilder.must(QueryBuilders.boolQuery().must(new QueryStringQueryBuilder(q).defaultOperator(Operator.AND)));
map.put("q", q); map.put("q", q);
} }
} }
//筛选表单 //筛选表单
if(!StringUtils.isBlank(request.getParameter("filterid"))) { if (StringUtils.isNotBlank(request.getParameter("filterid"))) {
queryBuilder.must(termQuery("filterid", request.getParameter("filterid"))); queryBuilder.must(termQuery("filterid", request.getParameter("filterid")));
map.put("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"))); queryBuilder.must(termQuery("batid", request.getParameter("batid")));
map.put("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"))); queryBuilder.must(termQuery("actid", request.getParameter("actid")));
map.put("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"))); queryBuilder.must(termQuery("workstatus", request.getParameter("workstatus")));
map.put("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"))); queryBuilder.must(termQuery("callstatus", request.getParameter("callstatus")));
map.put("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"))); queryBuilder.must(termQuery("apstatus", request.getParameter("apstatus")));
map.put("apstatus", request.getParameter("apstatus")); map.put("apstatus", request.getParameter("apstatus"));
} }
RangeQueryBuilder rangeQuery = null; 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 { try {
rangeQuery = QueryBuilders.rangeQuery("calltime").from(MainUtils.dateFormate.parse(request.getParameter("callbegin")).getTime()); rangeQuery = QueryBuilders.rangeQuery("calltime").from(MainUtils.dateFormate.parse(request.getParameter("callbegin")).getTime());
@ -185,7 +184,7 @@ public class Handler {
e.printStackTrace(); e.printStackTrace();
} }
} }
if(!StringUtils.isBlank(request.getParameter("callend")) ) { if (StringUtils.isNotBlank(request.getParameter("callend"))) {
try { try {
@ -204,9 +203,9 @@ public class Handler {
map.put("callend", request.getParameter("callend")); 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 { try {
rangeQuery = QueryBuilders.rangeQuery("aptime").from(MainUtils.dateFormate.parse(request.getParameter("apbegin")).getTime()); rangeQuery = QueryBuilders.rangeQuery("aptime").from(MainUtils.dateFormate.parse(request.getParameter("apbegin")).getTime());
@ -215,7 +214,7 @@ public class Handler {
e.printStackTrace(); e.printStackTrace();
} }
} }
if(!StringUtils.isBlank(request.getParameter("apend")) ) { if (StringUtils.isNotBlank(request.getParameter("apend"))) {
try { try {
@ -230,7 +229,6 @@ public class Handler {
} }
} }
map.put("apbegin", request.getParameter("apbegin")); map.put("apbegin", request.getParameter("apbegin"));
map.put("apend", request.getParameter("apend")); map.put("apend", request.getParameter("apend"));
@ -241,22 +239,22 @@ public class Handler {
} }
//外呼任务id //外呼任务id
if(!StringUtils.isBlank(request.getParameter("taskid"))) { if (StringUtils.isNotBlank(request.getParameter("taskid"))) {
queryBuilder.must(termQuery("taskid", request.getParameter("taskid"))); queryBuilder.must(termQuery("taskid", request.getParameter("taskid")));
map.put("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"))); queryBuilder.must(termQuery("owneruser", request.getParameter("owneruser")));
map.put("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"))); queryBuilder.must(termQuery("ownerdept", request.getParameter("ownerdept")));
map.put("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"))); queryBuilder.must(termQuery("status", request.getParameter("status")));
map.put("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); User user = (User) request.getSession(true).getAttribute(MainContext.IM_USER_SESSION_NAME);
if (user == null) { if (user == null) {
user = new User(); user = new User();
if(!StringUtils.isBlank(userid)){ if (StringUtils.isNotBlank(userid)) {
user.setId(userid); user.setId(userid);
} else { } else {
user.setId(MainUtils.getContextID(request.getSession().getId())); user.setId(MainUtils.getContextID(request.getSession().getId()));
} }
if(!StringUtils.isBlank(nickname)){ if (StringUtils.isNotBlank(nickname)) {
user.setUsername(nickname); user.setUsername(nickname);
} else { } else {
user.setUsername(MainContext.GUEST_USER + "_" + MainUtils.genIDByKey(user.getId())); user.setUsername(MainContext.GUEST_USER + "_" + MainUtils.genIDByKey(user.getId()));
@ -293,14 +291,17 @@ public class Handler {
/** /**
* 创建系统监控的 模板页面 * 创建系统监控的 模板页面
*
* @param page * @param page
* @return * @return
*/ */
public Viewport createAdminTempletResponse(String page) { public Viewport createAdminTempletResponse(String page) {
return new Viewport("/admin/include/tpl", page); return new Viewport("/admin/include/tpl", page);
} }
/** /**
* 创建系统监控的 模板页面 * 创建系统监控的 模板页面
*
* @param page * @param page
* @return * @return
*/ */
@ -310,6 +311,7 @@ public class Handler {
/** /**
* 创建系统监控的 模板页面 * 创建系统监控的 模板页面
*
* @param page * @param page
* @return * @return
*/ */
@ -322,7 +324,6 @@ public class Handler {
} }
/** /**
*
* @param data * @param data
* @return * @return
*/ */
@ -333,7 +334,7 @@ public class Handler {
public int getP(HttpServletRequest request) { public int getP(HttpServletRequest request) {
int page = 0; int page = 0;
String p = request.getParameter("p"); String p = request.getParameter("p");
if(!StringUtils.isBlank(p) && p.matches("[\\d]*")){ if (StringUtils.isNotBlank(p) && p.matches("[\\d]*")) {
page = Integer.parseInt(p); page = Integer.parseInt(p);
if (page > 0) { if (page > 0) {
page = page - 1; page = page - 1;
@ -345,7 +346,7 @@ public class Handler {
public int getPs(HttpServletRequest request) { public int getPs(HttpServletRequest request) {
int pagesize = PAGE_SIZE_TW; int pagesize = PAGE_SIZE_TW;
String ps = request.getParameter("ps"); String ps = request.getParameter("ps");
if(!StringUtils.isBlank(ps) && ps.matches("[\\d]*")){ if (StringUtils.isNotBlank(ps) && ps.matches("[\\d]*")) {
pagesize = Integer.parseInt(ps); pagesize = Integer.parseInt(ps);
} }
return pagesize; return pagesize;
@ -353,7 +354,7 @@ public class Handler {
public int getP(QueryParams params) { public int getP(QueryParams params) {
int page = 0; 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()); page = Integer.parseInt(params.getP());
if (page > 0) { if (page > 0) {
page = page - 1; page = page - 1;
@ -364,7 +365,7 @@ public class Handler {
public int getPs(QueryParams params) { public int getPs(QueryParams params) {
int pagesize = PAGE_SIZE_TW; 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()); pagesize = Integer.parseInt(params.getPs());
} }
return pagesize; return pagesize;
@ -374,7 +375,7 @@ public class Handler {
public int get50Ps(HttpServletRequest request) { public int get50Ps(HttpServletRequest request) {
int pagesize = PAGE_SIZE_FV; int pagesize = PAGE_SIZE_FV;
String ps = request.getParameter("ps"); String ps = request.getParameter("ps");
if(!StringUtils.isBlank(ps) && ps.matches("[\\d]*")){ if (StringUtils.isNotBlank(ps) && ps.matches("[\\d]*")) {
pagesize = Integer.parseInt(ps); pagesize = Integer.parseInt(ps);
} }
return pagesize; return pagesize;
@ -383,8 +384,10 @@ public class Handler {
public String getOrgi(HttpServletRequest request) { public String getOrgi(HttpServletRequest request) {
return getUser(request).getOrgi(); return getUser(request).getOrgi();
} }
/** /**
* 机构id * 机构id
*
* @param request * @param request
* @return * @return
*/ */
@ -396,8 +399,10 @@ public class Handler {
public Tenant getTenant(HttpServletRequest request) { public Tenant getTenant(HttpServletRequest request) {
return tenantRes.findById(getOrgi(request)); return tenantRes.findById(getOrgi(request));
} }
/** /**
* 根据是否租户共享获取orgi * 根据是否租户共享获取orgi
*
* @param request * @param request
* @return * @return
*/ */
@ -412,6 +417,7 @@ public class Handler {
/** /**
* 判断是否租户共享 * 判断是否租户共享
*
* @return * @return
*/ */
public boolean isTenantshare() { public boolean isTenantshare() {
@ -424,6 +430,7 @@ public class Handler {
/** /**
* 判断是否多租户 * 判断是否多租户
*
* @return * @return
*/ */
public boolean isEnabletneant() { public boolean isEnabletneant() {
@ -433,8 +440,10 @@ public class Handler {
} }
return false; return false;
} }
/** /**
* 判断是否多租户 * 判断是否多租户
*
* @return * @return
*/ */
public boolean isTenantconsole() { 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.MainContext;
import com.chatopera.cc.app.basic.MainUtils; 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.cache.CacheHelper;
import com.chatopera.cc.app.model.*;
import com.chatopera.cc.app.persistence.repository.OrganRepository; import com.chatopera.cc.app.persistence.repository.OrganRepository;
import com.chatopera.cc.app.persistence.repository.RoleAuthRepository; import com.chatopera.cc.app.persistence.repository.RoleAuthRepository;
import com.chatopera.cc.app.persistence.repository.UserRepository; import com.chatopera.cc.app.persistence.repository.UserRepository;
import com.chatopera.cc.app.persistence.repository.UserRoleRepository; import com.chatopera.cc.app.persistence.repository.UserRoleRepository;
import com.chatopera.cc.util.Menu;
import com.chatopera.cc.util.OnlineUserUtils; import com.chatopera.cc.util.OnlineUserUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -78,10 +78,18 @@ public class LoginController extends Handler {
private void organs(final User user, final String organ) { private void organs(final User user, final String organ) {
if (organ == null) if (organ == null)
return; return;
if (user.inMyorgans(organ))
return;
user.getMyorgans().add(organ); user.getMyorgans().add(organ);
List<Organ> y = organRepository.findByOrgiAndParent(user.getOrgi(), organ); List<Organ> y = organRepository.findByOrgiAndParent(user.getOrgi(), organ);
for (Organ x : y) { for (Organ x : y) {
try {
organs(user, x.getId()); 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; this.ordertype = ordertype;
} }
public boolean inMyorgans(final String organ){
return myorgans.contains(organ);
}
@Transient @Transient
public HashSet<String> getMyorgans() { public HashSet<String> getMyorgans() {
return myorgans; return myorgans;