diff --git a/zhilian-common/zhilian-common-core/src/main/java/com/zhilian/common/core/constant/SecurityConstants.java b/zhilian-common/zhilian-common-core/src/main/java/com/zhilian/common/core/constant/SecurityConstants.java index ad00432..b3ba852 100644 --- a/zhilian-common/zhilian-common-core/src/main/java/com/zhilian/common/core/constant/SecurityConstants.java +++ b/zhilian-common/zhilian-common-core/src/main/java/com/zhilian/common/core/constant/SecurityConstants.java @@ -11,6 +11,12 @@ public class SecurityConstants { */ public static final String DETAILS_USER_ID = "user_id"; + + /** + * 用户ID字段 + */ + public static final String COMPANY_SIGN = "company_sign"; + /** * 用户名字段 */ diff --git a/zhilian-common/zhilian-common-core/src/main/java/com/zhilian/common/core/context/SecurityContextHolder.java b/zhilian-common/zhilian-common-core/src/main/java/com/zhilian/common/core/context/SecurityContextHolder.java index 9b380a6..e026114 100644 --- a/zhilian-common/zhilian-common-core/src/main/java/com/zhilian/common/core/context/SecurityContextHolder.java +++ b/zhilian-common/zhilian-common-core/src/main/java/com/zhilian/common/core/context/SecurityContextHolder.java @@ -61,6 +61,14 @@ public class SecurityContextHolder { set(SecurityConstants.DETAILS_USERNAME, username); } + public static String getCompanySign () { + return get(SecurityConstants.COMPANY_SIGN); + } + + public static void setCompanySign (String companySign) { + set(SecurityConstants.COMPANY_SIGN, companySign); + } + public static String getUserKey () { return get(SecurityConstants.USER_KEY); } diff --git a/zhilian-common/zhilian-common-security/src/main/java/com/zhilian/common/security/interceptor/HeaderInterceptor.java b/zhilian-common/zhilian-common-security/src/main/java/com/zhilian/common/security/interceptor/HeaderInterceptor.java index bed0483..b62e001 100644 --- a/zhilian-common/zhilian-common-security/src/main/java/com/zhilian/common/security/interceptor/HeaderInterceptor.java +++ b/zhilian-common/zhilian-common-security/src/main/java/com/zhilian/common/security/interceptor/HeaderInterceptor.java @@ -29,6 +29,7 @@ public class HeaderInterceptor implements AsyncHandlerInterceptor { SecurityContextHolder.setUserId(ServletUtils.getHeader(request, SecurityConstants.DETAILS_USER_ID)); SecurityContextHolder.setUserName(ServletUtils.getHeader(request, SecurityConstants.DETAILS_USERNAME)); SecurityContextHolder.setUserKey(ServletUtils.getHeader(request, SecurityConstants.USER_KEY)); + SecurityContextHolder.setCompanySign(ServletUtils.getHeader(request, SecurityConstants.COMPANY_SIGN)); String token = SecurityUtils.getToken(); if (StringUtils.isNotEmpty(token)) { diff --git a/zhilian-common/zhilian-common-security/src/main/java/com/zhilian/common/security/service/TokenService.java b/zhilian-common/zhilian-common-security/src/main/java/com/zhilian/common/security/service/TokenService.java index b1f6342..73195c6 100644 --- a/zhilian-common/zhilian-common-security/src/main/java/com/zhilian/common/security/service/TokenService.java +++ b/zhilian-common/zhilian-common-security/src/main/java/com/zhilian/common/security/service/TokenService.java @@ -44,9 +44,11 @@ public class TokenService { String token = IdUtils.fastUUID(); Long userId = loginUser.getSysUser().getUserId(); String userName = loginUser.getSysUser().getUserName(); + String companySign = loginUser.getSysUser().getDept().getCompanySign(); loginUser.setToken(token); loginUser.setUserid(userId); loginUser.setUsername(userName); + loginUser.setCompanySign(companySign); loginUser.setIpaddr(IpUtils.getIpAddr()); refreshToken(loginUser); @@ -55,6 +57,7 @@ public class TokenService { claimsMap.put(SecurityConstants.USER_KEY, token); claimsMap.put(SecurityConstants.DETAILS_USER_ID, userId); claimsMap.put(SecurityConstants.DETAILS_USERNAME, userName); + claimsMap.put(SecurityConstants.COMPANY_SIGN,companySign); // 接口返回信息 Map rspMap = new HashMap(); diff --git a/zhilian-common/zhilian-common-security/src/main/java/com/zhilian/common/security/utils/SecurityUtils.java b/zhilian-common/zhilian-common-security/src/main/java/com/zhilian/common/security/utils/SecurityUtils.java index 976df2b..45300b6 100644 --- a/zhilian-common/zhilian-common-security/src/main/java/com/zhilian/common/security/utils/SecurityUtils.java +++ b/zhilian-common/zhilian-common-security/src/main/java/com/zhilian/common/security/utils/SecurityUtils.java @@ -3,9 +3,12 @@ package com.zhilian.common.security.utils; import com.zhilian.common.core.constant.SecurityConstants; import com.zhilian.common.core.constant.TokenConstants; import com.zhilian.common.core.context.SecurityContextHolder; +import com.zhilian.common.core.utils.JwtUtils; import com.zhilian.common.core.utils.ServletUtils; import com.zhilian.common.core.utils.StringUtils; import com.zhilian.common.system.domain.LoginUser; +import io.jsonwebtoken.Claims; +import org.springframework.http.server.reactive.ServerHttpRequest; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import javax.servlet.http.HttpServletRequest; @@ -30,6 +33,17 @@ public class SecurityUtils { return SecurityContextHolder.getUserName(); } + /** + * 获取公司标识 + */ + public static String formatToken (String token) { + // 如果前端设置了令牌前缀,则裁剪掉前缀 + if (StringUtils.isNotEmpty(token) && token.startsWith(TokenConstants.PREFIX)) { + token = token.replaceFirst(TokenConstants.PREFIX, StringUtils.EMPTY); + } + return token; + } + /** * 获取用户key */ diff --git a/zhilian-common/zhilian-common-system/src/main/java/com/zhilian/common/system/domain/LoginUser.java b/zhilian-common/zhilian-common-system/src/main/java/com/zhilian/common/system/domain/LoginUser.java index 583aee3..daaf301 100644 --- a/zhilian-common/zhilian-common-system/src/main/java/com/zhilian/common/system/domain/LoginUser.java +++ b/zhilian-common/zhilian-common-system/src/main/java/com/zhilian/common/system/domain/LoginUser.java @@ -27,6 +27,11 @@ public class LoginUser implements Serializable { */ private String username; + /** + * 企业标识 + */ + private String companySign; + /** * 登录时间 */ @@ -128,4 +133,12 @@ public class LoginUser implements Serializable { public void setSysUser (SysUser sysUser) { this.sysUser = sysUser; } + + public String getCompanySign() { + return companySign; + } + + public void setCompanySign(String companySign) { + this.companySign = companySign; + } } diff --git a/zhilian-common/zhilian-common-system/src/main/java/com/zhilian/common/system/domain/SysDept.java b/zhilian-common/zhilian-common-system/src/main/java/com/zhilian/common/system/domain/SysDept.java index 4517515..e448ad6 100644 --- a/zhilian-common/zhilian-common-system/src/main/java/com/zhilian/common/system/domain/SysDept.java +++ b/zhilian-common/zhilian-common-system/src/main/java/com/zhilian/common/system/domain/SysDept.java @@ -44,6 +44,12 @@ public class SysDept extends BaseEntity { */ private String ancestors; + /** + * 企业标识 + */ + + private String companySign; + /** * 部门名称 */ diff --git a/zhilian-common/zhilian-common-system/src/main/java/com/zhilian/common/system/domain/SysUser.java b/zhilian-common/zhilian-common-system/src/main/java/com/zhilian/common/system/domain/SysUser.java index 494fdd7..4f30bce 100644 --- a/zhilian-common/zhilian-common-system/src/main/java/com/zhilian/common/system/domain/SysUser.java +++ b/zhilian-common/zhilian-common-system/src/main/java/com/zhilian/common/system/domain/SysUser.java @@ -45,6 +45,11 @@ public class SysUser extends BaseEntity { @Excel(name = "部门编号", type = Type.IMPORT) private Long deptId; +// /** +// * 企业标识 +// */ +// private String companySign; + /** * 用户账号 */ diff --git a/zhilian-modules/zhilian-manager/pom.xml b/zhilian-modules/zhilian-manager/pom.xml index db757ab..1193a77 100644 --- a/zhilian-modules/zhilian-manager/pom.xml +++ b/zhilian-modules/zhilian-manager/pom.xml @@ -78,6 +78,8 @@ zhilian-common-swagger + + diff --git a/zhilian-modules/zhilian-system/pom.xml b/zhilian-modules/zhilian-system/pom.xml index f368787..51f82eb 100644 --- a/zhilian-modules/zhilian-system/pom.xml +++ b/zhilian-modules/zhilian-system/pom.xml @@ -78,6 +78,12 @@ zhilian-common-swagger + + + com.zhilian + zhilian-common-redis + + diff --git a/zhilian-modules/zhilian-system/src/main/java/com/zhilian/system/controller/SysDeptController.java b/zhilian-modules/zhilian-system/src/main/java/com/zhilian/system/controller/SysDeptController.java index 4421abe..3119503 100644 --- a/zhilian-modules/zhilian-system/src/main/java/com/zhilian/system/controller/SysDeptController.java +++ b/zhilian-modules/zhilian-system/src/main/java/com/zhilian/system/controller/SysDeptController.java @@ -1,20 +1,28 @@ package com.zhilian.system.controller; +import com.zhilian.common.core.constant.CacheConstants; +import com.zhilian.common.core.constant.TokenConstants; import com.zhilian.common.core.constant.UserConstants; +import com.zhilian.common.core.utils.JwtUtils; import com.zhilian.common.core.utils.StringUtils; import com.zhilian.common.core.web.controller.BaseController; import com.zhilian.common.core.domain.Result; import com.zhilian.common.log.annotation.Log; import com.zhilian.common.log.enums.BusinessType; +import com.zhilian.common.redis.service.RedisService; import com.zhilian.common.security.annotation.RequiresPermissions; import com.zhilian.common.security.utils.SecurityUtils; import com.zhilian.common.system.domain.SysDept; import com.zhilian.system.service.SysDeptService; +import io.jsonwebtoken.Claims; import org.apache.commons.lang3.ArrayUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServletRequest; import java.util.List; /** @@ -28,13 +36,17 @@ public class SysDeptController extends BaseController { @Autowired private SysDeptService deptService; + @Autowired + private RedisService redisService; /** * 获取部门列表 */ @RequiresPermissions("system:dept:list") @GetMapping("/list") - public Result list (SysDept dept) { + public Result list (SysDept dept, HttpServletRequest request) { + String companySign = getCompanySign(request); + dept.setCompanySign(companySign); List depts = deptService.selectDeptList(dept); return success(depts); } @@ -110,4 +122,17 @@ public class SysDeptController extends BaseController { deptService.checkDeptDataScope(deptId); return toAjax(deptService.deleteDeptById(deptId)); } + + + public String getCompanySign(HttpServletRequest request){ + Cookie[] cookies = request.getCookies(); + for (Cookie cookie : cookies) { + if ("companySign".equals(cookie.getName())){ + return cookie.getValue(); + } + } + throw new RuntimeException("公司标识无法获取"); + } + + } diff --git a/zhilian-modules/zhilian-system/src/main/java/com/zhilian/system/service/impl/SysDeptServiceImpl.java b/zhilian-modules/zhilian-system/src/main/java/com/zhilian/system/service/impl/SysDeptServiceImpl.java index fa53234..eebcfdd 100644 --- a/zhilian-modules/zhilian-system/src/main/java/com/zhilian/system/service/impl/SysDeptServiceImpl.java +++ b/zhilian-modules/zhilian-system/src/main/java/com/zhilian/system/service/impl/SysDeptServiceImpl.java @@ -205,12 +205,16 @@ public class SysDeptServiceImpl extends ServiceImpl impl */ @Override public int insertDept (SysDept dept) { - SysDept info = deptMapper.selectDeptById(dept.getParentId()); - // 如果父节点不为正常状态,则不允许新增子节点 - if (!UserConstants.DEPT_NORMAL.equals(info.getStatus())) { - throw new ServiceException("部门停用,不允许新增"); + dept.setAncestors("0"); + if (0 != dept.getParentId()){ + //不是父节点则需要检查其父节点是否正常 + SysDept info = deptMapper.selectDeptById(dept.getParentId()); + // 如果父节点不为正常状态,则不允许新增子节点 + if (!UserConstants.DEPT_NORMAL.equals(info.getStatus())) { + throw new ServiceException("部门停用,不允许新增"); + } + dept.setAncestors(info.getAncestors() + "," + dept.getParentId()); } - dept.setAncestors(info.getAncestors() + "," + dept.getParentId()); return deptMapper.insertDept(dept); } diff --git a/zhilian-modules/zhilian-system/src/main/resources/mapper/system/SysDeptMapper.xml b/zhilian-modules/zhilian-system/src/main/resources/mapper/system/SysDeptMapper.xml index ded3e33..a68d50e 100644 --- a/zhilian-modules/zhilian-system/src/main/resources/mapper/system/SysDeptMapper.xml +++ b/zhilian-modules/zhilian-system/src/main/resources/mapper/system/SysDeptMapper.xml @@ -8,6 +8,7 @@ + @@ -26,6 +27,7 @@ select d.dept_id, d.parent_id, d.ancestors, + d.company_sign, d.dept_name, d.order_num, d.leader, @@ -41,6 +43,13 @@ select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, u.status, - u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name, d.leader from sys_user + u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.company_sign ,d.dept_name, d.leader from sys_user u left join sys_dept d on u.dept_id = d.dept_id where u.del_flag = '0'