update system env

This commit is contained in:
lixiaodong 2023-07-12 22:58:04 +08:00
parent 1ad96b81e9
commit 0d17270b11
11 changed files with 67 additions and 34 deletions

View File

@ -8,6 +8,7 @@ import net.lab1024.sa.common.common.interceptor.AbstractInterceptor;
import net.lab1024.sa.common.common.util.SmartEnumUtil;
import net.lab1024.sa.common.handler.GlobalExceptionHandler;
import net.lab1024.sa.common.module.support.token.TokenService;
import org.apache.commons.lang3.math.NumberUtils;
import org.springframework.context.annotation.Configuration;
import javax.servlet.http.HttpServletRequest;
@ -22,6 +23,22 @@ import javax.servlet.http.HttpServletResponse;
@Configuration
public class AdminInterceptor extends AbstractInterceptor {
/**
* 开发环境 方便调试 默认 user id 1
* 可以根据id 查询实际用户数据
*
* @param token
*/
@Override
public RequestUser getDevRequestUser(String token) {
long userId = NumberUtils.toLong(token, 1L);
RequestUser requestUser = new RequestUser();
requestUser.setUserId(userId);
requestUser.setUserName("dev");
requestUser.setUserType(UserTypeEnum.ADMIN_EMPLOYEE);
return requestUser;
}
@Override
public RequestUser checkTokenAndGetUser() {
/**

View File

@ -3,7 +3,7 @@ package net.lab1024.sa.common.common.domain;
import lombok.AllArgsConstructor;
import lombok.Getter;
import net.lab1024.sa.common.common.enumeration.SystemEnvironmentEnum;
import net.lab1024.sa.common.common.enumeration.SystemEnvEnum;
/**
* 系统环境
@ -16,7 +16,7 @@ import net.lab1024.sa.common.common.enumeration.SystemEnvironmentEnum;
*/
@AllArgsConstructor
@Getter
public class SystemEnvironment {
public class SystemEnv {
/**
* 是否位生产环境
@ -31,5 +31,5 @@ public class SystemEnvironment {
/**
* 当前环境
*/
private SystemEnvironmentEnum currentEnvironment;
private SystemEnvEnum currentEnv;
}

View File

@ -15,7 +15,7 @@ import lombok.Getter;
*/
@AllArgsConstructor
@Getter
public enum SystemEnvironmentEnum implements BaseEnum {
public enum SystemEnvEnum implements BaseEnum {
/**
* dev
*/

View File

@ -8,8 +8,12 @@ import net.lab1024.sa.common.common.constant.RequestHeaderConst;
import net.lab1024.sa.common.common.constant.StringConst;
import net.lab1024.sa.common.common.domain.RequestUser;
import net.lab1024.sa.common.common.domain.ResponseDTO;
import net.lab1024.sa.common.common.domain.SystemEnv;
import net.lab1024.sa.common.common.enumeration.SystemEnvEnum;
import net.lab1024.sa.common.common.util.SmartRequestUtil;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpMethod;
import org.springframework.http.HttpStatus;
import org.springframework.util.CollectionUtils;
@ -23,6 +27,7 @@ import java.util.List;
/**
* 抽象拦截器
* 如果有额外的拦截处理 可以继承此类
*
* @Author 1024创新实验室: 罗伊
* @Date 2021-10-09 20:56:14
@ -32,6 +37,9 @@ import java.util.List;
*/
public abstract class AbstractInterceptor implements HandlerInterceptor {
@Autowired
private SystemEnv systemEnv;
/**
* Token获取用户信息
*
@ -39,6 +47,14 @@ public abstract class AbstractInterceptor implements HandlerInterceptor {
*/
public abstract RequestUser checkTokenAndGetUser();
/**
* 获取 dev 开发用户
*
* @param token
* @return
*/
public abstract RequestUser getDevRequestUser(String token);
/**
* 拦截路径
*
@ -89,24 +105,25 @@ public abstract class AbstractInterceptor implements HandlerInterceptor {
if (this.contain(this.getIgnoreUrlList(), target)) {
return true;
}
//不需要登录
NoNeedLogin noNeedLogin = ((HandlerMethod) handler).getMethodAnnotation(NoNeedLogin.class);
// 检查是否包含 token
String xRequestToken = request.getParameter(RequestHeaderConst.TOKEN);
String xHeaderToken = request.getHeader(RequestHeaderConst.TOKEN);
String xAccessToken = StringUtils.isNotBlank(xRequestToken) ? xRequestToken : xHeaderToken;
// 包含token 则获取用户信息 并保存
if (StringUtils.isNotBlank(xAccessToken)) {
RequestUser requestUser = this.checkTokenAndGetUser();
if (requestUser != null) {
// TODO listen 待处理有token 已失效的情况
RequestUser requestUser;
// 开发环境 token 处理 不需要的话 可以去掉
if (SystemEnvEnum.DEV == systemEnv.getCurrentEnv() && NumberUtils.isDigits(xAccessToken)) {
requestUser = this.getDevRequestUser(xAccessToken);
} else {
requestUser = this.checkTokenAndGetUser();
}
SmartRequestUtil.setUser(requestUser);
}
// 有token 无需登录
if (null != noNeedLogin) {
return true;
}
}
// 无token 无需登录
// 是否需要登录
NoNeedLogin noNeedLogin = ((HandlerMethod) handler).getMethodAnnotation(NoNeedLogin.class);
if (null != noNeedLogin) {
return true;
}

View File

@ -153,7 +153,7 @@ public class DataSourceConfig {
*
* @return
*/
@Conditional(SystemEnvironmentConfig.class)
@Conditional(SystemEnvConfig.class)
@Bean
public ServletRegistrationBean<StatViewServlet> druidServlet() {
ServletRegistrationBean<StatViewServlet> servletRegistrationBean = new ServletRegistrationBean<>();

View File

@ -57,7 +57,7 @@ import java.util.Map;
@Slf4j
@EnableSwagger2
@Configuration
@Conditional(SystemEnvironmentConfig.class)
@Conditional(SystemEnvConfig.class)
public class SwaggerConfig implements EnvironmentAware, BeanDefinitionRegistryPostProcessor {
/**

View File

@ -1,7 +1,7 @@
package net.lab1024.sa.common.config;
import net.lab1024.sa.common.common.domain.SystemEnvironment;
import net.lab1024.sa.common.common.enumeration.SystemEnvironmentEnum;
import net.lab1024.sa.common.common.domain.SystemEnv;
import net.lab1024.sa.common.common.enumeration.SystemEnvEnum;
import net.lab1024.sa.common.common.util.SmartEnumUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
@ -21,7 +21,7 @@ import org.springframework.core.type.AnnotatedTypeMetadata;
* @Copyright 1024创新实验室 https://1024lab.net
*/
@Configuration
public class SystemEnvironmentConfig implements Condition {
public class SystemEnvConfig implements Condition {
@Value("${spring.profiles.active}")
private String systemEnvironment;
@ -32,18 +32,18 @@ public class SystemEnvironmentConfig implements Condition {
@Override
public boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata) {
String property = conditionContext.getEnvironment().getProperty("spring.profiles.active");
return StringUtils.isNotBlank(property) && !SystemEnvironmentEnum.PROD.equalsValue(property);
return StringUtils.isNotBlank(property) && !SystemEnvEnum.PROD.equalsValue(property);
}
@Bean
public SystemEnvironment initEnvironment() {
SystemEnvironmentEnum currentEnvironment = SmartEnumUtil.getEnumByValue(systemEnvironment, SystemEnvironmentEnum.class);
if (currentEnvironment == null) {
public SystemEnv initEnvironment() {
SystemEnvEnum currentEnv = SmartEnumUtil.getEnumByValue(systemEnvironment, SystemEnvEnum.class);
if (currentEnv == null) {
throw new ExceptionInInitializerError("无法获取当前环境!请在 application.yaml 配置参数spring.profiles.active");
}
if (StringUtils.isBlank(projectName)) {
throw new ExceptionInInitializerError("无法获取当前项目名称!请在 application.yaml 配置参数project.name");
}
return new SystemEnvironment(currentEnvironment == SystemEnvironmentEnum.PROD, projectName, currentEnvironment);
return new SystemEnv(currentEnv == SystemEnvEnum.PROD, projectName, currentEnv);
}
}

View File

@ -5,7 +5,7 @@ import lombok.extern.slf4j.Slf4j;
import net.lab1024.sa.common.common.code.SystemErrorCode;
import net.lab1024.sa.common.common.code.UserErrorCode;
import net.lab1024.sa.common.common.domain.ResponseDTO;
import net.lab1024.sa.common.common.domain.SystemEnvironment;
import net.lab1024.sa.common.common.domain.SystemEnv;
import net.lab1024.sa.common.common.exception.BusinessException;
import org.springframework.beans.TypeMismatchException;
import org.springframework.beans.factory.annotation.Autowired;
@ -37,7 +37,7 @@ import java.util.stream.Collectors;
public class GlobalExceptionHandler {
@Autowired
private SystemEnvironment systemEnvironment;
private SystemEnv systemEnvironment;
/**
* json 格式错误 缺少请求体

View File

@ -2,10 +2,9 @@ package net.lab1024.sa.common.module.support.captcha;
import com.google.code.kaptcha.impl.DefaultKaptcha;
import lombok.extern.slf4j.Slf4j;
import net.lab1024.sa.common.common.code.UserErrorCode;
import net.lab1024.sa.common.common.constant.StringConst;
import net.lab1024.sa.common.common.domain.ResponseDTO;
import net.lab1024.sa.common.common.domain.SystemEnvironment;
import net.lab1024.sa.common.common.domain.SystemEnv;
import net.lab1024.sa.common.common.exception.BusinessException;
import net.lab1024.sa.common.constant.RedisKeyConst;
import net.lab1024.sa.common.module.support.captcha.domain.CaptchaForm;
@ -43,7 +42,7 @@ public class CaptchaService {
@Autowired
private DefaultKaptcha defaultKaptcha;
@Autowired
private SystemEnvironment systemEnvironment;
private SystemEnv systemEnvironment;
@Autowired
private RedisService redisService;

View File

@ -1,8 +1,8 @@
package net.lab1024.sa.common.module.support.redis;
import com.alibaba.fastjson.JSON;
import net.lab1024.sa.common.common.domain.SystemEnvironment;
import net.lab1024.sa.common.common.enumeration.SystemEnvironmentEnum;
import net.lab1024.sa.common.common.domain.SystemEnv;
import net.lab1024.sa.common.common.enumeration.SystemEnvEnum;
import net.lab1024.sa.common.common.util.SmartStringUtil;
import net.lab1024.sa.common.constant.RedisKeyConst;
import org.slf4j.Logger;
@ -52,7 +52,7 @@ public class RedisService {
private SetOperations<String, Object> redisSetOperations;
@Autowired
private SystemEnvironment systemEnvironment;
private SystemEnv systemEnvironment;
/**
@ -62,7 +62,7 @@ public class RedisService {
* @return
*/
public String generateRedisKey(String prefix, String key) {
SystemEnvironmentEnum currentEnvironment = systemEnvironment.getCurrentEnvironment();
SystemEnvEnum currentEnvironment = systemEnvironment.getCurrentEnv();
return systemEnvironment.getProjectName() + RedisKeyConst.SEPARATOR + currentEnvironment.getValue() + RedisKeyConst.SEPARATOR + prefix + key;
}

View File

@ -46,7 +46,7 @@ public class TokenService {
SaLoginModel loginModel = new SaLoginModel();
// 此次登录的客户端设备类型, 用于[同端互斥登录]时指定此次登录的设备类型
loginModel.setDevice(String.valueOf(loginDeviceEnum.getDesc()));
// 扩展参数
// 扩展参数 只在 jwt 模式下 有效
loginModel.setExtra(EXTRA_KEY_USER_NAME, userName);
loginModel.setExtra(EXTRA_KEY_USER_TYPE, userTypeEnum.getValue());