标签管理选择标签没有进行关联,以及热点标签超过十个没有判断

This commit is contained in:
王卓煜
2025-09-18 09:44:51 +08:00
parent 29a296577d
commit 2da2112993
5 changed files with 62 additions and 15 deletions

View File

@@ -99,9 +99,8 @@ public class CourseTagApi extends ApiBaseController {
* @return * @return
*/ */
@RequestMapping(value="/changeHotStatus",method= RequestMethod.POST) @RequestMapping(value="/changeHotStatus",method= RequestMethod.POST)
public JsonResponse<Void> changeHotStatus(Long id,Boolean isHot){ public JsonResponse<Boolean> changeHotStatus(Long id,Boolean isHot){
courseTagService.changeHotStatus(id,isHot); return courseTagService.changeHotStatus(id,isHot);
return success(null);
} }
/** /**

View File

@@ -113,4 +113,12 @@ public class CourseTagRelationDao extends BaseDao<CourseTagRelation> {
.collect(Collectors.toList()); .collect(Collectors.toList());
return new PageList<CourseTagRelationDto>(list,totalresults!=null?totalresults.size():0); return new PageList<CourseTagRelationDto>(list,totalresults!=null?totalresults.size():0);
} }
public boolean countHotTags() {
String sql = "SELECT COUNT(*) FROM boe_course_tag WHERE is_hot = 1";
Query query = entityManager.createNativeQuery(sql);
Object result = query.getSingleResult();
long count = Long.parseLong(result.toString());
return count >= 10;
}
} }

View File

@@ -2,16 +2,10 @@ package com.xboe.module.course.service;
import com.xboe.common.OrderCondition; import com.xboe.common.OrderCondition;
import com.xboe.common.PageList; import com.xboe.common.PageList;
import com.xboe.core.CurrentUser;
import com.xboe.core.JsonResponse; import com.xboe.core.JsonResponse;
import com.xboe.core.orm.IFieldFilter; import com.xboe.core.orm.IFieldFilter;
import com.xboe.module.article.entity.Article;
import com.xboe.module.course.dto.CourseTagQueryDto;
import com.xboe.module.course.dto.CourseTagRelationDto; import com.xboe.module.course.dto.CourseTagRelationDto;
import com.xboe.module.course.entity.CourseTag; import com.xboe.module.course.entity.CourseTag;
import com.xboe.module.course.entity.CourseTagRelation;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import java.util.List; import java.util.List;
@@ -48,11 +42,12 @@ public interface ICourseTagService {
/** /**
* 修改指定id的课程标签的热点属性 * 修改指定id的课程标签的热点属性
*
* @param id * @param id
* @param isHot * @param isHot
* @return * @return
*/ */
void changeHotStatus(Long id,Boolean isHot); JsonResponse<Boolean> changeHotStatus(Long id, Boolean isHot);
/** /**
* 解除指定id的课程和某个标签之间的关联关系 * 解除指定id的课程和某个标签之间的关联关系
@@ -89,4 +84,6 @@ public interface ICourseTagService {
List<CourseTag> getTagsByIds(String id); List<CourseTag> getTagsByIds(String id);
CourseTag getTagByName(String tagName); CourseTag getTagByName(String tagName);
void bindTag(String id, String tags);
} }

View File

@@ -18,6 +18,7 @@ import javax.management.Query;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import com.xboe.api.ThirdApi; import com.xboe.api.ThirdApi;
import com.xboe.core.orm.*; import com.xboe.core.orm.*;
import com.xboe.module.course.service.ICourseTagService;
import com.xboe.school.study.dao.StudyCourseDao; import com.xboe.school.study.dao.StudyCourseDao;
import com.xboe.school.study.entity.StudyCourse; import com.xboe.school.study.entity.StudyCourse;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
@@ -98,7 +99,8 @@ public class CourseServiceImpl implements ICourseService {
@Resource @Resource
private CourseHRBPAuditDao courseHRBPAuditDao; private CourseHRBPAuditDao courseHRBPAuditDao;
@Resource
private ICourseTagService courseTagService;
@Resource @Resource
private SysLogAuditDao logAuditDao;//审核日志记录 private SysLogAuditDao logAuditDao;//审核日志记录
@@ -1022,7 +1024,9 @@ public class CourseServiceImpl implements ICourseService {
publishUtil.removeByDocId(c.getFullTextId()); publishUtil.removeByDocId(c.getFullTextId());
} }
// 添加课程对应的标签
String tags = full.getCourse().getTags();
courseTagService.bindTag(c.getId(), tags);
} }
@Override @Override

View File

@@ -2,6 +2,7 @@ package com.xboe.module.course.service.impl;
import com.xboe.common.OrderCondition; import com.xboe.common.OrderCondition;
import com.xboe.common.PageList; import com.xboe.common.PageList;
import com.xboe.core.JsonResponse;
import com.xboe.core.orm.FieldFilters; import com.xboe.core.orm.FieldFilters;
import com.xboe.core.orm.IFieldFilter; import com.xboe.core.orm.IFieldFilter;
import com.xboe.core.orm.QueryBuilder; import com.xboe.core.orm.QueryBuilder;
@@ -14,7 +15,6 @@ import com.xboe.module.course.entity.Course;
import com.xboe.module.course.entity.CourseTag; import com.xboe.module.course.entity.CourseTag;
import com.xboe.module.course.entity.CourseTagRelation; import com.xboe.module.course.entity.CourseTagRelation;
import com.xboe.module.course.entity.CourseTypeTagRelation; import com.xboe.module.course.entity.CourseTypeTagRelation;
import com.xboe.module.course.service.ICourseService;
import com.xboe.module.course.service.ICourseTagService; import com.xboe.module.course.service.ICourseTagService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
@@ -40,7 +40,6 @@ public class CourseTagServiceImpl implements ICourseTagService {
PublishCourseUtil publishUtil; PublishCourseUtil publishUtil;
@Resource @Resource
private CourseTagRelationDao courseTagRelationDao; private CourseTagRelationDao courseTagRelationDao;
@Resource @Resource
private CourseTypeTagRelationDao courseTypeTagRelationDao; private CourseTypeTagRelationDao courseTypeTagRelationDao;
@Resource @Resource
@@ -106,18 +105,32 @@ public class CourseTagServiceImpl implements ICourseTagService {
/** /**
* 修改指定id的课程标签的热点属性 * 修改指定id的课程标签的热点属性
*
* @param id * @param id
* @param isHot * @param isHot
* @return * @return
*/ */
@Override @Override
public void changeHotStatus(Long id, Boolean isHot) { public JsonResponse<Boolean> changeHotStatus(Long id, Boolean isHot) {
// 当标签切换为热点标签时才会判断,超过十个热点标签则禁止设置
JsonResponse<Boolean> objectJsonResponse = new JsonResponse<>();
if (isHot){
if (courseTagRelationDao.countHotTags()){
objectJsonResponse.setStatus(400);
objectJsonResponse.setMessage("超过十个热点标签,无法进行设置");
objectJsonResponse.setResult(false);
return objectJsonResponse;
}
}
CourseTag courseTag = courseTagDao.findOne(FieldFilters.eq("id", String.valueOf(id))); CourseTag courseTag = courseTagDao.findOne(FieldFilters.eq("id", String.valueOf(id)));
if (courseTag!=null){ if (courseTag!=null){
courseTag.setIsHot(isHot); courseTag.setIsHot(isHot);
courseTag.setLastSetHotTime(isHot?LocalDateTime.now():null); courseTag.setLastSetHotTime(isHot?LocalDateTime.now():null);
courseTagDao.update(courseTag); courseTagDao.update(courseTag);
} }
objectJsonResponse.setStatus(200);
objectJsonResponse.setMessage("修改成功");
return objectJsonResponse;
} }
/** /**
@@ -243,6 +256,32 @@ public class CourseTagServiceImpl implements ICourseTagService {
return courseTag; return courseTag;
} }
@Override
public void bindTag(String id, String tags) {
// 将tags转换为数组
String[] tagIds = tags.split(",");
List<Long> tagIdList = new ArrayList<>();
for (String tagId : tagIds){
tagIdList.add(Long.valueOf(tagId));
}
for (Long tagId : tagIdList){
// 查询课程是否绑定了标签
QueryBuilder query=QueryBuilder.from(CourseTagRelation.class);
List<IFieldFilter> filters = new ArrayList<>();
filters.add(FieldFilters.eq("courseId",Long.valueOf(id)));
filters.add(FieldFilters.eq("tagId",Long.valueOf(tagId)));
query.addFilters(filters);
List<CourseTagRelation> courseTagRelationList = courseTagRelationDao.findList(query.builder());
// 如果没有绑定标签,那么就进行绑定
if (courseTagRelationList==null || courseTagRelationList.size()==0){
CourseTagRelation courseTagRelation = new CourseTagRelation();
courseTagRelation.setTagId(Long.valueOf(tagId));
courseTagRelation.setCourseId(Long.valueOf(id));
courseTagRelationDao.save(courseTagRelation);
}
}
}
@Override @Override
public CourseTag getTagByName(String tagName) { public CourseTag getTagByName(String tagName) {
CourseTag courseTag = courseTagDao.getTagByName(tagName); CourseTag courseTag = courseTagDao.getTagByName(tagName);