Selaa lähdekoodia

fix(app):修正时区转换逻辑以确保正确的时间计算- 更新 AppGameMapper 中的 SQL 查询,使用子查询获取场地地址
- 在 AppSitePrice将RulesMapper.xml 中时区从 '+00:00' 调整为 '+00:20'
- 修正所有相关时间计算逻辑以匹配新的时区设置
- 确保日期和时间比较操作在正确时区下执行
- 更新递归日期生成器中的时区转换逻辑
-修复有效日期计算中的时区不一致问题

SheepHy 3 viikkoa sitten
vanhempi
commit
98c5d675a0

+ 6 - 4
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/mapper/AppGameMapper.java

@@ -45,10 +45,12 @@ public interface AppGameMapper extends BaseMapper<AppGame> {
     FindByGameIdPriceVo findByGameId(@Param("id") String id);
 
 
-    @Select(" select  a.*,COALESCE(a.address, c.address) AS siteAddress from nm_game a " +
-            " left join nm_site c on a.site_id = c.id  " +
-            " left join  nm_game_price_rules b on  a.id =b.game_id and b.del_flag =0 " +
-            " where b.id = #{priceRulesId}")
+    @Select("SELECT a.*, " +
+            "(SELECT sd.depart_name FROM sys_depart sd WHERE sd.org_code = c.org_code) AS siteAddress " +
+            "FROM nm_game a " +
+            "LEFT JOIN nm_site c ON a.site_id = c.id " +
+            "LEFT JOIN nm_game_price_rules b ON a.id = b.game_id AND b.del_flag = 0 " +
+            "WHERE b.id = #{priceRulesId}")
     AppGame  findByPriceRules(@Param("priceRulesId") String priceRulesId);
 
     /**

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

@@ -2,13 +2,13 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="org.jeecg.modules.system.app.mapper.AppSitePriceRulesMapper">
     <select id="theGymnasiumIsCharteredInfo" resultType="org.jeecg.modules.app.vo.PlaceInfoVO$theGymnasiumIsCharteredInfoVO">
-        <![CDATA[WITH RECURSIVE dates AS (
+         <![CDATA[WITH RECURSIVE dates AS (
         SELECT
             1 AS offset_day,
-            CONVERT_TZ(NOW(), '+00:00', '+08:00') AS current_datetime,
-                     DATE(CONVERT_TZ(NOW(), '+00:00', '+08:00')) AS date_val,
-                     WEEKDAY(DATE(CONVERT_TZ(NOW(), '+00:00', '+08:00'))) + 1 AS dow
-                 UNION ALL
+            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
+                  UNION ALL
     SELECT
         offset_day + 1,
         current_datetime + INTERVAL 1 DAY,
@@ -31,16 +31,16 @@
         WHEN r.date_of_sale IS NOT NULL THEN r.date_of_sale
         ELSE
         -- 计算下一个指定星期几的日期 (使用本地时区)
-        DATE(CONVERT_TZ(NOW(), '+00:00', '+08:00')) + INTERVAL (
-        (7 + (r.day_of_week - 1) - WEEKDAY(DATE(CONVERT_TZ(NOW(), '+00:00', '+08:00')))) % 7
+        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
         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:00', '+08:00')) + INTERVAL (
-        (7 + (r.day_of_week - 1) - WEEKDAY(DATE(CONVERT_TZ(NOW(), '+00:00', '+08:00')))) % 7
+        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
         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:00', '+08:00')) + INTERVAL (
-        (7 + (r.day_of_week - 1) - WEEKDAY(DATE(CONVERT_TZ(NOW(), '+00:00', '+08:00')))) % 7
+        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,
         '%Y-%m-%d'
         )
@@ -69,10 +69,10 @@
         (
         r.date_of_sale IS NOT NULL
       AND (
-        r.date_of_sale > DATE(CONVERT_TZ(NOW(), '+00:00', '+08:00'))
+        r.date_of_sale > DATE(CONVERT_TZ(NOW(), '+00:20', '+08:00'))
        OR (
-        r.date_of_sale = DATE(CONVERT_TZ(NOW(), '+00:00', '+08:00'))
-      AND r.start_time > TIME(CONVERT_TZ(NOW(), '+00:00', '+08:00'))
+        r.date_of_sale = DATE(CONVERT_TZ(NOW(), '+00:20', '+08:00'))
+      AND r.start_time > TIME(CONVERT_TZ(NOW(), '+00:20', '+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:00', '+08:00')) + INTERVAL (
-        (7 + (r.day_of_week - 1) - WEEKDAY(DATE(CONVERT_TZ(NOW(), '+00:00', '+08:00')))) % 7
-        ) DAY > DATE(CONVERT_TZ(NOW(), '+00:00', '+08:00'))
+        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'))
        OR (
-        DATE(CONVERT_TZ(NOW(), '+00:00', '+08:00')) + INTERVAL (
-        (7 + (r.day_of_week - 1) - WEEKDAY(DATE(CONVERT_TZ(NOW(), '+00:00', '+08:00')))) % 7
-        ) DAY = DATE(CONVERT_TZ(NOW(), '+00:00', '+08:00'))
-      AND r.start_time > TIME(CONVERT_TZ(NOW(), '+00:00', '+08:00'))
+        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'))
         )
         )
         )
@@ -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:00', '+08:00')))
+      AND NOT (dm.offset_day = 1 AND asl.start_time <= TIME(CONVERT_TZ(NOW(), '+00:20', '+08:00')))
     ORDER BY
         dm.offset_day;
         ]]>