diff --git a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/config/WebMvcConfiguration.java b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/config/WebMvcConfiguration.java
index 49fb31e1..102c5746 100644
--- a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/config/WebMvcConfiguration.java
+++ b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/config/WebMvcConfiguration.java
@@ -16,6 +16,8 @@
package top.charles7c.cnadmin.common.config;
+import java.util.List;
+import java.util.Objects;
import java.util.concurrent.TimeUnit;
import lombok.RequiredArgsConstructor;
@@ -23,6 +25,8 @@ import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.CacheControl;
+import org.springframework.http.converter.HttpMessageConverter;
+import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
@@ -44,6 +48,7 @@ import top.charles7c.cnadmin.common.config.properties.CorsProperties;
public class WebMvcConfiguration implements WebMvcConfigurer {
private final CorsProperties corsProperties;
+ private final MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter;
/**
* 静态资源处理器配置
@@ -78,4 +83,20 @@ public class WebMvcConfiguration implements WebMvcConfigurer {
source.registerCorsConfiguration("/**", config);
return new CorsFilter(source);
}
+
+ /**
+ * 解决 Jackson2ObjectMapperBuilderCustomizer 配置不生效的问题
+ *
+ * MappingJackson2HttpMessageConverter 对象在程序启动时创建了多个,移除多余的,保证只有一个
+ *
+ */
+ @Override
+ public void extendMessageConverters(List> converters) {
+ converters.removeIf(MappingJackson2HttpMessageConverter.class::isInstance);
+ if (Objects.isNull(mappingJackson2HttpMessageConverter)) {
+ converters.add(0, new MappingJackson2HttpMessageConverter());
+ } else {
+ converters.add(0, mappingJackson2HttpMessageConverter);
+ }
+ }
}
diff --git a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/config/jackson/JacksonConfiguration.java b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/config/jackson/JacksonConfiguration.java
index 345d9aea..ab9f367d 100644
--- a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/config/jackson/JacksonConfiguration.java
+++ b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/config/jackson/JacksonConfiguration.java
@@ -22,7 +22,6 @@ import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
-import java.util.Locale;
import java.util.TimeZone;
import lombok.extern.slf4j.Slf4j;
@@ -60,11 +59,6 @@ public class JacksonConfiguration {
String timeFormatPattern = "HH:mm:ss";
return builder -> {
- // 针对 java.util.Date 的转换
- builder.locale(Locale.CHINA);
- builder.timeZone(TimeZone.getDefault());
- builder.simpleDateFormat(dateTimeFormatPattern);
-
// 针对 Long、BigInteger、BigDecimal 的转换
JavaTimeModule javaTimeModule = new JavaTimeModule();
javaTimeModule.addSerializer(Long.class, BigNumberSerializer.SERIALIZER_INSTANCE);
@@ -85,6 +79,7 @@ public class JacksonConfiguration {
javaTimeModule.addSerializer(LocalTime.class, new LocalTimeSerializer(timeFormatter));
javaTimeModule.addDeserializer(LocalTime.class, new LocalTimeDeserializer(timeFormatter));
builder.modules(javaTimeModule);
+ builder.timeZone(TimeZone.getDefault());
log.info(">>>初始化 Jackson 配置<<<");
};
}
diff --git a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/config/mybatis/MyBatisPlusMetaObjectHandler.java b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/config/mybatis/MyBatisPlusMetaObjectHandler.java
index 7c7cd6bf..d4a2cd49 100644
--- a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/config/mybatis/MyBatisPlusMetaObjectHandler.java
+++ b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/config/mybatis/MyBatisPlusMetaObjectHandler.java
@@ -16,7 +16,7 @@
package top.charles7c.cnadmin.common.config.mybatis;
-import java.util.Date;
+import java.time.LocalDateTime;
import org.apache.ibatis.reflection.MetaObject;
@@ -59,7 +59,7 @@ public class MyBatisPlusMetaObjectHandler implements MetaObjectHandler {
}
Long createUser = LoginHelper.getUserId();
- Date createTime = new Date();
+ LocalDateTime createTime = LocalDateTime.now();
if (metaObject.getOriginalObject() instanceof BaseEntity) {
// 继承了 BaseEntity 的类,填充创建信息
BaseEntity baseEntity = (BaseEntity)metaObject.getOriginalObject();
@@ -93,7 +93,7 @@ public class MyBatisPlusMetaObjectHandler implements MetaObjectHandler {
}
Long updateUser = LoginHelper.getUserId();
- Date updateTime = new Date();
+ LocalDateTime updateTime = LocalDateTime.now();
if (metaObject.getOriginalObject() instanceof BaseEntity) {
// 继承了 BaseEntity 的类,填充修改信息
BaseEntity baseEntity = (BaseEntity)metaObject.getOriginalObject();
diff --git a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/model/dto/LoginUser.java b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/model/dto/LoginUser.java
index 15e76fe0..37572428 100644
--- a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/model/dto/LoginUser.java
+++ b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/model/dto/LoginUser.java
@@ -17,6 +17,7 @@
package top.charles7c.cnadmin.common.model.dto;
import java.io.Serializable;
+import java.time.LocalDateTime;
import lombok.Data;
@@ -32,7 +33,7 @@ public class LoginUser implements Serializable {
private static final long serialVersionUID = 1L;
/**
- * 用户 ID
+ * 用户ID
*/
private Long userId;
@@ -75,4 +76,14 @@ public class LoginUser implements Serializable {
* 状态(1启用 2禁用)
*/
private Integer status;
+
+ /**
+ * 最后一次修改密码的时间
+ */
+ private LocalDateTime pwdResetTime;
+
+ /**
+ * 创建时间
+ */
+ private LocalDateTime createTime;
}
diff --git a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/model/dto/OperationLog.java b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/model/dto/OperationLog.java
index f0684bcd..1348024d 100644
--- a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/model/dto/OperationLog.java
+++ b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/model/dto/OperationLog.java
@@ -16,7 +16,7 @@
package top.charles7c.cnadmin.common.model.dto;
-import java.util.Date;
+import java.time.LocalDateTime;
import lombok.Data;
@@ -37,7 +37,7 @@ public class OperationLog {
/**
* 操作时间
*/
- private Date createTime;
+ private LocalDateTime createTime;
/**
* 异常
diff --git a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/model/entity/BaseEntity.java b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/model/entity/BaseEntity.java
index 40fbd4be..a5272e89 100644
--- a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/model/entity/BaseEntity.java
+++ b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/model/entity/BaseEntity.java
@@ -17,7 +17,7 @@
package top.charles7c.cnadmin.common.model.entity;
import java.io.Serializable;
-import java.util.Date;
+import java.time.LocalDateTime;
import lombok.Data;
@@ -45,7 +45,7 @@ public class BaseEntity implements Serializable {
* 创建时间
*/
@TableField(fill = FieldFill.INSERT)
- private Date createTime;
+ private LocalDateTime createTime;
/**
* 修改人
@@ -57,5 +57,5 @@ public class BaseEntity implements Serializable {
* 修改时间
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
- private Date updateTime;
+ private LocalDateTime updateTime;
}
diff --git a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/model/vo/R.java b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/model/vo/R.java
index 33664b46..17199de5 100644
--- a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/model/vo/R.java
+++ b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/model/vo/R.java
@@ -27,8 +27,6 @@ import io.swagger.v3.oas.annotations.media.Schema;
import org.springframework.http.HttpStatus;
-import com.fasterxml.jackson.annotation.JsonFormat;
-
/**
* 响应信息
*
@@ -60,7 +58,6 @@ public class R implements Serializable {
/** 时间戳 */
@Schema(description = "时间戳")
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime timestamp = LocalDateTime.now();
/** 成功状态码 */
diff --git a/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/interceptor/LogInterceptor.java b/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/interceptor/LogInterceptor.java
index 1c24af50..2f276258 100644
--- a/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/interceptor/LogInterceptor.java
+++ b/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/interceptor/LogInterceptor.java
@@ -16,7 +16,7 @@
package top.charles7c.cnadmin.monitor.interceptor;
-import java.util.Date;
+import java.time.LocalDateTime;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
@@ -37,6 +37,7 @@ import org.springframework.web.util.ContentCachingResponseWrapper;
import org.springframework.web.util.WebUtils;
import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.LocalDateTimeUtil;
import cn.hutool.core.exceptions.ExceptionUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.extra.servlet.ServletUtil;
@@ -104,7 +105,7 @@ public class LogInterceptor implements HandlerInterceptor {
private void logCreateTime() {
OperationLog operationLog = new OperationLog();
operationLog.setCreateUser(LoginHelper.getUserId());
- operationLog.setCreateTime(new Date());
+ operationLog.setCreateTime(LocalDateTime.now());
LogContextHolder.set(operationLog);
}
@@ -119,7 +120,7 @@ public class LogInterceptor implements HandlerInterceptor {
LogContextHolder.remove();
SysLog sysLog = new SysLog();
sysLog.setCreateTime(operationLog.getCreateTime());
- sysLog.setElapsedTime(System.currentTimeMillis() - sysLog.getCreateTime().getTime());
+ sysLog.setElapsedTime(System.currentTimeMillis() - LocalDateTimeUtil.toEpochMilli(sysLog.getCreateTime()));
sysLog.setLogLevel(LogLevelEnum.INFO);
// 记录异常信息
diff --git a/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/model/entity/SysLog.java b/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/model/entity/SysLog.java
index aa675efd..24945bd3 100644
--- a/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/model/entity/SysLog.java
+++ b/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/model/entity/SysLog.java
@@ -17,7 +17,7 @@
package top.charles7c.cnadmin.monitor.model.entity;
import java.io.Serializable;
-import java.util.Date;
+import java.time.LocalDateTime;
import lombok.Data;
@@ -122,5 +122,5 @@ public class SysLog implements Serializable {
/**
* 操作时间
*/
- private Date createTime;
+ private LocalDateTime createTime;
}
diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/entity/SysUser.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/entity/SysUser.java
index 134266ab..4fea37d8 100644
--- a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/entity/SysUser.java
+++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/entity/SysUser.java
@@ -16,7 +16,7 @@
package top.charles7c.cnadmin.system.model.entity;
-import java.util.Date;
+import java.time.LocalDateTime;
import lombok.Data;
@@ -38,7 +38,7 @@ public class SysUser extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
- * 用户 ID
+ * 用户ID
*/
@TableId
private Long userId;
@@ -91,5 +91,5 @@ public class SysUser extends BaseEntity {
/**
* 最后一次修改密码的时间
*/
- private Date pwdResetTime;
+ private LocalDateTime pwdResetTime;
}
diff --git a/continew-admin-webapi/src/main/resources/application.yml b/continew-admin-webapi/src/main/resources/application.yml
index a80ef09c..f476200c 100644
--- a/continew-admin-webapi/src/main/resources/application.yml
+++ b/continew-admin-webapi/src/main/resources/application.yml
@@ -173,7 +173,7 @@ spring:
jackson:
# 时区配置
time-zone: GMT+8
- # 日期格式化
+ # 日期格式化(针对 java.util.Date)
date-format: yyyy-MM-dd HH:mm:ss
# 序列化配置(Bean -> JSON)
serialization: