searchTags调整

This commit is contained in:
670788339
2025-10-29 15:40:58 +08:00
parent 8c02b77724
commit 0819502afa
4 changed files with 85 additions and 8 deletions

View File

@@ -23,6 +23,7 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@@ -45,7 +46,7 @@ public class CourseTagApi extends ApiBaseController {
* @param courseTagQueryDto * @param courseTagQueryDto
* @return * @return
*/ */
@RequestMapping(value="/page",method= {RequestMethod.GET,RequestMethod.POST}) /* @RequestMapping(value="/page",method= {RequestMethod.GET,RequestMethod.POST})
public JsonResponse<PageList<CourseTag>> find(Pagination pager, CourseTagQueryDto courseTagQueryDto){ public JsonResponse<PageList<CourseTag>> find(Pagination pager, CourseTagQueryDto courseTagQueryDto){
List<IFieldFilter> filters=new ArrayList<IFieldFilter>(); List<IFieldFilter> filters=new ArrayList<IFieldFilter>();
OrderCondition order = null; OrderCondition order = null;
@@ -79,18 +80,20 @@ public class CourseTagApi extends ApiBaseController {
PageList<CourseTag> list=courseTagService.query(pager.getPageIndex(),pager.getPageSize(),filters,order); PageList<CourseTag> list=courseTagService.query(pager.getPageIndex(),pager.getPageSize(),filters,order);
return success(list); return success(list);
} }
*/
/** /**
* 修改指定id的课程标签的公共属性 * 修改指定id的课程标签的公共属性
* @param id * @param id
* @param isPublic * @param isPublic
* @return * @return
*/ */
/*
@RequestMapping(value="/changePublicStatus",method= RequestMethod.POST) @RequestMapping(value="/changePublicStatus",method= RequestMethod.POST)
public JsonResponse<Void> changePublicStatus(Long id,Boolean isPublic){ public JsonResponse<Void> changePublicStatus(Long id,Boolean isPublic){
courseTagService.changePublicStatus(id,isPublic); courseTagService.changePublicStatus(id,isPublic);
return success(null); return success(null);
} }
*/
/** /**
* 修改指定id的课程标签的热点属性 * 修改指定id的课程标签的热点属性
@@ -98,17 +101,18 @@ public class CourseTagApi extends ApiBaseController {
* @param isHot * @param isHot
* @return * @return
*/ */
@RequestMapping(value="/changeHotStatus",method= RequestMethod.POST) /* @RequestMapping(value="/changeHotStatus",method= RequestMethod.POST)
public JsonResponse<Void> changeHotStatus(Long id,Boolean isHot){ public JsonResponse<Void> changeHotStatus(Long id,Boolean isHot){
courseTagService.changeHotStatus(id,isHot); courseTagService.changeHotStatus(id,isHot);
return success(null); return success(null);
} }*/
/** /**
* 分页查询指定id的标签关联的所有课程 * 分页查询指定id的标签关联的所有课程
* @param courseTagQueryDto * @param courseTagQueryDto
* @return * @return
*/ */
/*
@RequestMapping(value="/showCourseByTag",method= RequestMethod.POST) @RequestMapping(value="/showCourseByTag",method= RequestMethod.POST)
public JsonResponse<PageList<CourseTagRelationDto>> showCourseByTag(Pagination pager, CourseTagQueryDto courseTagQueryDto){ public JsonResponse<PageList<CourseTagRelationDto>> showCourseByTag(Pagination pager, CourseTagQueryDto courseTagQueryDto){
PageList<CourseTagRelationDto> list=null; PageList<CourseTagRelationDto> list=null;
@@ -119,11 +123,13 @@ public class CourseTagApi extends ApiBaseController {
} }
return success(list); return success(list);
} }
*/
/** /**
* 解除指定id的课程和某个标签之间的关联关系 * 解除指定id的课程和某个标签之间的关联关系
* @return * @return
*/ */
/*
@RequestMapping(value="/unbind",method= RequestMethod.POST) @RequestMapping(value="/unbind",method= RequestMethod.POST)
public JsonResponse<Void> unbindCourseTagRelation(CourseTagRelationDto courseTagRelationDto){ public JsonResponse<Void> unbindCourseTagRelation(CourseTagRelationDto courseTagRelationDto){
if (courseTagRelationDto!=null){ if (courseTagRelationDto!=null){
@@ -132,15 +138,19 @@ public class CourseTagApi extends ApiBaseController {
} }
return error("解绑失败!"); return error("解绑失败!");
} }
*/
/** /**
* 模糊检索标签 * 模糊检索标签
* @return 符合检索条件的所有公共标签 * @return 符合检索条件的所有公共标签
*/ */
@RequestMapping(value="/searchTags",method= RequestMethod.POST) @RequestMapping(value="/searchTags",method= RequestMethod.POST)
public JsonResponse<List<CourseTag>> searchTags(String tagName){ public JsonResponse<List<CourseTag>> searchTags(String tagName,String typeId ,HttpServletRequest request){
CurrentUser cuser = getCurrent();
String aid = cuser.getAccountId();
if (StringUtils.isNotBlank(tagName)){ if (StringUtils.isNotBlank(tagName)){
List<CourseTag> courseTagList = courseTagService.searchTags(tagName); List<CourseTag> courseTagList = courseTagService.searchTags(tagName,aid,typeId);
return success(courseTagList); return success(courseTagList);
} }
return error("服务器端异常!"); return error("服务器端异常!");

View File

@@ -104,4 +104,66 @@ public class CourseTagDao extends BaseDao<CourseTag> {
CourseTag courseTag = this.findOne((FieldFilters.eq("tag_name", tagName))); CourseTag courseTag = this.findOne((FieldFilters.eq("tag_name", tagName)));
return courseTag; return courseTag;
} }
public List<CourseTag> 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();
}
} }

View File

@@ -65,7 +65,7 @@ public interface ICourseTagService {
* @param tagName * @param tagName
* @return 符合检索条件的所有公共标签 * @return 符合检索条件的所有公共标签
*/ */
List<CourseTag> searchTags(String tagName); List<CourseTag> searchTags(String tagName,String userId,String typeId);
/** /**
* 创建新标签,并与当前课程绑定 * 创建新标签,并与当前课程绑定

View File

@@ -164,7 +164,6 @@ public class CourseTagServiceImpl implements ICourseTagService {
* @param tagName * @param tagName
* @return 符合检索条件的所有公共标签 * @return 符合检索条件的所有公共标签
*/ */
@Override
public List<CourseTag> searchTags(String tagName){ public List<CourseTag> searchTags(String tagName){
QueryBuilder query=QueryBuilder.from(CourseTag.class); QueryBuilder query=QueryBuilder.from(CourseTag.class);
List<IFieldFilter> filters = new ArrayList<>(); List<IFieldFilter> filters = new ArrayList<>();
@@ -176,6 +175,12 @@ public class CourseTagServiceImpl implements ICourseTagService {
return courseTagList; return courseTagList;
} }
@Override
public List<CourseTag> searchTags(String tagName,String userId,String typeId){
List<CourseTag> tagList = courseTagDao.searchTags(tagName,userId,typeId);
return tagList;
}
/** /**
* 创建新标签,并与指定课程绑定 * 创建新标签,并与指定课程绑定
* @param courseTagRelationDto * @param courseTagRelationDto