diff --git a/src/main/java/com/gxwebsoft/WebSoftApplication.java b/src/main/java/com/gxwebsoft/WebSoftApplication.java index 0baf59a..f60bc53 100644 --- a/src/main/java/com/gxwebsoft/WebSoftApplication.java +++ b/src/main/java/com/gxwebsoft/WebSoftApplication.java @@ -30,8 +30,15 @@ import java.util.TimeZone; @EnableWebSocket public class WebSoftApplication { + static { + // 必须在任何 LocalDateTime.now() / JDBC 初始化之前生效。 + // 注意:1Panel 启动命令里 -Duser.timezone 必须写在 -jar 前面,写在后面会被当成程序参数忽略。 + System.setProperty("user.timezone", "Asia/Shanghai"); + TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai")); + } + public static void main(String[] args) { - // Docker 默认 UTC,未设置 TZ 时 LocalDateTime.now() 会比北京时间慢 8 小时 + System.setProperty("user.timezone", "Asia/Shanghai"); TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai")); SpringApplication.run(WebSoftApplication.class, args); } diff --git a/src/main/java/com/gxwebsoft/gxmu/controller/DeclareController.java b/src/main/java/com/gxwebsoft/gxmu/controller/DeclareController.java index f7f0ce7..de9bfae 100644 --- a/src/main/java/com/gxwebsoft/gxmu/controller/DeclareController.java +++ b/src/main/java/com/gxwebsoft/gxmu/controller/DeclareController.java @@ -17,6 +17,8 @@ import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.time.ZoneId; import java.util.List; /** @@ -30,6 +32,7 @@ import java.util.List; @RequestMapping("/api/gxmu/declare") public class DeclareController extends BaseController { private static final String TZBCY_MODULE = "gxmu_tzbcy_form"; + private static final ZoneId BEIJING = ZoneId.of("Asia/Shanghai"); @Resource private DeclareService declareService; @@ -75,6 +78,10 @@ public class DeclareController extends BaseController { if (validateMessage != null) { return fail(validateMessage); } + // 显式写北京时间,避免容器 JVM/库会话仍为 UTC 时 DEFAULT CURRENT_TIMESTAMP 偏 8 小时 + LocalDateTime now = LocalDateTime.now(BEIJING); + declare.setCreateTime(now); + declare.setUpdateTime(now); if (declareService.save(declare)) { return success("添加成功"); } @@ -88,6 +95,7 @@ public class DeclareController extends BaseController { if (validateMessage != null) { return fail(validateMessage); } + declare.setUpdateTime(LocalDateTime.now(BEIJING)); if (declareService.updateById(declare)) { return success("修改成功"); } diff --git a/src/main/java/com/gxwebsoft/gxmu/mapper/xml/DeclareMapper.xml b/src/main/java/com/gxwebsoft/gxmu/mapper/xml/DeclareMapper.xml index 4fa4817..5187878 100644 --- a/src/main/java/com/gxwebsoft/gxmu/mapper/xml/DeclareMapper.xml +++ b/src/main/java/com/gxwebsoft/gxmu/mapper/xml/DeclareMapper.xml @@ -52,8 +52,10 @@ AND a.create_time <= #{param.createTimeEnd} - - AND a.start_time <= now() AND a.end_time >= now() + + + AND a.start_time <= DATE_FORMAT(CONVERT_TZ(UTC_TIMESTAMP(), '+00:00', '+08:00'), '%Y-%m-%d %H:%i:%s') + AND a.end_time >= DATE_FORMAT(CONVERT_TZ(UTC_TIMESTAMP(), '+00:00', '+08:00'), '%Y-%m-%d %H:%i:%s') AND a.deleted = #{param.deleted}