feat commit

企业入驻功能
pull/2/head
玉安君 2024-03-27 22:33:15 +08:00
parent 979074fc11
commit a78b4f3fc1
14 changed files with 113 additions and 7 deletions

View File

@ -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";
/**
*
*/

View File

@ -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);
}

View File

@ -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)) {

View File

@ -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<String, Object> rspMap = new HashMap<String, Object>();

View File

@ -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
*/

View File

@ -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;
}
}

View File

@ -44,6 +44,12 @@ public class SysDept extends BaseEntity {
*/
private String ancestors;
/**
*
*/
private String companySign;
/**
*
*/

View File

@ -45,6 +45,11 @@ public class SysUser extends BaseEntity {
@Excel(name = "部门编号", type = Type.IMPORT)
private Long deptId;
// /**
// * 企业标识
// */
// private String companySign;
/**
*
*/

View File

@ -78,6 +78,8 @@
<artifactId>zhilian-common-swagger</artifactId>
</dependency>
</dependencies>
<build>

View File

@ -78,6 +78,12 @@
<artifactId>zhilian-common-swagger</artifactId>
</dependency>
<dependency>
<groupId>com.zhilian</groupId>
<artifactId>zhilian-common-redis</artifactId>
</dependency>
</dependencies>
<build>

View File

@ -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<SysDept> 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("公司标识无法获取");
}
}

View File

@ -205,12 +205,16 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
*/
@Override
public int insertDept (SysDept dept) {
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());
}
return deptMapper.insertDept(dept);
}

View File

@ -8,6 +8,7 @@
<id property="deptId" column="dept_id"/>
<result property="parentId" column="parent_id"/>
<result property="ancestors" column="ancestors"/>
<result property="companySign" column="company_sign"/>
<result property="deptName" column="dept_name"/>
<result property="orderNum" column="order_num"/>
<result property="leader" column="leader"/>
@ -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 id="selectDeptList" parameterType="com.zhilian.common.system.domain.SysDept" resultMap="SysDeptResult">
<include refid="selectDeptVo"/>
where d.del_flag = '0'
<choose>
<when test="'ZL' == companySign">
</when>
<otherwise>
and d.company_sign = #{companySign,jdbcType=VARCHAR}
</otherwise>
</choose>
<if test="deptId != null and deptId != 0">
AND dept_id = #{deptId}
</if>
@ -114,6 +123,7 @@
<if test="deptId != null and deptId != 0">dept_id,</if>
<if test="parentId != null and parentId != 0">parent_id,</if>
<if test="deptName != null and deptName != ''">dept_name,</if>
<if test="companySign != null and companySign != ''">company_sign,</if>
<if test="ancestors != null and ancestors != ''">ancestors,</if>
<if test="orderNum != null">order_num,</if>
<if test="leader != null and leader != ''">leader,</if>
@ -126,6 +136,7 @@
<if test="deptId != null and deptId != 0">#{deptId},</if>
<if test="parentId != null and parentId != 0">#{parentId},</if>
<if test="deptName != null and deptName != ''">#{deptName},</if>
<if test="companySign != null and companySign != ''">#{companySign},</if>
<if test="ancestors != null and ancestors != ''">#{ancestors},</if>
<if test="orderNum != null">#{orderNum},</if>
<if test="leader != null and leader != ''">#{leader},</if>

View File

@ -30,6 +30,7 @@
<resultMap id="deptResult" type="com.zhilian.common.system.domain.SysDept">
<id property="deptId" column="dept_id"/>
<result property="parentId" column="parent_id"/>
<result property="companySign" column="company_sign"/>
<result property="deptName" column="dept_name"/>
<result property="ancestors" column="ancestors"/>
<result property="orderNum" column="order_num"/>
@ -65,6 +66,7 @@
u.remark,
d.dept_id,
d.parent_id,
d.company_sign,
d.ancestors,
d.dept_name,
d.order_num,
@ -84,7 +86,7 @@
<select id="selectUserList" parameterType="com.zhilian.common.system.domain.SysUser" resultMap="SysUserResult">
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'