Przeglądaj źródła

refactor(national-motion-module-system): 优化场地信息和价格规则相关代码

- 修改表名和字段名以提高一致性
- 优化 SQL 查询以提高性能
- 更新实体类和 Mapper XML 文件以适应数据库变更
- 调整服务实现类中的查询逻辑
SheepHy 2 tygodni temu
rodzic
commit
151f1daf94

+ 11 - 11
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/impl/DetailServiceImpl.java

@@ -69,17 +69,17 @@ public class DetailServiceImpl implements IDetailService {
             List<PlaceInfoVO.PlaceInfoMsgVO> placeInfoMsgVOS = new ArrayList<>();
             appSitePlaceMapper.selectList(Wrappers.<AppSitePlace>lambdaQuery().eq(AppSitePlace::getSiteId, id)
                     .eq(AppSitePlace::getType,0)).forEach(appSitePlace -> {
-                appSitePriceRulesMapper.selectList(Wrappers.<AppSitePriceRules>lambdaQuery()
-                        .eq(AppSitePriceRules::getSitePlaceId, id)
-                        .eq(AppSitePriceRules::getStatus, 0)
-                        .eq(AppSitePriceRules::getType,0)).forEach(appSitePriceRules -> {
-                    PlaceInfoVO.PlaceInfoMsgVO placeInfoMsgVO = new PlaceInfoVO.PlaceInfoMsgVO();
-                    placeInfoMsgVO.setName(appSite.getName())
-                            .setSales(getPlaceSales(id))
-                            .setOriginalPrice(appSitePriceRules.getOriginalPrice())
-                            .setSellingPrice(appSitePriceRules.getSellingPrice());
-                    placeInfoMsgVOS.add(placeInfoMsgVO);
-                });
+                PlaceInfoVO.PlaceInfoMsgVO placeInfoMsgVO = new PlaceInfoVO.PlaceInfoMsgVO();
+                placeInfoMsgVO.setName(appSitePlace.getName())
+                        .setSales(getPlaceSales(id))
+                        .setOriginalPrice(appSitePriceRulesMapper.selectOne(Wrappers.<AppSitePriceRules>lambdaQuery()
+                                .eq(AppSitePriceRules::getSitePlaceId, appSitePlace.getId())
+                                .last("limit 1").orderByDesc(AppSitePriceRules::getOriginalPrice)).getOriginalPrice())
+                        .setSellingPrice(appSitePriceRulesMapper.selectOne(Wrappers.<AppSitePriceRules>lambdaQuery()
+                                .eq(AppSitePriceRules::getSitePlaceId, appSitePlace.getId())
+                                .last("limit 1").orderByDesc(AppSitePriceRules::getSellingPrice)).getSellingPrice())
+                        .setCategory(getCategoryName(appSitePlace.getCategoryId()));
+                placeInfoMsgVOS.add(placeInfoMsgVO);
             });
             placeInfo.setPlaceInfoMsgVO(placeInfoMsgVOS);
             return placeInfo;

+ 1 - 1
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/vo/PlaceInfoVO.java

@@ -20,7 +20,7 @@ public class PlaceInfoVO {
     @Schema(description = "好评率")
     private BigDecimal goodRate;
     @Schema(description = "是否营业")
-    private Boolean isOpen;
+    private Boolean runStatus;
     @Schema(description = "封面")
     private String cover;
     @Schema(description = "地址")

+ 9 - 8
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/entity/AppSitePriceRules.java

@@ -1,19 +1,20 @@
 package org.jeecg.modules.system.app.entity;
 
-import java.io.Serializable;
-import java.util.Date;
-import java.math.BigDecimal;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.annotation.TableLogic;
-import lombok.Data;
+import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
-import org.springframework.format.annotation.DateTimeFormat;
-import org.jeecgframework.poi.excel.annotation.Excel;
 import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
 
 /**
  * @Description: 场地价格规则表
@@ -22,7 +23,7 @@ import lombok.experimental.Accessors;
  * @Version: V1.0
  */
 @Data
-@TableName("nm_site_peice_rules")
+@TableName("nm_site_price_rules")
 @Accessors(chain = true)
 @EqualsAndHashCode(callSuper = false)
 @Schema(description="场地价格规则表")

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

@@ -2,6 +2,6 @@
 <!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.AppCoursesPriceRulesMapper">
     <select id="selectRuleIdsByCourseId" resultType="string">
-        SELECT id FROM app_courses_price_rules WHERE courses_id = #{coursesId}
+        SELECT id FROM nm_courses_price_rules WHERE courses_id = #{coursesId}
     </select>
 </mapper>

+ 4 - 3
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/mapper/xml/AppSiteMapper.xml

@@ -63,15 +63,16 @@
     <select id="getPlaceInfo" resultType="org.jeecg.modules.app.vo.PlaceInfoVO">
         SELECT
             a.id,
-            b.depart_name,
+            b.depart_name AS name,
             a.good_rate,
             a.cover,
-            b.address,
+            a.address,
             a.type,
             a.facility,
+            a.run_status AS runStatus,
             a.teaching_day,
             a.no_teaching_day,
-            b.mobile,
+            b.mobile AS phone,
             a.video
         FROM
             nm_site a

+ 13 - 5
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/mapper/xml/AppSitePlaceMapper.xml

@@ -4,13 +4,21 @@
     <select id="getPlaceInfoNoFixation" resultType="org.jeecg.modules.app.vo.PlaceInfoVO$PlaceInfoGymMsgVO">
         SELECT
             a.id,
-            a.`name`,
+            a.name,
             a.advance_time,
-            b.original_price,
-            b.selling_price
+            MIN(b.original_price) AS original_price,
+            MAX(b.selling_price) AS selling_price
         FROM
             nm_site_place a
-                LEFT JOIN nm_site_peice_rules b ON a.id = b.site_place_id WHERE a.site_id = #{id} AND a.type != 0 ORDER BY
-            b.selling_price ASC
+                LEFT JOIN nm_site_price_rules b ON a.id = b.site_place_id
+        WHERE
+            a.site_id = #{id}
+          AND a.type != 0
+        GROUP BY
+            a.id,
+            a.name,
+            a.advance_time
+        ORDER BY
+            selling_price ASC;
     </select>
 </mapper>

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

@@ -3,52 +3,58 @@
 <mapper namespace="org.jeecg.modules.system.app.mapper.AppSitePriceRulesMapper">
     <select id="theGymnasiumIsCharteredInfo" resultType="org.jeecg.modules.app.vo.PlaceInfoVO$theGymnasiumIsCharteredInfoVO">
         WITH RECURSIVE dates AS (
-            SELECT
-                0 AS offset_day,
-                CURDATE() AS date_val,
-                DAYOFWEEK(CURDATE()) - 1 AS dow
-            UNION ALL
-            SELECT
-                offset_day + 1,
-                date_val + INTERVAL 1 DAY,
-            DAYOFWEEK(date_val + INTERVAL 1 DAY) - 1
-        FROM dates
-        WHERE offset_day &lt; 6
-            ),
-            earliest_slots AS (
         SELECT
-            sp.site_id,
-            r.start_time,
-            r.end_time,
-            r.selling_price,
-            r.day_of_week,
-            ROW_NUMBER() OVER (PARTITION BY r.day_of_week ORDER BY r.start_time) AS rn
-        FROM nm_site_peice_rules r
-            LEFT JOIN nm_site_place sp ON r.site_place_id = sp.id
-        WHERE r.view_status = 0
-          AND r.org_code = #{orgCode}
-          AND r.category_id = #{categoryId}
-            )
+        1 AS offset_day,
+        CURDATE() AS date_val,
+        DAYOFWEEK(
+        CURDATE()) - 1 AS dow UNION ALL
         SELECT
-            es.site_id AS id,
-            es.start_time AS startTime,
-            CONCAT(es.start_time, '-', es.end_time) AS time_range,
-            es.selling_price AS sellingPrice,
-            CASE
-                WHEN dm.offset_day = 0 THEN CONCAT('今天(', DATE_FORMAT(dm.date_val, '%m-%d'), ')')
-                WHEN dm.offset_day = 1 THEN CONCAT('明天(', DATE_FORMAT(dm.date_val, '%m-%d'), ')')
-                WHEN dm.offset_day = 2 THEN CONCAT('后天(', DATE_FORMAT(dm.date_val, '%m-%d'), ')')
-                ELSE CONCAT(
-                        ELT(dm.dow + 1, '星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日'),
-                        '(', DATE_FORMAT(dm.date_val, '%m-%d'), ')'
-                     )
-                END AS date_label
-        FROM earliest_slots es
-                 JOIN (
-            SELECT offset_day, date_val, dow
-            FROM dates
-        ) AS dm ON es.day_of_week = dm.dow
-        WHERE es.rn = 1
-        ORDER BY dm.offset_day;
+        offset_day + 1,
+        date_val + INTERVAL 1 DAY,
+        DAYOFWEEK( date_val + INTERVAL 0 DAY )
+        FROM
+        dates
+        WHERE
+        offset_day &lt; 7
+        ),
+        earliest_slots AS (
+        SELECT
+        sp.site_id,
+        r.start_time,
+        r.end_time,
+        r.selling_price,
+        r.day_of_week,
+        ROW_NUMBER() OVER ( PARTITION BY r.day_of_week ORDER BY r.start_time ) AS rn
+        FROM
+        nm_site_price_rules r
+        LEFT JOIN nm_site_place sp ON r.site_place_id = sp.id
+        WHERE
+        r.view_status = 0
+        ) SELECT
+        es.site_id AS id,
+        es.start_time AS startTime,
+        CONCAT( es.start_time, '-', es.end_time ) AS time_range,
+        es.selling_price AS sellingPrice,
+        CASE
+
+        WHEN dm.offset_day = 1 THEN
+        CONCAT( '今  天 (', DATE_FORMAT( dm.date_val, '%m-%d' ), ')' )
+        WHEN dm.offset_day = 2 THEN
+        CONCAT( '明  天 (', DATE_FORMAT( dm.date_val, '%m-%d' ), ')' )
+        WHEN dm.offset_day = 3 THEN
+        CONCAT( '后  天 (', DATE_FORMAT( dm.date_val, '%m-%d' ), ')' ) ELSE CONCAT(
+        ELT( dm.dow, '星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日' ),
+        '(',
+        DATE_FORMAT( dm.date_val, '%m-%d' ),
+        ')'
+        )
+        END AS date_label
+        FROM
+        earliest_slots es
+        JOIN ( SELECT offset_day, date_val, dow FROM dates ) AS dm ON es.day_of_week = dm.dow
+        WHERE
+        es.rn = 1
+        ORDER BY
+        dm.offset_day;
     </select>
 </mapper>