mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/per-boe/java-servers.git
synced 2025-12-11 20:06:51 +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 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("服务器端异常!");
|
||||||
|
|||||||
@@ -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();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建新标签,并与当前课程绑定
|
* 创建新标签,并与当前课程绑定
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user