diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/ApplicationController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/ApplicationController.java index 81f3d52c..d6f66ebf 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/ApplicationController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/ApplicationController.java @@ -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())) { diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/Handler.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/Handler.java index 71f70097..c633f9d7 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/Handler.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/Handler.java @@ -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 @@ -55,59 +53,61 @@ import com.chatopera.cc.app.model.SystemConfig; public class Handler { private static final Logger logger = LoggerFactory.getLogger(Handler.class); - @Autowired - private TenantRepository tenantRes; - - public final static int PAGE_SIZE_BG = 1 ; - public final static int PAGE_SIZE_TW = 20 ; - public final static int PAGE_SIZE_FV = 50 ; - public final static int PAGE_SIZE_HA = 100 ; - - private long starttime = System.currentTimeMillis(); - - public User getUser(HttpServletRequest request){ - User user = (User) request.getSession(true).getAttribute(MainContext.USER_SESSION_NAME) ; - if(user==null){ - String authorization = request.getHeader("authorization") ; - if(StringUtils.isBlank(authorization) && request.getCookies()!=null){ - for(Cookie cookie : request.getCookies()){ - if(cookie.getName().equals("authorization")){ - authorization = cookie.getValue() ; break ; - } - } - } - if(!StringUtils.isBlank(authorization)){ - user = (User) CacheHelper.getApiUserCacheBean().getCacheObject(authorization, MainContext.SYSTEM_ORGI) ; - } - if(user==null){ - user = new User(); - user.setId(MainUtils.getContextID(request.getSession().getId())) ; - user.setUsername(MainContext.GUEST_USER+"_"+ MainUtils.genIDByKey(user.getId())) ; - user.setOrgi(MainContext.SYSTEM_ORGI); - user.setSessionid(user.getId()) ; - } - }else{ - user.setSessionid(user.getId()) ; - } - return user ; - } + @Autowired + private TenantRepository tenantRes; + + public final static int PAGE_SIZE_BG = 1; + public final static int PAGE_SIZE_TW = 20; + public final static int PAGE_SIZE_FV = 50; + public final static int PAGE_SIZE_HA = 100; + + private long starttime = System.currentTimeMillis(); + + public User getUser(HttpServletRequest request) { + User user = (User) request.getSession(true).getAttribute(MainContext.USER_SESSION_NAME); + if (user == null) { + String authorization = request.getHeader("authorization"); + if (StringUtils.isBlank(authorization) && request.getCookies() != null) { + for (Cookie cookie : request.getCookies()) { + if (cookie.getName().equals("authorization")) { + authorization = cookie.getValue(); + break; + } + } + } + if (StringUtils.isNotBlank(authorization)) { + user = (User) CacheHelper.getApiUserCacheBean().getCacheObject(authorization, MainContext.SYSTEM_ORGI); + } + if (user == null) { + user = new User(); + user.setId(MainUtils.getContextID(request.getSession().getId())); + user.setUsername(MainContext.GUEST_USER + "_" + MainUtils.genIDByKey(user.getId())); + user.setOrgi(MainContext.SYSTEM_ORGI); + user.setSessionid(user.getId()); + } + } else { + user.setSessionid(user.getId()); + } + return user; + } /** * 构建ElasticSearch基于部门查询的Filter + * * @param request * @param boolQueryBuilder * @return * @throws CSKefuException */ - public boolean esOrganFilter(final HttpServletRequest request, final BoolQueryBuilder boolQueryBuilder) throws CSKefuException { + public boolean esOrganFilter(final HttpServletRequest request, final BoolQueryBuilder boolQueryBuilder) throws CSKefuException { // 组合部门条件 User u = getUser(request); - if( u == null){ + if (u == null) { throw new CSKefuException("[esOrganFilter] 未能获取到登录用户。"); - } else if(u.isSuperuser()){ + } else if (u.isSuperuser()) { // 超级管理员, 查看任何数据 return true; - } else if(u.getMyorgans().size() == 0){ + } else if (u.getMyorgans().size() == 0) { // 用户没有被分配到部门,返回空数据 return false; } else { @@ -117,339 +117,348 @@ public class Handler { return true; } } - - /** - * - * @param queryBuilder - * @param request - */ - public BoolQueryBuilder search(BoolQueryBuilder queryBuilder , ModelMap map, HttpServletRequest request){ - queryBuilder.must(termQuery("orgi", this.getOrgi(request))) ; - - //搜索框 - if(!StringUtils.isBlank(request.getParameter("q"))) { - String q = request.getParameter("q") ; - q = q.replaceAll("(OR|AND|NOT|:|\\(|\\))", "") ; - if(!StringUtils.isBlank(q)){ - queryBuilder.must(QueryBuilders.boolQuery().must(new QueryStringQueryBuilder(q).defaultOperator(Operator.AND))) ; - map.put("q", q) ; - } - } - - //筛选表单 - if(!StringUtils.isBlank(request.getParameter("filterid"))) { - queryBuilder.must(termQuery("filterid", request.getParameter("filterid"))) ; - map.put("filterid", request.getParameter("filterid")) ; - } - - //批次 - if(!StringUtils.isBlank(request.getParameter("batid"))) { - queryBuilder.must(termQuery("batid", request.getParameter("batid"))) ; - map.put("batid", request.getParameter("batid")) ; - } - - //活动 - if(!StringUtils.isBlank(request.getParameter("actid"))) { - queryBuilder.must(termQuery("actid", request.getParameter("actid"))) ; - map.put("actid", request.getParameter("actid")) ; - } - - //业务状态 - if(!StringUtils.isBlank(request.getParameter("workstatus"))) { - queryBuilder.must(termQuery("workstatus", request.getParameter("workstatus"))) ; - map.put("workstatus", request.getParameter("workstatus")) ; - } - - //拨打状态 - if(!StringUtils.isBlank(request.getParameter("callstatus"))) { - queryBuilder.must(termQuery("callstatus", request.getParameter("callstatus"))) ; - map.put("callstatus", request.getParameter("callstatus")) ; - } - - //预约状态 - if(!StringUtils.isBlank(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.isBlank(request.getParameter("callbegin"))) { - try { - - rangeQuery = QueryBuilders.rangeQuery("calltime").from(MainUtils.dateFormate.parse(request.getParameter("callbegin")).getTime()) ; - } catch (ParseException e) { - - e.printStackTrace(); - } - } - if(!StringUtils.isBlank(request.getParameter("callend")) ) { - - try { - - if(rangeQuery == null) { - rangeQuery = QueryBuilders.rangeQuery("calltime").to(MainUtils.dateFormate.parse(request.getParameter("callend")).getTime()) ; - }else { - rangeQuery.to(MainUtils.dateFormate.parse(request.getParameter("callend")).getTime()) ; - } - } catch (ParseException e) { - - e.printStackTrace(); - } - - } - map.put("callbegin", request.getParameter("callbegin")) ; - map.put("callend", request.getParameter("callend")) ; - } - //预约时间区间查询 - if(!StringUtils.isBlank(request.getParameter("apbegin")) || !StringUtils.isBlank(request.getParameter("apend"))){ - - if(!StringUtils.isBlank(request.getParameter("apbegin"))) { - try { - - rangeQuery = QueryBuilders.rangeQuery("aptime").from(MainUtils.dateFormate.parse(request.getParameter("apbegin")).getTime()) ; - } catch (ParseException e) { - - e.printStackTrace(); - } - } - if(!StringUtils.isBlank(request.getParameter("apend")) ) { - - try { - - if(rangeQuery == null) { - rangeQuery = QueryBuilders.rangeQuery("aptime").to(MainUtils.dateFormate.parse(request.getParameter("apend")).getTime()) ; - }else { - rangeQuery.to(MainUtils.dateFormate.parse(request.getParameter("apend")).getTime()) ; - } - } catch (ParseException e) { - - e.printStackTrace(); - } - - - - } - map.put("apbegin", request.getParameter("apbegin")) ; - map.put("apend", request.getParameter("apend")) ; - } - - if(rangeQuery!=null) { - queryBuilder.must(rangeQuery) ; - } - - //外呼任务id - if(!StringUtils.isBlank(request.getParameter("taskid"))) { - queryBuilder.must(termQuery("taskid", request.getParameter("taskid"))) ; - map.put("taskid", request.getParameter("taskid")) ; - } - //坐席 - if(!StringUtils.isBlank(request.getParameter("owneruser"))) { - queryBuilder.must(termQuery("owneruser", request.getParameter("owneruser"))) ; - map.put("owneruser", request.getParameter("owneruser")) ; - } - //部门 - if(!StringUtils.isBlank(request.getParameter("ownerdept"))) { - queryBuilder.must(termQuery("ownerdept", request.getParameter("ownerdept"))) ; - map.put("ownerdept", request.getParameter("ownerdept")) ; - } - //分配状态 - if(!StringUtils.isBlank(request.getParameter("status"))) { - queryBuilder.must(termQuery("status", request.getParameter("status"))) ; - map.put("status", request.getParameter("status")) ; - } - return queryBuilder ; - } - - public User getIMUser(HttpServletRequest request , String userid , String nickname){ - User user = (User) request.getSession(true).getAttribute(MainContext.IM_USER_SESSION_NAME) ; - if(user==null){ - user = new User(); - if(!StringUtils.isBlank(userid)){ - user.setId(userid) ; - }else{ - user.setId(MainUtils.getContextID(request.getSession().getId())) ; - } - if(!StringUtils.isBlank(nickname)){ - user.setUsername(nickname); - }else{ - user.setUsername(MainContext.GUEST_USER+"_"+ MainUtils.genIDByKey(user.getId())) ; - } - user.setSessionid(user.getId()) ; - }else{ - user.setSessionid(MainUtils.getContextID(request.getSession().getId())) ; - } - return user ; - } - - public void setUser(HttpServletRequest request , User user){ - request.getSession(true).removeAttribute(MainContext.USER_SESSION_NAME) ; - request.getSession(true).setAttribute(MainContext.USER_SESSION_NAME , user) ; - } - + /** + * @param queryBuilder + * @param request + */ + public BoolQueryBuilder search(BoolQueryBuilder queryBuilder, ModelMap map, HttpServletRequest request) { + queryBuilder.must(termQuery("orgi", this.getOrgi(request))); - /** - * 创建系统监控的 模板页面 - * @param page - * @return - */ - public Viewport createAdminTempletResponse(String page) { - return new Viewport("/admin/include/tpl" , page); - } - /** - * 创建系统监控的 模板页面 - * @param page - * @return - */ - public Viewport createAppsTempletResponse(String page) { - return new Viewport("/apps/include/tpl" , page); - } - - /** - * 创建系统监控的 模板页面 - * @param page - * @return - */ - public Viewport createEntIMTempletResponse(String page) { - return new Viewport("/apps/entim/include/tpl" , page); - } - - public Viewport createRequestPageTempletResponse(String page) { - return new Viewport(page); - } - - /** - * - * @param data - * @return - */ - public ModelAndView request(Viewport data) { - return new ModelAndView(data.getTemplet()!=null ? data.getTemplet(): data.getPage() , "data", data) ; + //搜索框 + if (StringUtils.isNotBlank(request.getParameter("q"))) { + String q = request.getParameter("q"); + q = q.replaceAll("(OR|AND|NOT|:|\\(|\\))", ""); + if (StringUtils.isNotBlank(q)) { + queryBuilder.must(QueryBuilders.boolQuery().must(new QueryStringQueryBuilder(q).defaultOperator(Operator.AND))); + map.put("q", q); + } + } + + //筛选表单 + if (StringUtils.isNotBlank(request.getParameter("filterid"))) { + queryBuilder.must(termQuery("filterid", request.getParameter("filterid"))); + map.put("filterid", request.getParameter("filterid")); + } + + //批次 + if (StringUtils.isNotBlank(request.getParameter("batid"))) { + queryBuilder.must(termQuery("batid", request.getParameter("batid"))); + map.put("batid", request.getParameter("batid")); + } + + //活动 + if (StringUtils.isNotBlank(request.getParameter("actid"))) { + queryBuilder.must(termQuery("actid", request.getParameter("actid"))); + map.put("actid", request.getParameter("actid")); + } + + //业务状态 + if (StringUtils.isNotBlank(request.getParameter("workstatus"))) { + queryBuilder.must(termQuery("workstatus", request.getParameter("workstatus"))); + map.put("workstatus", request.getParameter("workstatus")); + } + + //拨打状态 + if (StringUtils.isNotBlank(request.getParameter("callstatus"))) { + queryBuilder.must(termQuery("callstatus", request.getParameter("callstatus"))); + map.put("callstatus", request.getParameter("callstatus")); + } + + //预约状态 + if (StringUtils.isNotBlank(request.getParameter("apstatus"))) { + queryBuilder.must(termQuery("apstatus", request.getParameter("apstatus"))); + map.put("apstatus", request.getParameter("apstatus")); + } + + RangeQueryBuilder rangeQuery = null; + //拨打时间区间查询 + if (StringUtils.isNotBlank(request.getParameter("callbegin")) || StringUtils.isNotBlank(request.getParameter("callend"))) { + + if (StringUtils.isNotBlank(request.getParameter("callbegin"))) { + try { + + rangeQuery = QueryBuilders.rangeQuery("calltime").from(MainUtils.dateFormate.parse(request.getParameter("callbegin")).getTime()); + } catch (ParseException e) { + + e.printStackTrace(); + } + } + if (StringUtils.isNotBlank(request.getParameter("callend"))) { + + try { + + if (rangeQuery == null) { + rangeQuery = QueryBuilders.rangeQuery("calltime").to(MainUtils.dateFormate.parse(request.getParameter("callend")).getTime()); + } else { + rangeQuery.to(MainUtils.dateFormate.parse(request.getParameter("callend")).getTime()); + } + } catch (ParseException e) { + + e.printStackTrace(); + } + + } + map.put("callbegin", request.getParameter("callbegin")); + map.put("callend", request.getParameter("callend")); + } + //预约时间区间查询 + if (StringUtils.isNotBlank(request.getParameter("apbegin")) || StringUtils.isNotBlank(request.getParameter("apend"))) { + + if (StringUtils.isNotBlank(request.getParameter("apbegin"))) { + try { + + rangeQuery = QueryBuilders.rangeQuery("aptime").from(MainUtils.dateFormate.parse(request.getParameter("apbegin")).getTime()); + } catch (ParseException e) { + + e.printStackTrace(); + } + } + if (StringUtils.isNotBlank(request.getParameter("apend"))) { + + try { + + if (rangeQuery == null) { + rangeQuery = QueryBuilders.rangeQuery("aptime").to(MainUtils.dateFormate.parse(request.getParameter("apend")).getTime()); + } else { + rangeQuery.to(MainUtils.dateFormate.parse(request.getParameter("apend")).getTime()); + } + } catch (ParseException e) { + + e.printStackTrace(); + } + + + } + map.put("apbegin", request.getParameter("apbegin")); + map.put("apend", request.getParameter("apend")); + } + + if (rangeQuery != null) { + queryBuilder.must(rangeQuery); + } + + //外呼任务id + if (StringUtils.isNotBlank(request.getParameter("taskid"))) { + queryBuilder.must(termQuery("taskid", request.getParameter("taskid"))); + map.put("taskid", request.getParameter("taskid")); + } + //坐席 + if (StringUtils.isNotBlank(request.getParameter("owneruser"))) { + queryBuilder.must(termQuery("owneruser", request.getParameter("owneruser"))); + map.put("owneruser", request.getParameter("owneruser")); + } + //部门 + if (StringUtils.isNotBlank(request.getParameter("ownerdept"))) { + queryBuilder.must(termQuery("ownerdept", request.getParameter("ownerdept"))); + map.put("ownerdept", request.getParameter("ownerdept")); + } + //分配状态 + if (StringUtils.isNotBlank(request.getParameter("status"))) { + queryBuilder.must(termQuery("status", request.getParameter("status"))); + map.put("status", request.getParameter("status")); + } + + return queryBuilder; } - public int getP(HttpServletRequest request) { - int page = 0; - String p = request.getParameter("p") ; - if(!StringUtils.isBlank(p) && p.matches("[\\d]*")){ - page = Integer.parseInt(p) ; - if(page > 0){ - page = page - 1 ; - } - } - return page; - } - - public int getPs(HttpServletRequest request) { - int pagesize = PAGE_SIZE_TW; - String ps = request.getParameter("ps") ; - if(!StringUtils.isBlank(ps) && ps.matches("[\\d]*")){ - pagesize = Integer.parseInt(ps) ; - } - return pagesize; - } - - public int getP(QueryParams params) { - int page = 0; - if(params!=null && !StringUtils.isBlank(params.getP()) && params.getP().matches("[\\d]*")){ - page = Integer.parseInt(params.getP()) ; - if(page > 0){ - page = page - 1 ; - } - } - return page; - } - - public int getPs(QueryParams params) { - int pagesize = PAGE_SIZE_TW; - if(params != null && !StringUtils.isBlank(params.getPs()) && params.getPs().matches("[\\d]*")){ - pagesize = Integer.parseInt(params.getPs()) ; - } - return pagesize; - } - - - public int get50Ps(HttpServletRequest request) { - int pagesize = PAGE_SIZE_FV; - String ps = request.getParameter("ps") ; - if(!StringUtils.isBlank(ps) && ps.matches("[\\d]*")){ - pagesize = Integer.parseInt(ps) ; - } - return pagesize; - } - - public String getOrgi(HttpServletRequest request){ - return getUser(request).getOrgi(); - } - /** - * 机构id - * @param request - * @return - */ - public String getOrgid(HttpServletRequest request){ - User u = getUser(request); - return u.getOrgid(); - } - - public Tenant getTenant(HttpServletRequest request){ - return tenantRes.findById(getOrgi(request)); - } - /** - * 根据是否租户共享获取orgi - * @param request - * @return - */ - public String getOrgiByTenantshare(HttpServletRequest request){ - SystemConfig systemConfig = MainUtils.getSystemConfig(); - if(systemConfig!=null&&systemConfig.isEnabletneant()&&systemConfig.isTenantshare()) { - User user = this.getUser(request) ; - return user.getOrgid(); - } - return getOrgi(request); - } - - /** - * 判断是否租户共享 - * @return - */ - public boolean isTenantshare(){ - SystemConfig systemConfig = MainUtils.getSystemConfig(); - if(systemConfig!=null&&systemConfig.isEnabletneant()&&systemConfig.isTenantshare()) { - return true; - } - return false; - } - - /** - * 判断是否多租户 - * @return - */ - public boolean isEnabletneant(){ - SystemConfig systemConfig = MainUtils.getSystemConfig(); - if(systemConfig!=null&&systemConfig.isEnabletneant()) { - return true; - } - return false; - } - /** - * 判断是否多租户 - * @return - */ - public boolean isTenantconsole(){ - SystemConfig systemConfig = MainUtils.getSystemConfig(); - if(systemConfig!=null&&systemConfig.isEnabletneant()&&systemConfig.isTenantconsole()) { - return true; - } - return false; - } + public User getIMUser(HttpServletRequest request, String userid, String nickname) { + User user = (User) request.getSession(true).getAttribute(MainContext.IM_USER_SESSION_NAME); + if (user == null) { + user = new User(); + if (StringUtils.isNotBlank(userid)) { + user.setId(userid); + } else { + user.setId(MainUtils.getContextID(request.getSession().getId())); + } + if (StringUtils.isNotBlank(nickname)) { + user.setUsername(nickname); + } else { + user.setUsername(MainContext.GUEST_USER + "_" + MainUtils.genIDByKey(user.getId())); + } + user.setSessionid(user.getId()); + } else { + user.setSessionid(MainUtils.getContextID(request.getSession().getId())); + } + return user; + } - public long getStarttime() { - return starttime; - } + public void setUser(HttpServletRequest request, User user) { + request.getSession(true).removeAttribute(MainContext.USER_SESSION_NAME); + request.getSession(true).setAttribute(MainContext.USER_SESSION_NAME, user); + } - public void setStarttime(long starttime) { - this.starttime = starttime; - } + + /** + * 创建系统监控的 模板页面 + * + * @param page + * @return + */ + public Viewport createAdminTempletResponse(String page) { + return new Viewport("/admin/include/tpl", page); + } + + /** + * 创建系统监控的 模板页面 + * + * @param page + * @return + */ + public Viewport createAppsTempletResponse(String page) { + return new Viewport("/apps/include/tpl", page); + } + + /** + * 创建系统监控的 模板页面 + * + * @param page + * @return + */ + public Viewport createEntIMTempletResponse(String page) { + return new Viewport("/apps/entim/include/tpl", page); + } + + public Viewport createRequestPageTempletResponse(String page) { + return new Viewport(page); + } + + /** + * @param data + * @return + */ + public ModelAndView request(Viewport data) { + return new ModelAndView(data.getTemplet() != null ? data.getTemplet() : data.getPage(), "data", data); + } + + public int getP(HttpServletRequest request) { + int page = 0; + String p = request.getParameter("p"); + if (StringUtils.isNotBlank(p) && p.matches("[\\d]*")) { + page = Integer.parseInt(p); + if (page > 0) { + page = page - 1; + } + } + return page; + } + + public int getPs(HttpServletRequest request) { + int pagesize = PAGE_SIZE_TW; + String ps = request.getParameter("ps"); + if (StringUtils.isNotBlank(ps) && ps.matches("[\\d]*")) { + pagesize = Integer.parseInt(ps); + } + return pagesize; + } + + public int getP(QueryParams params) { + int page = 0; + if (params != null && StringUtils.isNotBlank(params.getP()) && params.getP().matches("[\\d]*")) { + page = Integer.parseInt(params.getP()); + if (page > 0) { + page = page - 1; + } + } + return page; + } + + public int getPs(QueryParams params) { + int pagesize = PAGE_SIZE_TW; + if (params != null && StringUtils.isNotBlank(params.getPs()) && params.getPs().matches("[\\d]*")) { + pagesize = Integer.parseInt(params.getPs()); + } + return pagesize; + } + + + public int get50Ps(HttpServletRequest request) { + int pagesize = PAGE_SIZE_FV; + String ps = request.getParameter("ps"); + if (StringUtils.isNotBlank(ps) && ps.matches("[\\d]*")) { + pagesize = Integer.parseInt(ps); + } + return pagesize; + } + + public String getOrgi(HttpServletRequest request) { + return getUser(request).getOrgi(); + } + + /** + * 机构id + * + * @param request + * @return + */ + public String getOrgid(HttpServletRequest request) { + User u = getUser(request); + return u.getOrgid(); + } + + public Tenant getTenant(HttpServletRequest request) { + return tenantRes.findById(getOrgi(request)); + } + + /** + * 根据是否租户共享获取orgi + * + * @param request + * @return + */ + public String getOrgiByTenantshare(HttpServletRequest request) { + SystemConfig systemConfig = MainUtils.getSystemConfig(); + if (systemConfig != null && systemConfig.isEnabletneant() && systemConfig.isTenantshare()) { + User user = this.getUser(request); + return user.getOrgid(); + } + return getOrgi(request); + } + + /** + * 判断是否租户共享 + * + * @return + */ + public boolean isTenantshare() { + SystemConfig systemConfig = MainUtils.getSystemConfig(); + if (systemConfig != null && systemConfig.isEnabletneant() && systemConfig.isTenantshare()) { + return true; + } + return false; + } + + /** + * 判断是否多租户 + * + * @return + */ + public boolean isEnabletneant() { + SystemConfig systemConfig = MainUtils.getSystemConfig(); + if (systemConfig != null && systemConfig.isEnabletneant()) { + return true; + } + return false; + } + + /** + * 判断是否多租户 + * + * @return + */ + public boolean isTenantconsole() { + SystemConfig systemConfig = MainUtils.getSystemConfig(); + if (systemConfig != null && systemConfig.isEnabletneant() && systemConfig.isTenantconsole()) { + return true; + } + return false; + } + + public long getStarttime() { + return starttime; + } + + public void setStarttime(long starttime) { + this.starttime = starttime; + } } diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/LoginController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/LoginController.java index e4d249cc..f57d6f05 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/LoginController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/LoginController.java @@ -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 y = organRepository.findByOrgiAndParent(user.getOrgi(), organ); for (Organ x : y) { - organs(user, x.getId()); + try { + organs(user, x.getId()); + } catch (Exception e) { + logger.error("organs", e); + } } } diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/model/User.java b/contact-center/app/src/main/java/com/chatopera/cc/app/model/User.java index 3d54e472..7691b2fa 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/model/User.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/model/User.java @@ -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 getMyorgans() { return myorgans;