diff --git a/pom.xml b/pom.xml
index 5f88f41..f2350e5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -135,11 +135,13 @@
- org.springframework.boot
- spring-boot-starter-json
+ com.fasterxml.jackson.datatype
+ jackson-datatype-jsr310
+ 2.15.3
+
com.alibaba
fastjson
diff --git a/src/main/java/com/guwan/backend/Handler/MyMetaObjectHandler.java b/src/main/java/com/guwan/backend/Handler/MyMetaObjectHandler.java
index 16c5957..94ee477 100644
--- a/src/main/java/com/guwan/backend/Handler/MyMetaObjectHandler.java
+++ b/src/main/java/com/guwan/backend/Handler/MyMetaObjectHandler.java
@@ -10,11 +10,11 @@ import java.util.Date;
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
- this.strictInsertFill(metaObject, "createdTime", Date.class, new Date());
+ this.strictInsertFill(metaObject, "createdTime", LocalDateTime.class, LocalDateTime.now());
}
@Override
public void updateFill(MetaObject metaObject) {
- this.strictUpdateFill(metaObject, "lastLoginTime", Date.class, new Date());
+ this.strictUpdateFill(metaObject, "lastLoginTime", LocalDateTime.class, LocalDateTime.now());
}
}
\ No newline at end of file
diff --git a/src/main/java/com/guwan/backend/config/JacksonConfiguration.java b/src/main/java/com/guwan/backend/config/JacksonConfiguration.java
deleted file mode 100644
index fc3fb66..0000000
--- a/src/main/java/com/guwan/backend/config/JacksonConfiguration.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package com.guwan.backend.config;
-
-
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.SerializationFeature;
-import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
-import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
-import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
-import com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer;
-import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
-import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
-import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer;
-import com.fasterxml.jackson.module.paramnames.ParameterNamesModule;
-import com.guwan.backend.constant.Constants;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.time.LocalTime;
-import java.time.format.DateTimeFormatter;
-
-@Configuration
-public class JacksonConfiguration {
-
- @Bean
- public ObjectMapper objectMapper(){
- ObjectMapper objectMapper = new ObjectMapper();
- objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
- objectMapper.disable(DeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE);
- JavaTimeModule javaTimeModule = new JavaTimeModule();
-
- javaTimeModule.addSerializer(LocalDateTime.class,new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(Constants.DateTime.DEFAULT_DATE_TIME_FORMAT)));
- javaTimeModule.addSerializer(LocalDate.class,new LocalDateSerializer(DateTimeFormatter.ofPattern(Constants.DateTime.DEFAULT_DATE_FORMAT)));
- javaTimeModule.addSerializer(LocalTime.class,new LocalTimeSerializer(DateTimeFormatter.ofPattern(Constants.DateTime.DEFAULT_TIME_FORMAT)));
-
- javaTimeModule.addDeserializer(LocalDateTime.class,new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(Constants.DateTime.DEFAULT_DATE_TIME_FORMAT)));
- javaTimeModule.addDeserializer(LocalDate.class,new LocalDateDeserializer(DateTimeFormatter.ofPattern(Constants.DateTime.DEFAULT_DATE_FORMAT)));
- javaTimeModule.addDeserializer(LocalTime.class,new LocalTimeDeserializer(DateTimeFormatter.ofPattern(Constants.DateTime.DEFAULT_TIME_FORMAT)));
- objectMapper.registerModule(javaTimeModule).registerModule(new ParameterNamesModule());
- return objectMapper;
- }
-}
diff --git a/src/main/java/com/guwan/backend/config/MvcConfiguration.java b/src/main/java/com/guwan/backend/config/MvcConfiguration.java
deleted file mode 100644
index 782bc05..0000000
--- a/src/main/java/com/guwan/backend/config/MvcConfiguration.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.guwan.backend.config;
-
-import com.fasterxml.jackson.annotation.JsonAutoDetect;
-import com.fasterxml.jackson.annotation.PropertyAccessor;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.SerializationFeature;
-import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.http.converter.HttpMessageConverter;
-import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
-
-import java.util.List;
-
-@Configuration
-public class MvcConfiguration implements WebMvcConfigurer {
- @Override
- public void extendMessageConverters(List> converters) {
- MappingJackson2HttpMessageConverter messageConverter = new MappingJackson2HttpMessageConverter();
- ObjectMapper objectMapper = new ObjectMapper();
- objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
- objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
- objectMapper.registerModule(new JavaTimeModule());
- messageConverter.setObjectMapper(objectMapper);
- converters.add(0, messageConverter);
- }
-}
diff --git a/src/main/java/com/guwan/backend/config/RedisConfig.java b/src/main/java/com/guwan/backend/config/RedisConfig.java
index 4764f72..ce86caa 100644
--- a/src/main/java/com/guwan/backend/config/RedisConfig.java
+++ b/src/main/java/com/guwan/backend/config/RedisConfig.java
@@ -4,6 +4,15 @@ import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator;
+import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
+import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
+import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
+import com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer;
+import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
+import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
+import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer;
+import com.fasterxml.jackson.module.paramnames.ParameterNamesModule;
+import com.guwan.backend.constant.Constants;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Bean;
@@ -17,6 +26,10 @@ import org.springframework.data.redis.serializer.RedisSerializationContext;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import java.time.Duration;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.time.format.DateTimeFormatter;
@Configuration
@EnableCaching
@@ -31,6 +44,18 @@ public class RedisConfig {
ObjectMapper mapper = new ObjectMapper();
mapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
mapper.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL);
+
+ JavaTimeModule javaTimeModule = new JavaTimeModule();
+
+ javaTimeModule.addSerializer(LocalDateTime.class,new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(Constants.DateTime.DEFAULT_DATE_TIME_FORMAT)));
+ javaTimeModule.addSerializer(LocalDate.class,new LocalDateSerializer(DateTimeFormatter.ofPattern(Constants.DateTime.DEFAULT_DATE_FORMAT)));
+ javaTimeModule.addSerializer(LocalTime.class,new LocalTimeSerializer(DateTimeFormatter.ofPattern(Constants.DateTime.DEFAULT_TIME_FORMAT)));
+
+ javaTimeModule.addDeserializer(LocalDateTime.class,new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(Constants.DateTime.DEFAULT_DATE_TIME_FORMAT)));
+ javaTimeModule.addDeserializer(LocalDate.class,new LocalDateDeserializer(DateTimeFormatter.ofPattern(Constants.DateTime.DEFAULT_DATE_FORMAT)));
+ javaTimeModule.addDeserializer(LocalTime.class,new LocalTimeDeserializer(DateTimeFormatter.ofPattern(Constants.DateTime.DEFAULT_TIME_FORMAT)));
+ mapper.registerModule(javaTimeModule).registerModule(new ParameterNamesModule());
+
jackson2JsonRedisSerializer.setObjectMapper(mapper);
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
diff --git a/src/main/java/com/guwan/backend/controller/UserController.java b/src/main/java/com/guwan/backend/controller/UserController.java
index 15f1fe6..616c5c7 100644
--- a/src/main/java/com/guwan/backend/controller/UserController.java
+++ b/src/main/java/com/guwan/backend/controller/UserController.java
@@ -8,21 +8,14 @@ import com.guwan.backend.service.EmailService;
import com.guwan.backend.service.UserService;
import com.guwan.backend.util.RedisUtils;
import com.guwan.backend.util.SmsUtils;
-import com.guwan.backend.vo.user.LoginRequest;
-import com.guwan.backend.vo.user.RegisterRequest;
-import com.guwan.backend.vo.user.EmailRegisterRequest;
-import com.guwan.backend.vo.user.PhoneRegisterRequest;
import jakarta.validation.Valid;
-import jakarta.validation.constraints.Pattern;
+import jakarta.validation.constraints.Email;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
-import jakarta.validation.constraints.Email;
import org.thymeleaf.context.Context;
-import java.util.Map;
-
@Slf4j
@RestController
@RequestMapping("/api/user")
@@ -50,10 +43,10 @@ public class UserController {
}
@PostMapping("/login")
- public Result login(@RequestBody @Valid LoginDto request) {
+ public Result login(@RequestBody @Valid LoginDto request) {
try {
log.info("用户登录: {}", request.getUsername());
- return Result.success("登录成功", userService.login(request));
+ return Result.success("登录成功", userService.login(request).getToken());
} catch (IllegalArgumentException e) {
return Result.unauthorized(e.getMessage());
} catch (Exception e) {
diff --git a/src/main/java/com/guwan/backend/dto/user/UserDTO.java b/src/main/java/com/guwan/backend/dto/user/UserDTO.java
index 99f0528..78f7704 100644
--- a/src/main/java/com/guwan/backend/dto/user/UserDTO.java
+++ b/src/main/java/com/guwan/backend/dto/user/UserDTO.java
@@ -1,15 +1,10 @@
package com.guwan.backend.dto.user;
import com.fasterxml.jackson.annotation.JsonFormat;
-import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
-import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
-import java.util.Date;
@Data
public class UserDTO {
@@ -21,9 +16,12 @@ public class UserDTO {
private String phone;
private Integer gender;
private String bio;
-
- private Date createdTime;
- private Date lastLoginTime;
+ @DateTimeFormat //此注解用来接收字符串类型的参数封装成LocalDateTime类型
+ @JsonFormat //此注解将date类型数据转成字符串响应出去
+ private LocalDateTime createdTime;
+ @DateTimeFormat
+ @JsonFormat
+ private LocalDateTime lastLoginTime;
private Integer status;
private String token;
}
\ No newline at end of file
diff --git a/src/main/java/com/guwan/backend/entity/User.java b/src/main/java/com/guwan/backend/entity/User.java
index c5fe143..235d4f5 100644
--- a/src/main/java/com/guwan/backend/entity/User.java
+++ b/src/main/java/com/guwan/backend/entity/User.java
@@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import java.time.LocalDateTime;
-import java.util.Date;
@Data
@TableName("user")
@@ -30,10 +29,10 @@ public class User {
@TableField(fill = FieldFill.INSERT)
- private Date createdTime;
+ private LocalDateTime createdTime;
@TableField(fill = FieldFill.INSERT_UPDATE)
- private Date lastLoginTime;
+ private LocalDateTime lastLoginTime;
private Integer status;
}
\ No newline at end of file
diff --git a/src/main/java/com/guwan/backend/service/impl/UserServiceImpl.java b/src/main/java/com/guwan/backend/service/impl/UserServiceImpl.java
index 3c59955..82be70d 100644
--- a/src/main/java/com/guwan/backend/service/impl/UserServiceImpl.java
+++ b/src/main/java/com/guwan/backend/service/impl/UserServiceImpl.java
@@ -12,7 +12,8 @@ import com.guwan.backend.service.VerificationService;
import com.guwan.backend.util.JwtUtil;
import com.guwan.backend.util.RedisUtil;
import com.guwan.backend.util.RedisUtils;
-import com.guwan.backend.vo.user.*;
+import com.guwan.backend.vo.user.EmailRegisterRequest;
+import com.guwan.backend.vo.user.PhoneRegisterRequest;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
@@ -21,7 +22,6 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
-import java.util.Date;
import java.util.concurrent.TimeUnit;
@Slf4j
@@ -133,7 +133,7 @@ public class UserServiceImpl implements UserService {
// 更新最后登录时间
- user.setLastLoginTime(new Date());
+ user.setLastLoginTime(LocalDateTime.now());
userMapper.updateById(user);
UserDTO userDTO = convertToDTO(user);