Kaynağa Gözat

feat: 设置时区

wuwenyi 1 gün önce
ebeveyn
işleme
1df28646f0

+ 2 - 0
Dockerfile

@@ -12,6 +12,8 @@ COPY src ./src
 RUN --mount=type=cache,target=/root/.m2/repository mvn package -DskipTests -B -q
 
 FROM eclipse-temurin:17-jre
+# 容器默认 UTC;固定东八区,避免 LocalDateTime.now() 与 TIMESTAMP 读写偏 8 小时
+ENV TZ=Asia/Shanghai
 WORKDIR /app
 COPY --from=build /app/target/*.jar app.jar
 EXPOSE 8080

+ 3 - 1
docker-compose.yml

@@ -10,9 +10,11 @@ services:
     networks:
       - qqflow-network
     environment:
+      TZ: Asia/Shanghai
+      JAVA_TOOL_OPTIONS: -Duser.timezone=Asia/Shanghai
       SPRING_PROFILES_ACTIVE: test
       JWT_SECRET: qqflow-test-secret-key-2024-min-32chars
-      SPRING_DATASOURCE_URL: jdbc:mysql://192.168.110.4:3306/qqflowengine?useUnicode=true&characterEncoding=UTF-8&connectionCollation=utf8mb4_unicode_ci&serverTimezone=Asia/Shanghai&character_set_server=utf8mb4
+      SPRING_DATASOURCE_URL: jdbc:mysql://192.168.110.4:3306/qqflowengine?useUnicode=true&characterEncoding=UTF-8&connectionCollation=utf8mb4_unicode_ci&serverTimezone=Asia/Shanghai&forceConnectionTimeZoneToSession=true&character_set_server=utf8mb4
       SPRING_DATASOURCE_USERNAME: qqflowengine
       SPRING_DATASOURCE_PASSWORD: 123456
       SPRING_REDIS_HOST: 192.168.110.4

+ 5 - 0
src/main/java/com/qqflow/engine/QqFlowEngineApplication.java

@@ -5,12 +5,17 @@ import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.scheduling.annotation.EnableScheduling;
 
+import java.util.TimeZone;
+
 @EnableScheduling
 @MapperScan("com.qqflow.engine.**.mapper")
 @SpringBootApplication
 public class QqFlowEngineApplication {
 
     public static void main(String[] args) {
+        // 容器/服务器默认 UTC 时 LocalDateTime.now() 写的是 UTC 时间,
+        // 统一固定为东八区,保证审批时间与发起时间一致
+        TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai"));
         SpringApplication.run(QqFlowEngineApplication.class, args);
     }
 }

+ 1 - 1
src/main/resources/application-test.yml

@@ -1,6 +1,6 @@
 spring:
   datasource:
-    url: jdbc:mysql://192.168.110.4:3306/qqflowengine?useUnicode=true&characterEncoding=UTF-8&connectionCollation=utf8mb4_unicode_ci&serverTimezone=Asia/Shanghai
+    url: jdbc:mysql://192.168.110.4:3306/qqflowengine?useUnicode=true&characterEncoding=UTF-8&connectionCollation=utf8mb4_unicode_ci&serverTimezone=Asia/Shanghai&forceConnectionTimeZoneToSession=true
     driver-class-name: com.mysql.cj.jdbc.Driver
     username: qqflowengine
     password: 123456