From f9648bcaf8adc6dd12c3393386f786454a0b94e6 Mon Sep 17 00:00:00 2001 From: thinkgem Date: Thu, 7 Nov 2024 10:26:27 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20=E7=AA=97=E5=8F=A3?= =?UTF-8?q?=E5=8F=B3=E4=B8=8A=E8=A7=92=E7=9A=84=E5=A4=B4=E5=83=8F=E4=B8=8B?= =?UTF-8?q?=E6=8B=89=E8=8F=9C=E5=8D=95=EF=BC=8C=E5=88=87=E6=8D=A2=E5=BD=93?= =?UTF-8?q?=E5=89=8D=E7=94=A8=E6=88=B7=E6=89=80=E5=B1=9E=E5=B2=97=E4=BD=8D?= =?UTF-8?q?=EF=BC=8C=E5=B9=B6=E8=81=94=E5=8A=A8=E5=88=87=E6=8D=A2=E5=BD=93?= =?UTF-8?q?=E5=89=8D=E8=8F=9C=E5=8D=95=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/shiro/filter/FormFilter.java | 33 ++++++++++++------- .../support/EmployeeServiceSupport.java | 7 ++++ .../jeesite/modules/sys/utils/EmpUtils.java | 14 ++++++++ .../modules/sys/web/PostController.java | 2 +- .../views/include/sysIndex/topMenuUser.html | 19 +++++++++-- 5 files changed, 60 insertions(+), 15 deletions(-) diff --git a/modules/core/src/main/java/com/jeesite/common/shiro/filter/FormFilter.java b/modules/core/src/main/java/com/jeesite/common/shiro/filter/FormFilter.java index 230f7c5b..0e46a3ac 100644 --- a/modules/core/src/main/java/com/jeesite/common/shiro/filter/FormFilter.java +++ b/modules/core/src/main/java/com/jeesite/common/shiro/filter/FormFilter.java @@ -17,13 +17,12 @@ import com.jeesite.common.shiro.realm.BaseAuthorizingRealm; import com.jeesite.common.utils.SpringUtils; import com.jeesite.common.web.CookieUtils; import com.jeesite.common.web.http.ServletUtils; -import com.jeesite.modules.sys.entity.Log; -import com.jeesite.modules.sys.entity.Role; -import com.jeesite.modules.sys.entity.User; -import com.jeesite.modules.sys.utils.CorpUtils; -import com.jeesite.modules.sys.utils.LogUtils; -import com.jeesite.modules.sys.utils.UserUtils; -import com.jeesite.modules.sys.utils.ValidCodeUtils; +import com.jeesite.modules.sys.entity.*; +import com.jeesite.modules.sys.utils.*; +import jakarta.servlet.ServletRequest; +import jakarta.servlet.ServletResponse; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.apache.shiro.authc.AuthenticationException; import org.apache.shiro.authc.AuthenticationToken; import org.apache.shiro.authc.IncorrectCredentialsException; @@ -37,10 +36,6 @@ import org.apache.shiro.web.util.WebUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import jakarta.servlet.ServletRequest; -import jakarta.servlet.ServletResponse; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.List; import java.util.Map; @@ -452,6 +447,7 @@ public class FormFilter extends org.apache.shiro.web.filter.authc.FormAuthentica data.put("msgEnabled", Global.getPropertyToBoolean("msg.enabled", "false")); data.put("sysCode", session.getAttribute("sysCode")); data.put("roleCode", session.getAttribute("roleCode")); + data.put("postCode", session.getAttribute("postCode")); data.put("title", Global.getProperty("productName")); data.put("company", Global.getProperty("companyName")); data.put("version", Global.getProperty("productVersion")); @@ -471,6 +467,21 @@ public class FormFilter extends org.apache.shiro.web.filter.authc.FormAuthentica } } data.put("roleList", roleList); + List> postList = ListUtils.newArrayList(); + if (Global.getConfigToBoolean("user.postRolePermi", "false") + && User.USER_TYPE_EMPLOYEE.equals(user.getUserType())) { + Employee employee = user.getRefObj(); + for (EmployeePost ep : EmpUtils.getEmployeePostList(employee.getEmpCode())){ + Post post = ep.getPost(); + if (post != null) { + Map postMap = MapUtils.newHashMap(); + postMap.put("postCode", post.getPostCode()); + postMap.put("postName", post.getPostName()); + postList.add(postMap); + } + } + } + data.put("postList", postList); data.put("desktopUrl", desktopUrl != null ? desktopUrl : Global.getConfig("sys.index.desktopUrl")); return data; } diff --git a/modules/core/src/main/java/com/jeesite/modules/sys/service/support/EmployeeServiceSupport.java b/modules/core/src/main/java/com/jeesite/modules/sys/service/support/EmployeeServiceSupport.java index 8cc3d120..f6b61b24 100644 --- a/modules/core/src/main/java/com/jeesite/modules/sys/service/support/EmployeeServiceSupport.java +++ b/modules/core/src/main/java/com/jeesite/modules/sys/service/support/EmployeeServiceSupport.java @@ -6,6 +6,7 @@ package com.jeesite.modules.sys.service.support; import com.jeesite.common.collect.ListUtils; import com.jeesite.common.entity.Page; +import com.jeesite.common.lang.StringUtils; import com.jeesite.common.service.CrudService; import com.jeesite.modules.sys.dao.EmployeeDao; import com.jeesite.modules.sys.dao.EmployeeOfficeDao; @@ -107,6 +108,12 @@ public class EmployeeServiceSupport extends CrudService public List findEmployeePostList(Employee employee){ EmployeePost employeePost = new EmployeePost(); employeePost.setEmpCode(employee.getEmpCode()); + if (employee.getDataMap() != null) { + String a = (String)employee.getDataMap().get("loadJoinTableAlias"); + if (StringUtils.isNotBlank(a)) { + employeePost.sqlMap().loadJoinTableAlias(a); + } + } return employeePostDao.findList(employeePost); } diff --git a/modules/core/src/main/java/com/jeesite/modules/sys/utils/EmpUtils.java b/modules/core/src/main/java/com/jeesite/modules/sys/utils/EmpUtils.java index 565f6c47..58048255 100644 --- a/modules/core/src/main/java/com/jeesite/modules/sys/utils/EmpUtils.java +++ b/modules/core/src/main/java/com/jeesite/modules/sys/utils/EmpUtils.java @@ -5,6 +5,7 @@ package com.jeesite.modules.sys.utils; import com.jeesite.common.collect.ListUtils; +import com.jeesite.common.collect.MapUtils; import com.jeesite.common.collect.SetUtils; import com.jeesite.common.lang.ObjectUtils; import com.jeesite.common.lang.StringUtils; @@ -325,6 +326,19 @@ public class EmpUtils { }); return list.toArray(new String[list.size()]); } + + /** + * 根据员工编号,获取员工岗位(返回岗位编码和名称) + * @param empCode + * @return + */ + public static List getEmployeePostList(String empCode){ + Employee employee = new Employee(); + employee.setEmpCode(empCode); + employee.setDataMap(MapUtils.newHashMap()); + employee.getDataMap().put("loadJoinTableAlias", "p"); + return Static.employeeService.findEmployeePostList(employee); + } /** * 清除指定用户缓存,不包括改用的SESSION缓存 diff --git a/modules/core/src/main/java/com/jeesite/modules/sys/web/PostController.java b/modules/core/src/main/java/com/jeesite/modules/sys/web/PostController.java index 66e9c437..12ad2121 100644 --- a/modules/core/src/main/java/com/jeesite/modules/sys/web/PostController.java +++ b/modules/core/src/main/java/com/jeesite/modules/sys/web/PostController.java @@ -79,7 +79,7 @@ public class PostController extends BaseController { List roleCodes = ListUtils.newArrayList(); List roleNames = ListUtils.newArrayList(); postService.findPostRoleList(where).forEach(e -> { - if (e.getRole() != null) { + if (e.getRole() != null && PostRole.STATUS_NORMAL.equals(e.getRole().getStatus())) { roleCodes.add(e.getRoleCode()); roleNames.add(e.getRole().getRoleName()); } diff --git a/modules/core/src/main/resources/views/include/sysIndex/topMenuUser.html b/modules/core/src/main/resources/views/include/sysIndex/topMenuUser.html index 787e6424..895d12b5 100644 --- a/modules/core/src/main/resources/views/include/sysIndex/topMenuUser.html +++ b/modules/core/src/main/resources/views/include/sysIndex/topMenuUser.html @@ -18,7 +18,7 @@ ${text('退出登录')} <% var sysCodes = []; - for(var role in user.roleList) { + for(var role in roleList) { var codes = @StringUtils.splitComma(role.sysCodes); if (!isEmpty(codes)) { for (var code in codes) { @@ -47,12 +47,25 @@ <% }else{ %>
  • <% } %> - <% if(user.roleList.~size > 0){ %> + <% if(postList.~size > 0){ %> +
  • + <% var postCode = @ObjectUtils.toStringIgnoreNull(session.postCode, ''); %> + + <% for(var post in postList){ %> +
  • + + ${post.postName} + +
  • + <% } %> + <% } else if(roleList.~size > 0){ %>
  • <% var roleCode = @ObjectUtils.toStringIgnoreNull(session.roleCode, ''); %> - <% for(var role in user.roleList){ if(role.isShow == '1'){ %> + <% for(var role in roleList){ if(role.isShow == '1'){ %>