From 46fefd3fe05ebe8028b3cf2e28f506008568d552 Mon Sep 17 00:00:00 2001 From: 670788339 <670788339@qq.com> Date: Wed, 29 Oct 2025 17:20:18 +0800 Subject: [PATCH] =?UTF-8?q?searchTags=E8=B0=83=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xboe/module/course/dao/CourseTagDao.java | 38 ++++++++++++++----- 1 file changed, 29 insertions(+), 9 deletions(-) diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/course/dao/CourseTagDao.java b/servers/boe-server-all/src/main/java/com/xboe/module/course/dao/CourseTagDao.java index 2a5249f5..0f262a3d 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/course/dao/CourseTagDao.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/course/dao/CourseTagDao.java @@ -126,10 +126,10 @@ public class CourseTagDao extends BaseDao { StringBuilder sql = new StringBuilder(); List parameters = new ArrayList<>(); - // 查询所有必要字段,保持两个UNION查询字段一致 - sql.append("SELECT id, tag_name, sys_create_time, is_public, is_hot, last_set_hot_time, deleted, sys_create_aid, sys_update_aid, sys_update_time "); + // 只查询实际存在的字段 + sql.append("SELECT id, tag_name, is_public, is_hot, use_count, last_set_public_time, last_set_hot_time, deleted, sys_create_time "); sql.append("FROM ( "); - sql.append(" SELECT id, tag_name, sys_create_time, is_public, is_hot, last_set_hot_time, deleted, sys_create_aid, sys_update_aid, sys_update_time "); + sql.append(" SELECT id, tag_name, is_public, is_hot, use_count, last_set_public_time, last_set_hot_time, deleted, sys_create_time "); sql.append(" FROM boe_course_tag "); sql.append(" WHERE deleted = 0 AND is_public = 0 "); @@ -139,7 +139,7 @@ public class CourseTagDao extends BaseDao { } sql.append(" UNION ALL "); - sql.append(" SELECT t.id, t.tag_name, t.sys_create_time, t.is_public, t.is_hot, t.last_set_hot_time, t.deleted, t.sys_create_aid, t.sys_update_aid, t.sys_update_time "); + sql.append(" SELECT t.id, t.tag_name, t.is_public, t.is_hot, t.use_count, t.last_set_public_time, t.last_set_hot_time, t.deleted, t.sys_create_time "); sql.append(" FROM boe_course_tag_relation r "); sql.append(" INNER JOIN boe_course_tag t ON r.tag_id = t.id "); sql.append(" WHERE r.deleted = 0 AND t.deleted = 0 AND t.is_public = 1 "); @@ -154,8 +154,7 @@ public class CourseTagDao extends BaseDao { parameters.add("%" + tagName + "%"); } - // 保留GROUP BY以避免重复数据,但确保SELECT字段与GROUP BY字段一致 - sql.append(" GROUP BY t.id, t.tag_name, t.sys_create_time, t.is_public, t.is_hot, t.last_set_hot_time, t.deleted, t.sys_create_aid, t.sys_update_aid, t.sys_update_time "); + sql.append(" GROUP BY t.id, t.tag_name, t.is_public, t.is_hot, t.use_count, t.last_set_public_time, t.last_set_hot_time, t.deleted, t.sys_create_time "); sql.append(") AS all_tags "); sql.append("ORDER BY "); @@ -167,7 +166,7 @@ public class CourseTagDao extends BaseDao { sql.append(" AND (sys_type1 = ? "); sql.append(" OR sys_type2 = ? "); sql.append(" OR sys_type3 = ?) "); - sql.append(" GROUP BY tag_id "); // 内部查询仍需要GROUP BY + sql.append(" GROUP BY tag_id "); sql.append(" ) THEN 0 ELSE 1 END, "); parameters.add(Long.valueOf(typeId)); parameters.add(Long.valueOf(typeId)); @@ -176,13 +175,34 @@ public class CourseTagDao extends BaseDao { sql.append(" sys_create_time DESC"); - javax.persistence.Query query = entityManager.createNativeQuery(sql.toString(), CourseTag.class); + // 不使用实体类映射,手动处理结果集 + Query query = entityManager.createNativeQuery(sql.toString()); for (int i = 0; i < parameters.size(); i++) { query.setParameter(i + 1, parameters.get(i)); } - return query.getResultList(); + @SuppressWarnings("unchecked") + List results = query.getResultList(); + List courseTags = new ArrayList<>(); + + for (Object[] result : results) { + CourseTag tag = new CourseTag(); + // 设置基本字段 + if (result[0] != null) tag.setId(String.valueOf(result[0])); + if (result[1] != null) tag.setTagName(String.valueOf(result[1])); + if (result[2] != null) tag.setIsPublic(Boolean.valueOf(String.valueOf(result[2]))); + if (result[3] != null) tag.setIsHot(Boolean.valueOf(String.valueOf(result[3]))); + if (result[4] != null) tag.setUseCount(Integer.valueOf(String.valueOf(result[4]))); +// if (result[5] != null) tag.setLastSetPublicTime((LocalDateTime) result[5]); +// if (result[6] != null) tag.setLastSetHotTime((LocalDateTime) result[6]); +// if (result[7] != null) tag.setDeleted(Boolean.valueOf(String.valueOf(result[7]))); +// if (result[8] != null) tag.setSysCreateTime((LocalDateTime) result[8]); + + courseTags.add(tag); + } + + return courseTags; }