From 0819502afaf98b16dbcb08dfba0a6dc31c69631a Mon Sep 17 00:00:00 2001 From: 670788339 <670788339@qq.com> Date: Wed, 29 Oct 2025 15:40:58 +0800 Subject: [PATCH] =?UTF-8?q?searchTags=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xboe/module/course/api/CourseTagApi.java | 22 +++++-- .../xboe/module/course/dao/CourseTagDao.java | 62 +++++++++++++++++++ .../course/service/ICourseTagService.java | 2 +- .../service/impl/CourseTagServiceImpl.java | 7 ++- 4 files changed, 85 insertions(+), 8 deletions(-) diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/course/api/CourseTagApi.java b/servers/boe-server-all/src/main/java/com/xboe/module/course/api/CourseTagApi.java index b57826e0..e8263cc1 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/course/api/CourseTagApi.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/course/api/CourseTagApi.java @@ -23,6 +23,7 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; import java.util.ArrayList; import java.util.List; @@ -45,7 +46,7 @@ public class CourseTagApi extends ApiBaseController { * @param courseTagQueryDto * @return */ - @RequestMapping(value="/page",method= {RequestMethod.GET,RequestMethod.POST}) + /* @RequestMapping(value="/page",method= {RequestMethod.GET,RequestMethod.POST}) public JsonResponse> find(Pagination pager, CourseTagQueryDto courseTagQueryDto){ List filters=new ArrayList(); OrderCondition order = null; @@ -79,18 +80,20 @@ public class CourseTagApi extends ApiBaseController { PageList list=courseTagService.query(pager.getPageIndex(),pager.getPageSize(),filters,order); return success(list); } - +*/ /** * 修改指定id的课程标签的公共属性 * @param id * @param isPublic * @return */ +/* @RequestMapping(value="/changePublicStatus",method= RequestMethod.POST) public JsonResponse changePublicStatus(Long id,Boolean isPublic){ courseTagService.changePublicStatus(id,isPublic); return success(null); } +*/ /** * 修改指定id的课程标签的热点属性 @@ -98,17 +101,18 @@ public class CourseTagApi extends ApiBaseController { * @param isHot * @return */ - @RequestMapping(value="/changeHotStatus",method= RequestMethod.POST) +/* @RequestMapping(value="/changeHotStatus",method= RequestMethod.POST) public JsonResponse changeHotStatus(Long id,Boolean isHot){ courseTagService.changeHotStatus(id,isHot); return success(null); - } + }*/ /** * 分页查询:指定id的标签关联的所有课程 * @param courseTagQueryDto * @return */ +/* @RequestMapping(value="/showCourseByTag",method= RequestMethod.POST) public JsonResponse> showCourseByTag(Pagination pager, CourseTagQueryDto courseTagQueryDto){ PageList list=null; @@ -119,11 +123,13 @@ public class CourseTagApi extends ApiBaseController { } return success(list); } +*/ /** * 解除指定id的课程和某个标签之间的关联关系 * @return */ +/* @RequestMapping(value="/unbind",method= RequestMethod.POST) public JsonResponse unbindCourseTagRelation(CourseTagRelationDto courseTagRelationDto){ if (courseTagRelationDto!=null){ @@ -132,15 +138,19 @@ public class CourseTagApi extends ApiBaseController { } return error("解绑失败!"); } +*/ /** * 模糊检索标签 * @return 符合检索条件的所有公共标签 */ @RequestMapping(value="/searchTags",method= RequestMethod.POST) - public JsonResponse> searchTags(String tagName){ + public JsonResponse> searchTags(String tagName,String typeId ,HttpServletRequest request){ + + CurrentUser cuser = getCurrent(); + String aid = cuser.getAccountId(); if (StringUtils.isNotBlank(tagName)){ - List courseTagList = courseTagService.searchTags(tagName); + List courseTagList = courseTagService.searchTags(tagName,aid,typeId); return success(courseTagList); } return error("服务器端异常!"); 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 c8516994..306690ea 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 @@ -104,4 +104,66 @@ public class CourseTagDao extends BaseDao { CourseTag courseTag = this.findOne((FieldFilters.eq("tag_name", tagName))); return courseTag; } + + public List searchTags(String tagName, String userId, String typeId) { + StringBuilder sql = new StringBuilder(); + sql.append("SELECT id, tag_name, sys_create_time "); + sql.append("FROM ( "); + sql.append(" -- 第一个查询:非公开标签 "); + sql.append(" SELECT id, tag_name, sys_create_time "); + sql.append(" FROM boe_course_tag "); + sql.append(" WHERE deleted = 0 AND is_public = 0 "); + + if (StringUtils.isNotBlank(tagName)) { + sql.append(" AND tag_name LIKE '%").append(tagName).append("%' "); + } + + sql.append(" UNION ALL "); + sql.append(" -- 第二个查询:公开标签 "); + sql.append(" SELECT t.id, t.tag_name, 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 "); + sql.append(" AND r.sys_create_aid = ? "); + + if (StringUtils.isNotBlank(tagName)) { + sql.append(" AND t.tag_name LIKE '%").append(tagName).append("%' "); + } + + sql.append(" GROUP BY t.id, t.tag_name, t.sys_create_time "); + sql.append(") AS all_tags "); + sql.append("ORDER BY "); + + // 根据typeId参数决定是否执行特殊排序 + if (StringUtils.isNotBlank(typeId)) { + sql.append(" -- 第一排序:指定tag_id在前列 "); + sql.append(" CASE WHEN id IN ( "); + sql.append(" SELECT tag_id "); + sql.append(" FROM boe_course_type_tag_relation "); + sql.append(" WHERE deleted = 0 "); + sql.append(" AND (sys_type1 = ? "); + sql.append(" OR sys_type2 = ? "); + sql.append(" OR sys_type3 = ?) "); + sql.append(" GROUP BY tag_id "); + sql.append(" ) THEN 0 ELSE 1 END, "); + } + + sql.append(" -- 第二排序:按创建时间倒序 "); + sql.append(" sys_create_time DESC"); + + javax.persistence.Query query = entityManager.createNativeQuery(sql.toString(), CourseTag.class); + query.setParameter(1, Long.valueOf(userId)); + + // 如果typeId不为空,设置额外的参数 + if (StringUtils.isNotBlank(typeId)) { + query.setParameter(2, Long.valueOf(typeId)); + query.setParameter(3, Long.valueOf(typeId)); + query.setParameter(4, Long.valueOf(typeId)); + } + + return query.getResultList(); + } + + + } diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/course/service/ICourseTagService.java b/servers/boe-server-all/src/main/java/com/xboe/module/course/service/ICourseTagService.java index b63679db..41e0abbd 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/course/service/ICourseTagService.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/course/service/ICourseTagService.java @@ -65,7 +65,7 @@ public interface ICourseTagService { * @param tagName * @return 符合检索条件的所有公共标签 */ - List searchTags(String tagName); + List searchTags(String tagName,String userId,String typeId); /** * 创建新标签,并与当前课程绑定 diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/course/service/impl/CourseTagServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/module/course/service/impl/CourseTagServiceImpl.java index fc70f239..543e54ca 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/course/service/impl/CourseTagServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/course/service/impl/CourseTagServiceImpl.java @@ -164,7 +164,6 @@ public class CourseTagServiceImpl implements ICourseTagService { * @param tagName * @return 符合检索条件的所有公共标签 */ - @Override public List searchTags(String tagName){ QueryBuilder query=QueryBuilder.from(CourseTag.class); List filters = new ArrayList<>(); @@ -176,6 +175,12 @@ public class CourseTagServiceImpl implements ICourseTagService { return courseTagList; } + @Override + public List searchTags(String tagName,String userId,String typeId){ + List tagList = courseTagDao.searchTags(tagName,userId,typeId); + return tagList; + } + /** * 创建新标签,并与指定课程绑定 * @param courseTagRelationDto