Browse Source

fix(app): 调整时区偏移量以修正日期计算逻辑

- 将 CONVERT_TZ 函数中的 '+00:20' 偏移量更新为 '+00:15'
-修正与当前时间相关的所有日期和时间计算逻辑- 确保 effective_date 和 use_date_str 的计算使用一致的时区设置
- 更新日期比较条件以匹配新的时区偏移量
-修正时间过滤条件中对 NOW()时区转换的处理- 调整递归日期生成逻辑中的时区配置
- 确保所有时间相关子查询使用统一的时区标准
- 修复时间窗口判断逻辑以适应新的时区设置
SheepHy 3 weeks ago
parent
commit
0fe2c37657

+ 20 - 20
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/mapper/xml/AppSitePriceRulesMapper.xml

@@ -5,9 +5,9 @@
          <![CDATA[WITH RECURSIVE dates AS (
         SELECT
             1 AS offset_day,
-            CONVERT_TZ(NOW(), '+00:20', '+08:00') AS current_datetime,
-                      DATE(CONVERT_TZ(NOW(), '+00:20', '+08:00')) AS date_val,
-                      WEEKDAY(DATE(CONVERT_TZ(NOW(), '+00:20', '+08:00'))) + 1 AS dow
+            CONVERT_TZ(NOW(), '+00:15', '+08:00') AS current_datetime,
+                      DATE(CONVERT_TZ(NOW(), '+00:15', '+08:00')) AS date_val,
+                      WEEKDAY(DATE(CONVERT_TZ(NOW(), '+00:15', '+08:00'))) + 1 AS dow
                   UNION ALL
     SELECT
         offset_day + 1,
@@ -31,16 +31,16 @@
         WHEN r.date_of_sale IS NOT NULL THEN r.date_of_sale
         ELSE
         -- 计算下一个指定星期几的日期 (使用本地时区)
-        DATE(CONVERT_TZ(NOW(), '+00:20', '+08:00')) + INTERVAL (
-        (7 + (r.day_of_week - 1) - WEEKDAY(DATE(CONVERT_TZ(NOW(), '+00:20', '+08:00')))) % 7
+        DATE(CONVERT_TZ(NOW(), '+00:15', '+08:00')) + INTERVAL (
+        (7 + (r.day_of_week - 1) - WEEKDAY(DATE(CONVERT_TZ(NOW(), '+00:15', '+08:00')))) % 7
         ) DAY
         END AS effective_date,
         ROW_NUMBER() OVER (
         PARTITION BY CASE
         WHEN r.date_of_sale IS NOT NULL THEN r.date_of_sale
         ELSE
-        DATE(CONVERT_TZ(NOW(), '+00:20', '+08:00')) + INTERVAL (
-        (7 + (r.day_of_week - 1) - WEEKDAY(DATE(CONVERT_TZ(NOW(), '+00:20', '+08:00')))) % 7
+        DATE(CONVERT_TZ(NOW(), '+00:15', '+08:00')) + INTERVAL (
+        (7 + (r.day_of_week - 1) - WEEKDAY(DATE(CONVERT_TZ(NOW(), '+00:15', '+08:00')))) % 7
         ) DAY
         END
         ORDER BY
@@ -53,8 +53,8 @@
         AND opi.use_date_str = CASE
         WHEN r.date_of_sale IS NOT NULL THEN DATE_FORMAT(r.date_of_sale, '%Y-%m-%d')
         ELSE DATE_FORMAT(
-        DATE(CONVERT_TZ(NOW(), '+00:20', '+08:00')) + INTERVAL (
-        (7 + (r.day_of_week - 1) - WEEKDAY(DATE(CONVERT_TZ(NOW(), '+00:20', '+08:00')))) % 7
+        DATE(CONVERT_TZ(NOW(), '+00:15', '+08:00')) + INTERVAL (
+        (7 + (r.day_of_week - 1) - WEEKDAY(DATE(CONVERT_TZ(NOW(), '+00:15', '+08:00')))) % 7
         ) DAY,
         '%Y-%m-%d'
         )
@@ -69,10 +69,10 @@
         (
         r.date_of_sale IS NOT NULL
       AND (
-        r.date_of_sale > DATE(CONVERT_TZ(NOW(), '+00:20', '+08:00'))
+        r.date_of_sale > DATE(CONVERT_TZ(NOW(), '+00:15', '+08:00'))
        OR (
-        r.date_of_sale = DATE(CONVERT_TZ(NOW(), '+00:20', '+08:00'))
-      AND r.start_time > TIME(CONVERT_TZ(NOW(), '+00:20', '+08:00'))
+        r.date_of_sale = DATE(CONVERT_TZ(NOW(), '+00:15', '+08:00'))
+      AND r.start_time > TIME(CONVERT_TZ(NOW(), '+00:15', '+08:00'))
         )
         )
         )
@@ -82,14 +82,14 @@
         r.date_of_sale IS NULL
       AND r.day_of_week IS NOT NULL
       AND (
-        DATE(CONVERT_TZ(NOW(), '+00:20', '+08:00')) + INTERVAL (
-        (7 + (r.day_of_week - 1) - WEEKDAY(DATE(CONVERT_TZ(NOW(), '+00:20', '+08:00')))) % 7
-        ) DAY > DATE(CONVERT_TZ(NOW(), '+00:20', '+08:00'))
+        DATE(CONVERT_TZ(NOW(), '+00:15', '+08:00')) + INTERVAL (
+        (7 + (r.day_of_week - 1) - WEEKDAY(DATE(CONVERT_TZ(NOW(), '+00:15', '+08:00')))) % 7
+        ) DAY > DATE(CONVERT_TZ(NOW(), '+00:15', '+08:00'))
        OR (
-        DATE(CONVERT_TZ(NOW(), '+00:20', '+08:00')) + INTERVAL (
-        (7 + (r.day_of_week - 1) - WEEKDAY(DATE(CONVERT_TZ(NOW(), '+00:20', '+08:00')))) % 7
-        ) DAY = DATE(CONVERT_TZ(NOW(), '+00:20', '+08:00'))
-      AND r.start_time > TIME(CONVERT_TZ(NOW(), '+00:20', '+08:00'))
+        DATE(CONVERT_TZ(NOW(), '+00:15', '+08:00')) + INTERVAL (
+        (7 + (r.day_of_week - 1) - WEEKDAY(DATE(CONVERT_TZ(NOW(), '+00:15', '+08:00')))) % 7
+        ) DAY = DATE(CONVERT_TZ(NOW(), '+00:15', '+08:00'))
+      AND r.start_time > TIME(CONVERT_TZ(NOW(), '+00:15', '+08:00'))
         )
         )
         )
@@ -130,7 +130,7 @@
             JOIN dates dm ON asl.effective_date = dm.date_val
     WHERE
         asl.rn = 1
-      AND NOT (dm.offset_day = 1 AND asl.start_time <= TIME(CONVERT_TZ(NOW(), '+00:20', '+08:00')))
+      AND NOT (dm.offset_day = 1 AND asl.start_time <= TIME(CONVERT_TZ(NOW(), '+00:15', '+08:00')))
     ORDER BY
         dm.offset_day;
         ]]>