mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/per-boe/java-servers.git
synced 2025-12-11 03:46:50 +08:00
searchTags调整
This commit is contained in:
@@ -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<PageList<CourseTag>> find(Pagination pager, CourseTagQueryDto courseTagQueryDto){
|
||||
List<IFieldFilter> filters=new ArrayList<IFieldFilter>();
|
||||
OrderCondition order = null;
|
||||
@@ -79,18 +80,20 @@ public class CourseTagApi extends ApiBaseController {
|
||||
PageList<CourseTag> 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<Void> 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<Void> changeHotStatus(Long id,Boolean isHot){
|
||||
courseTagService.changeHotStatus(id,isHot);
|
||||
return success(null);
|
||||
}
|
||||
}*/
|
||||
|
||||
/**
|
||||
* 分页查询:指定id的标签关联的所有课程
|
||||
* @param courseTagQueryDto
|
||||
* @return
|
||||
*/
|
||||
/*
|
||||
@RequestMapping(value="/showCourseByTag",method= RequestMethod.POST)
|
||||
public JsonResponse<PageList<CourseTagRelationDto>> showCourseByTag(Pagination pager, CourseTagQueryDto courseTagQueryDto){
|
||||
PageList<CourseTagRelationDto> list=null;
|
||||
@@ -119,11 +123,13 @@ public class CourseTagApi extends ApiBaseController {
|
||||
}
|
||||
return success(list);
|
||||
}
|
||||
*/
|
||||
|
||||
/**
|
||||
* 解除指定id的课程和某个标签之间的关联关系
|
||||
* @return
|
||||
*/
|
||||
/*
|
||||
@RequestMapping(value="/unbind",method= RequestMethod.POST)
|
||||
public JsonResponse<Void> 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<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)){
|
||||
List<CourseTag> courseTagList = courseTagService.searchTags(tagName);
|
||||
List<CourseTag> courseTagList = courseTagService.searchTags(tagName,aid,typeId);
|
||||
return success(courseTagList);
|
||||
}
|
||||
return error("服务器端异常!");
|
||||
|
||||
@@ -104,4 +104,66 @@ public class CourseTagDao extends BaseDao<CourseTag> {
|
||||
CourseTag courseTag = this.findOne((FieldFilters.eq("tag_name", tagName)));
|
||||
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();
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -65,7 +65,7 @@ public interface ICourseTagService {
|
||||
* @param tagName
|
||||
* @return 符合检索条件的所有公共标签
|
||||
*/
|
||||
List<CourseTag> searchTags(String tagName);
|
||||
List<CourseTag> searchTags(String tagName,String userId,String typeId);
|
||||
|
||||
/**
|
||||
* 创建新标签,并与当前课程绑定
|
||||
|
||||
@@ -164,7 +164,6 @@ public class CourseTagServiceImpl implements ICourseTagService {
|
||||
* @param tagName
|
||||
* @return 符合检索条件的所有公共标签
|
||||
*/
|
||||
@Override
|
||||
public List<CourseTag> searchTags(String tagName){
|
||||
QueryBuilder query=QueryBuilder.from(CourseTag.class);
|
||||
List<IFieldFilter> filters = new ArrayList<>();
|
||||
@@ -176,6 +175,12 @@ public class CourseTagServiceImpl implements ICourseTagService {
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user