Browse Source

feat(app):优化课程信息查询逻辑- 调整字段别名为大写以匹配数据库列名
- 优化 instructor_names 和 instructor_avatars 的排序逻辑
- 增加对 user_order 的处理以确保讲师顺序正确
- 添加精确的课程ID过滤条件提升查询准确性

SheepHy 1 month ago
parent
commit
0788412585

+ 29 - 27
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/mapper/xml/AppCoursesMapper.xml

@@ -39,12 +39,12 @@
     <select id="getCourseInfo" resultType="org.jeecg.modules.app.vo.CourseInfoVO">
         SELECT
             a.id,
-            a.name,
+            a.NAME,
             a.original_price,
             a.selling_price,
             a.cover,
             a.video,
-            b.name AS address,
+            b.NAME AS address,
             a.details,
             a.site_id,
             a.insure_ids,
@@ -62,31 +62,33 @@
             b.longitude,
             b.latitude,
             a.background_image
-        FROM nm_courses a
-                 LEFT JOIN nm_site b ON a.site_id = b.id
-                 LEFT JOIN (
-            SELECT courses_id, COUNT(id) AS class_hour_count
-            FROM nm_courses_price_rules
-            WHERE courses_id = #{id}
-            GROUP BY courses_id
-        ) c ON a.id = c.courses_id
-                 LEFT JOIN (
-            SELECT
-                su.course_id,
-                GROUP_CONCAT(DISTINCT su.realname SEPARATOR ',') AS instructor_names,
-                GROUP_CONCAT(DISTINCT su.avatar SEPARATOR ',') AS instructor_avatars
-            FROM (
-                     SELECT
-                         s.id AS course_id,
-                         u.realname,
-                         u.avatar
-                     FROM nm_courses s
-                              JOIN sys_user u ON FIND_IN_SET(u.id, s.user_id)
-                     WHERE s.id = #{id}
-                 ) su
-            GROUP BY su.course_id
-        ) d ON a.id = d.course_id
-        WHERE a.del_flag = 0
+        FROM
+            nm_courses a
+                LEFT JOIN nm_site b ON a.site_id = b.id
+                LEFT JOIN (SELECT courses_id, COUNT(id) AS class_hour_count FROM nm_courses_price_rules WHERE courses_id = #{id} GROUP BY courses_id) c ON a.id = c.courses_id
+                LEFT JOIN (
+                SELECT
+                    su.course_id,
+                    GROUP_CONCAT(su.realname ORDER BY su.user_order SEPARATOR ',') AS instructor_names,
+                    GROUP_CONCAT(su.avatar ORDER BY su.user_order SEPARATOR ',') AS instructor_avatars
+                FROM
+                    (
+                        SELECT
+                            s.id AS course_id,
+                            u.realname,
+                            u.avatar,
+                            FIND_IN_SET(u.id, s.user_id) AS user_order
+                        FROM
+                            nm_courses s
+                                JOIN sys_user u ON FIND_IN_SET(u.id, s.user_id)
+                        WHERE
+                            s.id = #{id}
+                    ) su
+                GROUP BY
+                    su.course_id
+            ) d ON a.id = d.course_id
+        WHERE
+            a.del_flag = 0
           AND a.id = #{id}
     </select>
     <select id="findByCourseList" resultType="org.jeecg.modules.app.vo.course.CourseResponseVo">