This commit is contained in:
sion
2026-04-10 00:27:28 +08:00
parent 2c8bcc2acc
commit a61c7ed40e
12 changed files with 437 additions and 28 deletions

View File

@@ -9,6 +9,8 @@ import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import java.util.TimeZone;
@SpringBootApplication
@ServletComponentScan(basePackages ={"com.it.rattan"})
@@ -19,6 +21,8 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
public class SpcCloudApplication {
public static void main(String[] args) {
// 统一设置JVM默认时区为北京时间确保无论服务器部署在哪里时间都一致
TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai"));
SpringApplication.run(SpcCloudApplication.class, args);
}

View File

@@ -7,40 +7,60 @@ 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.ser.LocalDateSerializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import java.time.format.DateTimeFormatter;
import java.util.TimeZone;
/**
* Jackson 配置类
* 彻底解决 StackOverflowError 问题
* 统一时间格式为 yyyy-MM-dd HH:mm:ss时区为 Asia/Shanghai
*/
@Configuration
public class JacksonConfig {
private static final String DATE_TIME_PATTERN = "yyyy-MM-dd HH:mm:ss";
private static final String DATE_PATTERN = "yyyy-MM-dd";
@Bean
@Primary
public ObjectMapper objectMapper() {
ObjectMapper mapper = new ObjectMapper();
// 设置可见性
mapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
// 禁用空对象序列化失败
mapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
// 忽略未知属性
mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
// 不序列化 null 值
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
// 注册 Java 8 时间模块
mapper.registerModule(new JavaTimeModule());
// 注册 Java 8 时间模块,自定义日期时间格式
JavaTimeModule module = new JavaTimeModule();
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(DATE_TIME_PATTERN);
DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern(DATE_PATTERN);
module.addSerializer(java.time.LocalDateTime.class, new LocalDateTimeSerializer(dateTimeFormatter));
module.addDeserializer(java.time.LocalDateTime.class, new LocalDateTimeDeserializer(dateTimeFormatter));
module.addSerializer(java.time.LocalDate.class, new LocalDateSerializer(dateFormatter));
module.addDeserializer(java.time.LocalDate.class, new LocalDateDeserializer(dateFormatter));
mapper.registerModule(module);
// 禁用日期作为时间戳
mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
// 统一时区为北京时间
mapper.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
return mapper;
}
}

View File

@@ -445,6 +445,7 @@ public class AdminController {
coin.setStatus(status);
coin.setUpdateTime(LocalDateTime.now());
coinService.updateById(coin);
coinService.clearCache(coin.getCode());
return Result.success(status == 1 ? "已上架" : "已下架", null);
}

View File

@@ -540,7 +540,7 @@ public class FundService {
LambdaQueryWrapper<OrderFund> wrapper = new LambdaQueryWrapper<>();
if (adminRole != null && adminRole == 3) {
// 财务只看提现订单
// 财务:看所有提现订单
wrapper.eq(OrderFund::getType, 2);
} else if (type != null && type > 0) {
wrapper.eq(OrderFund::getType, type);
@@ -550,14 +550,9 @@ public class FundService {
wrapper.eq(OrderFund::getStatus, status);
}
if (adminId != null) {
if (adminRole != null && adminRole == 3) {
// 财务:看自己审批过的
wrapper.eq(OrderFund::getFinanceAdminId, adminId);
} else {
// 管理员:看自己审批过的
wrapper.eq(OrderFund::getApproveAdminId, adminId);
}
if (adminId != null && adminRole != null && adminRole == 2) {
// 普通管理员:看自己审批过的
wrapper.eq(OrderFund::getApproveAdminId, adminId);
}
wrapper.orderByDesc(OrderFund::getCreateTime);

View File

@@ -21,6 +21,8 @@ spring:
connection-timeout: 30000
connection-test-query: SELECT 1
jackson:
time-zone: Asia/Shanghai
date-format: yyyy-MM-dd HH:mm:ss
serialization:
write-dates-as-timestamps: false
fail-on-empty-beans: false

View File

@@ -31,6 +31,15 @@ spring:
maxPoolPreparedStatementPerConnectionSize: 20
# 通过connectProperties属性来打开mergeSql功能慢SQL记录
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
jackson:
time-zone: Asia/Shanghai
date-format: yyyy-MM-dd HH:mm:ss
serialization:
write-dates-as-timestamps: false
fail-on-empty-beans: false
deserialization:
fail-on-unknown-properties: false
default-property-inclusion: non_null
#mybatis-plus