refactor(framework): 优化代码结构和性能
This commit is contained in:
+1
@@ -51,6 +51,7 @@ public class KitSpringBeanHolder implements ApplicationContextAware, DisposableB
|
||||
/**
|
||||
* 从静态变量applicationContext中取得Bean, 自动转型为所赋值对象的类型.
|
||||
*/
|
||||
@SuppressWarnings("all")
|
||||
public static <T> T getBean(String name) {
|
||||
assertContextInjected();
|
||||
return (T) applicationContext.getBean(name);
|
||||
|
||||
+4
-6
@@ -261,13 +261,11 @@ public class KitRedisHelper {
|
||||
return null;
|
||||
}
|
||||
// 如果 value 不是目标类型, 则尝试将其反序列化为 clazz 类型
|
||||
if (!clazz.isInstance(value)) {
|
||||
return JSON.parseObject(value.toString(), clazz);
|
||||
} else if (clazz.isInstance(value)) {
|
||||
boolean isInstance = clazz.isInstance(value);
|
||||
if (isInstance) {
|
||||
return clazz.cast(value);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
return JSON.parseObject(value.toString(), clazz);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -631,7 +629,7 @@ public class KitRedisHelper {
|
||||
public long setRemove(String key, Object... values) {
|
||||
try {
|
||||
Long count = redisTemplate.opsForSet().remove(key, values);
|
||||
return count;
|
||||
return count == null ? 0 : count;
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage(), e);
|
||||
return 0;
|
||||
|
||||
+10
-5
@@ -87,6 +87,15 @@ public class ConfigurerAdapter implements WebMvcConfigurer {
|
||||
FastJsonHttpMessageConverter fastJsonConverter = new FastJsonHttpMessageConverter();
|
||||
List<MediaType> supportMediaTypeList = new ArrayList<>();
|
||||
supportMediaTypeList.add(MediaType.APPLICATION_JSON);
|
||||
FastJsonConfig config = this.getFastJsonConfig();
|
||||
fastJsonConverter.setFastJsonConfig(config);
|
||||
fastJsonConverter.setSupportedMediaTypes(supportMediaTypeList);
|
||||
fastJsonConverter.setDefaultCharset(StandardCharsets.UTF_8);
|
||||
// 将 FastJsonHttpMessageConverter 添加到列表末尾
|
||||
converters.add(fastJsonConverter);
|
||||
}
|
||||
|
||||
private FastJsonConfig getFastJsonConfig() {
|
||||
FastJsonConfig config = new FastJsonConfig();
|
||||
config.setDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
// 开启引用检测, 枚举支持
|
||||
@@ -104,11 +113,7 @@ public class ConfigurerAdapter implements WebMvcConfigurer {
|
||||
// config.setWriterFeatures(JSONWriter.Feature.WriteLongAsString);
|
||||
config.setWriterFeatures(JSONWriter.Feature.WriteEnumUsingToString);
|
||||
config.setWriterFeatures(JSONWriter.Feature.ReferenceDetection);
|
||||
fastJsonConverter.setFastJsonConfig(config);
|
||||
fastJsonConverter.setSupportedMediaTypes(supportMediaTypeList);
|
||||
fastJsonConverter.setDefaultCharset(StandardCharsets.UTF_8);
|
||||
// 将 FastJsonHttpMessageConverter 添加到列表末尾
|
||||
converters.add(fastJsonConverter);
|
||||
return config;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+1
-1
@@ -42,7 +42,7 @@ public class BizLockAspect {
|
||||
@Around("@annotation(bizLock)")
|
||||
public Object around(ProceedingJoinPoint joinPoint, BizLock bizLock) throws Throwable {
|
||||
// 解析SpEL表达式生成最终的lockKey
|
||||
String lockKey = parseLockKey(joinPoint, bizLock);
|
||||
String lockKey = this.parseLockKey(joinPoint, bizLock);
|
||||
boolean success = redisHelper.setIfAbsent(lockKey, lockKey, bizLock.leaseTime(), bizLock.timeUnit());
|
||||
if (!success) {
|
||||
throw new BadRequestException(bizLock.errorMessage());
|
||||
|
||||
+2
-10
@@ -32,11 +32,7 @@ public class MpMetaObjectHandler implements MetaObjectHandler {
|
||||
this.strictInsertFill(metaObject, "createTime", Date.class, now);
|
||||
this.strictInsertFill(metaObject, "updateTime", Date.class, now);
|
||||
/* 操作人 */
|
||||
String username = "System";
|
||||
try {
|
||||
username = KitSecurityHelper.getCurrentUsername();
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
String username = KitSecurityHelper.safeGetUsername();
|
||||
this.strictInsertFill(metaObject, "createBy", String.class, username);
|
||||
this.strictInsertFill(metaObject, "updateBy", String.class, username);
|
||||
}
|
||||
@@ -46,11 +42,7 @@ public class MpMetaObjectHandler implements MetaObjectHandler {
|
||||
/* 更新时间 */
|
||||
this.strictUpdateFill(metaObject, "updateTime", Date.class, DateTime.now());
|
||||
/* 操作人 */
|
||||
String username = "System";
|
||||
try {
|
||||
username = KitSecurityHelper.getCurrentUsername();
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
String username = KitSecurityHelper.safeGetUsername();
|
||||
this.strictUpdateFill(metaObject, "updateBy", String.class, username);
|
||||
}
|
||||
}
|
||||
|
||||
+15
@@ -26,8 +26,10 @@ import com.alibaba.fastjson2.JSON;
|
||||
import com.alibaba.fastjson2.JSONArray;
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.security.core.userdetails.UserDetails;
|
||||
import org.springframework.security.core.userdetails.UserDetailsService;
|
||||
@@ -106,6 +108,19 @@ public class KitSecurityHelper {
|
||||
return getCurrentUsername(getToken());
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取系统用户名称
|
||||
*
|
||||
* @return 系统用户名称
|
||||
*/
|
||||
public static String safeGetUsername() {
|
||||
try {
|
||||
return getCurrentUsername(getToken());
|
||||
} catch (Exception e) {
|
||||
return "anonymous";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取系统用户名称
|
||||
*
|
||||
|
||||
+1
-1
@@ -51,7 +51,7 @@ public class TokenFilter extends GenericFilterBean {
|
||||
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
|
||||
throws ServletException, IOException {
|
||||
HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
|
||||
String token = resolveToken(httpServletRequest);
|
||||
String token = this.resolveToken(httpServletRequest);
|
||||
// 对于 Token 为空的不需要去查 Redis
|
||||
if (StrUtil.isNotBlank(token)) {
|
||||
// 获取用户Token的Key
|
||||
|
||||
+5
-5
@@ -105,8 +105,8 @@ public class TokenProvider implements InitializingBean {
|
||||
* @param token /
|
||||
* @return /
|
||||
*/
|
||||
Authentication getAuthentication(String token) {
|
||||
Claims claims = getClaims(token);
|
||||
protected Authentication getAuthentication(String token) {
|
||||
Claims claims = this.getClaims(token);
|
||||
User principal = new User(claims.getSubject(), "******", new ArrayList<>());
|
||||
return new UsernamePasswordAuthenticationToken(principal, token, new ArrayList<>());
|
||||
}
|
||||
@@ -123,7 +123,7 @@ public class TokenProvider implements InitializingBean {
|
||||
*/
|
||||
public void checkRenewal(String token) {
|
||||
// 判断是否续期token,计算token的过期时间
|
||||
String loginKey = loginKey(token);
|
||||
String loginKey = this.loginKey(token);
|
||||
long time = redisHelper.getExpire(loginKey) * 1000;
|
||||
Date expireDate = DateUtil.offset(new Date(), DateField.MILLISECOND, (int) time);
|
||||
// 判断当前时间与过期时间的时间差
|
||||
@@ -150,7 +150,7 @@ public class TokenProvider implements InitializingBean {
|
||||
* @return key
|
||||
*/
|
||||
public String loginKey(String token) {
|
||||
Claims claims = getClaims(token);
|
||||
Claims claims = this.getClaims(token);
|
||||
return SystemCacheKey.ONLINE_USER + claims.getSubject() + ":" + getId(token);
|
||||
}
|
||||
|
||||
@@ -161,7 +161,7 @@ public class TokenProvider implements InitializingBean {
|
||||
* @return /
|
||||
*/
|
||||
public String getId(String token) {
|
||||
Claims claims = getClaims(token);
|
||||
Claims claims = this.getClaims(token);
|
||||
return claims.get(AUTHORITIES_UUID_KEY, String.class);
|
||||
}
|
||||
}
|
||||
|
||||
+9
-5
@@ -87,7 +87,8 @@ public class QuartzManage {
|
||||
*/
|
||||
public void updateJobCron(SystemQuartzJobTb quartzJob) {
|
||||
try {
|
||||
TriggerKey triggerKey = TriggerKey.triggerKey(JOB_NAME + quartzJob.getId());
|
||||
String uuid = JOB_NAME + quartzJob.getId();
|
||||
TriggerKey triggerKey = TriggerKey.triggerKey(uuid);
|
||||
CronTrigger trigger = (CronTrigger) scheduler.getTrigger(triggerKey);
|
||||
// 如果不存在则创建一个定时任务
|
||||
if (trigger == null) {
|
||||
@@ -117,7 +118,8 @@ public class QuartzManage {
|
||||
*/
|
||||
public void deleteJob(SystemQuartzJobTb quartzJob) {
|
||||
try {
|
||||
JobKey jobKey = JobKey.jobKey(JOB_NAME + quartzJob.getId());
|
||||
String uuid = JOB_NAME + quartzJob.getId();
|
||||
JobKey jobKey = JobKey.jobKey(uuid);
|
||||
scheduler.pauseJob(jobKey);
|
||||
scheduler.deleteJob(jobKey);
|
||||
} catch (Exception e) {
|
||||
@@ -133,13 +135,14 @@ public class QuartzManage {
|
||||
*/
|
||||
public void resumeJob(SystemQuartzJobTb quartzJob) {
|
||||
try {
|
||||
TriggerKey triggerKey = TriggerKey.triggerKey(JOB_NAME + quartzJob.getId());
|
||||
String uuid = JOB_NAME + quartzJob.getId();
|
||||
TriggerKey triggerKey = TriggerKey.triggerKey(uuid);
|
||||
CronTrigger trigger = (CronTrigger) scheduler.getTrigger(triggerKey);
|
||||
// 如果不存在则创建一个定时任务
|
||||
if (trigger == null) {
|
||||
addJob(quartzJob);
|
||||
}
|
||||
JobKey jobKey = JobKey.jobKey(JOB_NAME + quartzJob.getId());
|
||||
JobKey jobKey = JobKey.jobKey(uuid);
|
||||
scheduler.resumeJob(jobKey);
|
||||
} catch (Exception e) {
|
||||
log.error("恢复定时任务失败", e);
|
||||
@@ -178,7 +181,8 @@ public class QuartzManage {
|
||||
*/
|
||||
public void pauseJob(SystemQuartzJobTb quartzJob) {
|
||||
try {
|
||||
JobKey jobKey = JobKey.jobKey(JOB_NAME + quartzJob.getId());
|
||||
String uuid = JOB_NAME + quartzJob.getId();
|
||||
JobKey jobKey = JobKey.jobKey(uuid);
|
||||
scheduler.pauseJob(jobKey);
|
||||
} catch (Exception e) {
|
||||
log.error("定时任务暂停失败", e);
|
||||
|
||||
+1
-1
@@ -573,7 +573,7 @@ public class SystemMenuService {
|
||||
menuSet.add(menu);
|
||||
List<SystemMenuTb> menus = this.listMenuByPid(menu.getId(), true);
|
||||
if (CollUtil.isNotEmpty(menus)) {
|
||||
queryChildMenuByArgs(menus, menuSet);
|
||||
this.queryChildMenuByArgs(menus, menuSet);
|
||||
}
|
||||
}
|
||||
return menuSet;
|
||||
|
||||
+10
-3
@@ -37,6 +37,7 @@ import cn.odboy.util.KitValidUtil;
|
||||
import cn.odboy.util.xlsx.KitExcelExporter;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.quartz.CronExpression;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -237,6 +238,14 @@ public class SystemQuartzJobService {
|
||||
List<SystemQuartzJobTb> systemQuartzJobTbs = this.queryQuartzJobByArgs(args);
|
||||
List<SystemQuartzJobExportRowVo> rowVos = new ArrayList<>();
|
||||
for (SystemQuartzJobTb dataObject : systemQuartzJobTbs) {
|
||||
SystemQuartzJobExportRowVo rowVo = this.getExportRowVo(dataObject);
|
||||
rowVos.add(rowVo);
|
||||
}
|
||||
KitExcelExporter.exportSimple(response, "定时任务数据", SystemQuartzJobExportRowVo.class, rowVos);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private SystemQuartzJobExportRowVo getExportRowVo(SystemQuartzJobTb dataObject) {
|
||||
SystemQuartzJobExportRowVo rowVo = new SystemQuartzJobExportRowVo();
|
||||
rowVo.setJobName(dataObject.getJobName());
|
||||
rowVo.setBeanName(dataObject.getBeanName());
|
||||
@@ -246,9 +255,7 @@ public class SystemQuartzJobService {
|
||||
rowVo.setIsPause(dataObject.getIsPause() ? "暂停中" : "运行中");
|
||||
rowVo.setDescription(dataObject.getDescription());
|
||||
rowVo.setCreateTime(dataObject.getCreateTime());
|
||||
rowVos.add(rowVo);
|
||||
}
|
||||
KitExcelExporter.exportSimple(response, "定时任务数据", SystemQuartzJobExportRowVo.class, rowVos);
|
||||
return rowVo;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+1
@@ -51,6 +51,7 @@ public class KitSpringBeanHolder implements ApplicationContextAware, DisposableB
|
||||
/**
|
||||
* 从静态变量applicationContext中取得Bean, 自动转型为所赋值对象的类型.
|
||||
*/
|
||||
@SuppressWarnings("all")
|
||||
public static <T> T getBean(String name) {
|
||||
assertContextInjected();
|
||||
return (T) applicationContext.getBean(name);
|
||||
|
||||
@@ -86,6 +86,7 @@ public class SwaggerConfig {
|
||||
mappings.addAll(filteredMappings);
|
||||
}
|
||||
|
||||
@SuppressWarnings("all")
|
||||
private List<RequestMappingInfoHandlerMapping> getHandlerMappings(Object bean) {
|
||||
Field field = ReflectionUtils.findField(bean.getClass(), "handlerMappings");
|
||||
if (field != null) {
|
||||
|
||||
+12
-10
@@ -20,6 +20,7 @@ import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Sets;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
@@ -29,6 +30,7 @@ import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.data.redis.connection.RedisConnection;
|
||||
@@ -207,16 +209,18 @@ public class KitRedisHelper {
|
||||
*
|
||||
* @param pattern /
|
||||
*/
|
||||
@SuppressWarnings("all")
|
||||
public void scanDel(String pattern) {
|
||||
ScanOptions options = ScanOptions.scanOptions().match(pattern).count(100).build();
|
||||
try (Cursor<byte[]> cursor = redisTemplate.executeWithStickyConnection(connection -> {
|
||||
try (
|
||||
Cursor<byte[]> cursor = redisTemplate.executeWithStickyConnection(connection -> {
|
||||
try {
|
||||
return (Cursor<byte[]>) new ConvertingCursor<>(
|
||||
connection.scan(options), redisTemplate.getKeySerializer()::deserialize);
|
||||
return (Cursor<byte[]>) new ConvertingCursor<>(connection.scan(options), redisTemplate.getKeySerializer()::deserialize);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("Redis scan operation failed", e);
|
||||
}
|
||||
})) {
|
||||
})
|
||||
) {
|
||||
List<Object> keysToDelete = new ArrayList<>();
|
||||
while (cursor.hasNext()) {
|
||||
Object key = cursor.next();
|
||||
@@ -259,13 +263,11 @@ public class KitRedisHelper {
|
||||
return null;
|
||||
}
|
||||
// 如果 value 不是目标类型, 则尝试将其反序列化为 clazz 类型
|
||||
if (!clazz.isInstance(value)) {
|
||||
return JSON.parseObject(value.toString(), clazz);
|
||||
} else if (clazz.isInstance(value)) {
|
||||
boolean isInstance = clazz.isInstance(value);
|
||||
if (isInstance) {
|
||||
return clazz.cast(value);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
return JSON.parseObject(value.toString(), clazz);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -629,7 +631,7 @@ public class KitRedisHelper {
|
||||
public long setRemove(String key, Object... values) {
|
||||
try {
|
||||
Long count = redisTemplate.opsForSet().remove(key, values);
|
||||
return count;
|
||||
return count == null ? 0 : count;
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage(), e);
|
||||
return 0;
|
||||
|
||||
+10
-5
@@ -86,6 +86,15 @@ public class ConfigurerAdapter implements WebMvcConfigurer {
|
||||
FastJsonHttpMessageConverter fastJsonConverter = new FastJsonHttpMessageConverter();
|
||||
List<MediaType> supportMediaTypeList = new ArrayList<>();
|
||||
supportMediaTypeList.add(MediaType.APPLICATION_JSON);
|
||||
FastJsonConfig config = this.getFastJsonConfig();
|
||||
fastJsonConverter.setFastJsonConfig(config);
|
||||
fastJsonConverter.setSupportedMediaTypes(supportMediaTypeList);
|
||||
fastJsonConverter.setDefaultCharset(StandardCharsets.UTF_8);
|
||||
// 将 FastJsonHttpMessageConverter 添加到列表末尾
|
||||
converters.add(fastJsonConverter);
|
||||
}
|
||||
|
||||
private FastJsonConfig getFastJsonConfig() {
|
||||
FastJsonConfig config = new FastJsonConfig();
|
||||
config.setDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
// 开启引用检测, 枚举支持
|
||||
@@ -103,11 +112,7 @@ public class ConfigurerAdapter implements WebMvcConfigurer {
|
||||
// config.setWriterFeatures(JSONWriter.Feature.WriteLongAsString);
|
||||
config.setWriterFeatures(JSONWriter.Feature.WriteEnumUsingToString);
|
||||
config.setWriterFeatures(JSONWriter.Feature.ReferenceDetection);
|
||||
fastJsonConverter.setFastJsonConfig(config);
|
||||
fastJsonConverter.setSupportedMediaTypes(supportMediaTypeList);
|
||||
fastJsonConverter.setDefaultCharset(StandardCharsets.UTF_8);
|
||||
// 将 FastJsonHttpMessageConverter 添加到列表末尾
|
||||
converters.add(fastJsonConverter);
|
||||
return config;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+1
-1
@@ -42,7 +42,7 @@ public class BizLockAspect {
|
||||
@Around("@annotation(bizLock)")
|
||||
public Object around(ProceedingJoinPoint joinPoint, BizLock bizLock) throws Throwable {
|
||||
// 解析SpEL表达式生成最终的lockKey
|
||||
String lockKey = parseLockKey(joinPoint, bizLock);
|
||||
String lockKey = this.parseLockKey(joinPoint, bizLock);
|
||||
boolean success = redisHelper.setIfAbsent(lockKey, lockKey, bizLock.leaseTime(), bizLock.timeUnit());
|
||||
if (!success) {
|
||||
throw new BadRequestException(bizLock.errorMessage());
|
||||
|
||||
+2
-10
@@ -32,11 +32,7 @@ public class MpMetaObjectHandler implements MetaObjectHandler {
|
||||
this.strictInsertFill(metaObject, "createTime", Date.class, now);
|
||||
this.strictInsertFill(metaObject, "updateTime", Date.class, now);
|
||||
/* 操作人 */
|
||||
String username = "System";
|
||||
try {
|
||||
username = KitSecurityHelper.getCurrentUsername();
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
String username = KitSecurityHelper.safeGetUsername();
|
||||
this.strictInsertFill(metaObject, "createBy", String.class, username);
|
||||
this.strictInsertFill(metaObject, "updateBy", String.class, username);
|
||||
}
|
||||
@@ -46,11 +42,7 @@ public class MpMetaObjectHandler implements MetaObjectHandler {
|
||||
/* 更新时间 */
|
||||
this.strictUpdateFill(metaObject, "updateTime", Date.class, DateTime.now());
|
||||
/* 操作人 */
|
||||
String username = "System";
|
||||
try {
|
||||
username = KitSecurityHelper.getCurrentUsername();
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
String username = KitSecurityHelper.safeGetUsername();
|
||||
this.strictUpdateFill(metaObject, "updateBy", String.class, username);
|
||||
}
|
||||
}
|
||||
|
||||
+15
@@ -24,9 +24,11 @@ import cn.odboy.system.constant.SystemDataScopeEnum;
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.alibaba.fastjson2.JSONArray;
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.security.core.userdetails.UserDetails;
|
||||
import org.springframework.security.core.userdetails.UserDetailsService;
|
||||
@@ -105,6 +107,19 @@ public class KitSecurityHelper {
|
||||
return getCurrentUsername(getToken());
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取系统用户名称
|
||||
*
|
||||
* @return 系统用户名称
|
||||
*/
|
||||
public static String safeGetUsername() {
|
||||
try {
|
||||
return getCurrentUsername(getToken());
|
||||
} catch (Exception e) {
|
||||
return "anonymous";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取系统用户名称
|
||||
*
|
||||
|
||||
+1
-1
@@ -50,7 +50,7 @@ public class TokenFilter extends GenericFilterBean {
|
||||
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
|
||||
throws ServletException, IOException {
|
||||
HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
|
||||
String token = resolveToken(httpServletRequest);
|
||||
String token = this.resolveToken(httpServletRequest);
|
||||
// 对于 Token 为空的不需要去查 Redis
|
||||
if (StrUtil.isNotBlank(token)) {
|
||||
// 获取用户Token的Key
|
||||
|
||||
+5
-5
@@ -104,8 +104,8 @@ public class TokenProvider implements InitializingBean {
|
||||
* @param token /
|
||||
* @return /
|
||||
*/
|
||||
Authentication getAuthentication(String token) {
|
||||
Claims claims = getClaims(token);
|
||||
protected Authentication getAuthentication(String token) {
|
||||
Claims claims = this.getClaims(token);
|
||||
User principal = new User(claims.getSubject(), "******", new ArrayList<>());
|
||||
return new UsernamePasswordAuthenticationToken(principal, token, new ArrayList<>());
|
||||
}
|
||||
@@ -122,7 +122,7 @@ public class TokenProvider implements InitializingBean {
|
||||
*/
|
||||
public void checkRenewal(String token) {
|
||||
// 判断是否续期token,计算token的过期时间
|
||||
String loginKey = loginKey(token);
|
||||
String loginKey = this.loginKey(token);
|
||||
long time = redisHelper.getExpire(loginKey) * 1000;
|
||||
Date expireDate = DateUtil.offset(new Date(), DateField.MILLISECOND, (int) time);
|
||||
// 判断当前时间与过期时间的时间差
|
||||
@@ -149,7 +149,7 @@ public class TokenProvider implements InitializingBean {
|
||||
* @return key
|
||||
*/
|
||||
public String loginKey(String token) {
|
||||
Claims claims = getClaims(token);
|
||||
Claims claims = this.getClaims(token);
|
||||
return SystemCacheKey.ONLINE_USER + claims.getSubject() + ":" + getId(token);
|
||||
}
|
||||
|
||||
@@ -160,7 +160,7 @@ public class TokenProvider implements InitializingBean {
|
||||
* @return /
|
||||
*/
|
||||
public String getId(String token) {
|
||||
Claims claims = getClaims(token);
|
||||
Claims claims = this.getClaims(token);
|
||||
return claims.get(AUTHORITIES_UUID_KEY, String.class);
|
||||
}
|
||||
}
|
||||
|
||||
+9
-5
@@ -88,7 +88,8 @@ public class QuartzManage {
|
||||
*/
|
||||
public void updateJobCron(SystemQuartzJobTb quartzJob) {
|
||||
try {
|
||||
TriggerKey triggerKey = TriggerKey.triggerKey(JOB_NAME + quartzJob.getId());
|
||||
String uuid = JOB_NAME + quartzJob.getId();
|
||||
TriggerKey triggerKey = TriggerKey.triggerKey(uuid);
|
||||
CronTrigger trigger = (CronTrigger) scheduler.getTrigger(triggerKey);
|
||||
// 如果不存在则创建一个定时任务
|
||||
if (trigger == null) {
|
||||
@@ -118,7 +119,8 @@ public class QuartzManage {
|
||||
*/
|
||||
public void deleteJob(SystemQuartzJobTb quartzJob) {
|
||||
try {
|
||||
JobKey jobKey = JobKey.jobKey(JOB_NAME + quartzJob.getId());
|
||||
String uuid = JOB_NAME + quartzJob.getId();
|
||||
JobKey jobKey = JobKey.jobKey(uuid);
|
||||
scheduler.pauseJob(jobKey);
|
||||
scheduler.deleteJob(jobKey);
|
||||
} catch (Exception e) {
|
||||
@@ -134,13 +136,14 @@ public class QuartzManage {
|
||||
*/
|
||||
public void resumeJob(SystemQuartzJobTb quartzJob) {
|
||||
try {
|
||||
TriggerKey triggerKey = TriggerKey.triggerKey(JOB_NAME + quartzJob.getId());
|
||||
String uuid = JOB_NAME + quartzJob.getId();
|
||||
TriggerKey triggerKey = TriggerKey.triggerKey(uuid);
|
||||
CronTrigger trigger = (CronTrigger) scheduler.getTrigger(triggerKey);
|
||||
// 如果不存在则创建一个定时任务
|
||||
if (trigger == null) {
|
||||
addJob(quartzJob);
|
||||
}
|
||||
JobKey jobKey = JobKey.jobKey(JOB_NAME + quartzJob.getId());
|
||||
JobKey jobKey = JobKey.jobKey(uuid);
|
||||
scheduler.resumeJob(jobKey);
|
||||
} catch (Exception e) {
|
||||
log.error("恢复定时任务失败", e);
|
||||
@@ -179,7 +182,8 @@ public class QuartzManage {
|
||||
*/
|
||||
public void pauseJob(SystemQuartzJobTb quartzJob) {
|
||||
try {
|
||||
JobKey jobKey = JobKey.jobKey(JOB_NAME + quartzJob.getId());
|
||||
String uuid = JOB_NAME + quartzJob.getId();
|
||||
JobKey jobKey = JobKey.jobKey(uuid);
|
||||
scheduler.pauseJob(jobKey);
|
||||
} catch (Exception e) {
|
||||
log.error("定时任务暂停失败", e);
|
||||
|
||||
+1
-1
@@ -573,7 +573,7 @@ public class SystemMenuService {
|
||||
menuSet.add(menu);
|
||||
List<SystemMenuTb> menus = this.listMenuByPid(menu.getId(), true);
|
||||
if (CollUtil.isNotEmpty(menus)) {
|
||||
queryChildMenuByArgs(menus, menuSet);
|
||||
this.queryChildMenuByArgs(menus, menuSet);
|
||||
}
|
||||
}
|
||||
return menuSet;
|
||||
|
||||
+11
-3
@@ -42,6 +42,8 @@ import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.quartz.CronExpression;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -237,6 +239,14 @@ public class SystemQuartzJobService {
|
||||
List<SystemQuartzJobTb> systemQuartzJobTbs = this.queryQuartzJobByArgs(args);
|
||||
List<SystemQuartzJobExportRowVo> rowVos = new ArrayList<>();
|
||||
for (SystemQuartzJobTb dataObject : systemQuartzJobTbs) {
|
||||
SystemQuartzJobExportRowVo rowVo = this.getExportRowVo(dataObject);
|
||||
rowVos.add(rowVo);
|
||||
}
|
||||
KitExcelExporter.exportSimple(response, "定时任务数据", SystemQuartzJobExportRowVo.class, rowVos);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private SystemQuartzJobExportRowVo getExportRowVo(SystemQuartzJobTb dataObject) {
|
||||
SystemQuartzJobExportRowVo rowVo = new SystemQuartzJobExportRowVo();
|
||||
rowVo.setJobName(dataObject.getJobName());
|
||||
rowVo.setBeanName(dataObject.getBeanName());
|
||||
@@ -246,9 +256,7 @@ public class SystemQuartzJobService {
|
||||
rowVo.setIsPause(dataObject.getIsPause() ? "暂停中" : "运行中");
|
||||
rowVo.setDescription(dataObject.getDescription());
|
||||
rowVo.setCreateTime(dataObject.getCreateTime());
|
||||
rowVos.add(rowVo);
|
||||
}
|
||||
KitExcelExporter.exportSimple(response, "定时任务数据", SystemQuartzJobExportRowVo.class, rowVos);
|
||||
return rowVo;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+9
-17
@@ -39,9 +39,11 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@@ -56,8 +58,7 @@ import org.springframework.web.multipart.MultipartFile;
|
||||
* @since 2025-07-15
|
||||
*/
|
||||
@Service
|
||||
public class SystemMinioStorageServiceImpl extends ServiceImpl<SystemOssStorageMapper, SystemOssStorageTb>
|
||||
implements SystemOssStorageService {
|
||||
public class SystemMinioStorageServiceImpl extends ServiceImpl<SystemOssStorageMapper, SystemOssStorageTb> implements SystemOssStorageService {
|
||||
|
||||
@Autowired
|
||||
private MinioRepository minioRepository;
|
||||
@@ -69,10 +70,7 @@ public class SystemMinioStorageServiceImpl extends ServiceImpl<SystemOssStorageM
|
||||
private SystemOssStorageMapper systemOssStorageMapper;
|
||||
|
||||
@Override
|
||||
public KitPageResult<SystemOssStorageVo> searchOssStorage(
|
||||
SystemQueryStorageArgs args,
|
||||
Page<SystemOssStorageTb> page
|
||||
) {
|
||||
public KitPageResult<SystemOssStorageVo> searchOssStorage(SystemQueryStorageArgs args, Page<SystemOssStorageTb> page) {
|
||||
IPage<SystemOssStorageVo> ossStorageTbs = this.selectOssStorageByArgs(args, page);
|
||||
for (SystemOssStorageVo storageVo : ossStorageTbs.getRecords()) {
|
||||
storageVo.setFileSizeDesc(KitFileUtil.getSize(storageVo.getFileSize()));
|
||||
@@ -85,19 +83,14 @@ public class SystemMinioStorageServiceImpl extends ServiceImpl<SystemOssStorageM
|
||||
LambdaQueryWrapper<SystemOssStorageTb> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.and(
|
||||
StrUtil.isNotBlank(args.getBlurry()),
|
||||
c -> c.like(SystemOssStorageTb::getFileName, args.getBlurry()).or()
|
||||
.like(SystemOssStorageTb::getFilePrefix, args.getBlurry()).or()
|
||||
.like(SystemOssStorageTb::getFileMime, args.getBlurry()).or()
|
||||
.like(SystemOssStorageTb::getFileMd5, args.getBlurry())
|
||||
c -> c.like(SystemOssStorageTb::getFileName, args.getBlurry()).or().like(SystemOssStorageTb::getFilePrefix, args.getBlurry()).or()
|
||||
.like(SystemOssStorageTb::getFileMime, args.getBlurry()).or().like(SystemOssStorageTb::getFileMd5, args.getBlurry())
|
||||
);
|
||||
if (CollUtil.isNotEmpty(args.getCreateTime()) && args.getCreateTime().size() >= 2) {
|
||||
wrapper.between(SystemOssStorageTb::getUpdateTime, args.getCreateTime().get(0),
|
||||
args.getCreateTime().get(1)
|
||||
);
|
||||
wrapper.between(SystemOssStorageTb::getUpdateTime, args.getCreateTime().get(0), args.getCreateTime().get(1));
|
||||
}
|
||||
wrapper.orderByAsc(SystemOssStorageTb::getId);
|
||||
return systemOssStorageMapper.selectPage(page, wrapper)
|
||||
.convert(i -> KitBeanUtil.copyToClass(i, SystemOssStorageVo.class));
|
||||
return systemOssStorageMapper.selectPage(page, wrapper).convert(i -> KitBeanUtil.copyToClass(i, SystemOssStorageVo.class));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -161,8 +154,7 @@ public class SystemMinioStorageServiceImpl extends ServiceImpl<SystemOssStorageM
|
||||
List<SystemOssStorageVo> systemOssStorageVos = this.queryOssStorage(args);
|
||||
// KitXlsxExportUtil.exportFile(response, "OSS文件上传记录数据", systemOssStorageVos, SystemOssStorageExportRowVo.class,
|
||||
// (dataObject) -> CollUtil.newArrayList(KitBeanUtil.copyProperties(dataObject, SystemOssStorageExportRowVo.class)));
|
||||
List<SystemOssStorageExportRowVo> rowVos =
|
||||
KitBeanUtil.copyToList(systemOssStorageVos, SystemOssStorageExportRowVo.class);
|
||||
List<SystemOssStorageExportRowVo> rowVos = KitBeanUtil.copyToList(systemOssStorageVos, SystemOssStorageExportRowVo.class);
|
||||
KitExcelExporter.exportSimple(response, "OSS文件上传记录数据", SystemOssStorageExportRowVo.class, rowVos);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user