From 2da21129938f21f0e97082c3a3ef42de422fa116 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=8D=93=E7=85=9C?= <2210102150@qq.com> Date: Thu, 18 Sep 2025 09:44:51 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A0=87=E7=AD=BE=E7=AE=A1=E7=90=86=E9=80=89?= =?UTF-8?q?=E6=8B=A9=E6=A0=87=E7=AD=BE=E6=B2=A1=E6=9C=89=E8=BF=9B=E8=A1=8C?= =?UTF-8?q?=E5=85=B3=E8=81=94,=E4=BB=A5=E5=8F=8A=E7=83=AD=E7=82=B9?= =?UTF-8?q?=E6=A0=87=E7=AD=BE=E8=B6=85=E8=BF=87=E5=8D=81=E4=B8=AA=E6=B2=A1?= =?UTF-8?q?=E6=9C=89=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xboe/module/course/api/CourseTagApi.java | 5 +-- .../course/dao/CourseTagRelationDao.java | 8 ++++ .../course/service/ICourseTagService.java | 11 ++--- .../service/impl/CourseServiceImpl.java | 8 +++- .../service/impl/CourseTagServiceImpl.java | 45 +++++++++++++++++-- 5 files changed, 62 insertions(+), 15 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..4a7d2f0c 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 @@ -99,9 +99,8 @@ public class CourseTagApi extends ApiBaseController { * @return */ @RequestMapping(value="/changeHotStatus",method= RequestMethod.POST) - public JsonResponse changeHotStatus(Long id,Boolean isHot){ - courseTagService.changeHotStatus(id,isHot); - return success(null); + public JsonResponse changeHotStatus(Long id,Boolean isHot){ + return courseTagService.changeHotStatus(id,isHot); } /** diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/course/dao/CourseTagRelationDao.java b/servers/boe-server-all/src/main/java/com/xboe/module/course/dao/CourseTagRelationDao.java index 7cc78aef..926e8645 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/course/dao/CourseTagRelationDao.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/course/dao/CourseTagRelationDao.java @@ -113,4 +113,12 @@ public class CourseTagRelationDao extends BaseDao { .collect(Collectors.toList()); return new PageList(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; + } } 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..c4a3587b 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 @@ -2,16 +2,10 @@ package com.xboe.module.course.service; import com.xboe.common.OrderCondition; import com.xboe.common.PageList; -import com.xboe.core.CurrentUser; import com.xboe.core.JsonResponse; 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.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; @@ -48,11 +42,12 @@ public interface ICourseTagService { /** * 修改指定id的课程标签的热点属性 + * * @param id * @param isHot * @return */ - void changeHotStatus(Long id,Boolean isHot); + JsonResponse changeHotStatus(Long id, Boolean isHot); /** * 解除指定id的课程和某个标签之间的关联关系 @@ -89,4 +84,6 @@ public interface ICourseTagService { List getTagsByIds(String id); CourseTag getTagByName(String tagName); + + void bindTag(String id, String tags); } diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/course/service/impl/CourseServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/module/course/service/impl/CourseServiceImpl.java index 6e7e311b..b50f9d8e 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/course/service/impl/CourseServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/course/service/impl/CourseServiceImpl.java @@ -18,6 +18,7 @@ import javax.management.Query; import cn.hutool.core.collection.CollectionUtil; import com.xboe.api.ThirdApi; import com.xboe.core.orm.*; +import com.xboe.module.course.service.ICourseTagService; import com.xboe.school.study.dao.StudyCourseDao; import com.xboe.school.study.entity.StudyCourse; import org.apache.commons.lang3.StringUtils; @@ -98,7 +99,8 @@ public class CourseServiceImpl implements ICourseService { @Resource private CourseHRBPAuditDao courseHRBPAuditDao; - + @Resource + private ICourseTagService courseTagService; @Resource private SysLogAuditDao logAuditDao;//审核日志记录 @@ -1022,7 +1024,9 @@ public class CourseServiceImpl implements ICourseService { publishUtil.removeByDocId(c.getFullTextId()); } - + // 添加课程对应的标签 + String tags = full.getCourse().getTags(); + courseTagService.bindTag(c.getId(), tags); } @Override 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..5bb6ad01 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 @@ -2,6 +2,7 @@ package com.xboe.module.course.service.impl; import com.xboe.common.OrderCondition; import com.xboe.common.PageList; +import com.xboe.core.JsonResponse; import com.xboe.core.orm.FieldFilters; import com.xboe.core.orm.IFieldFilter; 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.CourseTagRelation; import com.xboe.module.course.entity.CourseTypeTagRelation; -import com.xboe.module.course.service.ICourseService; import com.xboe.module.course.service.ICourseTagService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -40,7 +40,6 @@ public class CourseTagServiceImpl implements ICourseTagService { PublishCourseUtil publishUtil; @Resource private CourseTagRelationDao courseTagRelationDao; - @Resource private CourseTypeTagRelationDao courseTypeTagRelationDao; @Resource @@ -106,18 +105,32 @@ public class CourseTagServiceImpl implements ICourseTagService { /** * 修改指定id的课程标签的热点属性 + * * @param id * @param isHot * @return */ @Override - public void changeHotStatus(Long id, Boolean isHot) { + public JsonResponse changeHotStatus(Long id, Boolean isHot) { + // 当标签切换为热点标签时才会判断,超过十个热点标签则禁止设置 + JsonResponse 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))); if (courseTag!=null){ courseTag.setIsHot(isHot); courseTag.setLastSetHotTime(isHot?LocalDateTime.now():null); courseTagDao.update(courseTag); } + objectJsonResponse.setStatus(200); + objectJsonResponse.setMessage("修改成功"); + return objectJsonResponse; } /** @@ -243,6 +256,32 @@ public class CourseTagServiceImpl implements ICourseTagService { return courseTag; } + @Override + public void bindTag(String id, String tags) { + // 将tags转换为数组 + String[] tagIds = tags.split(","); + List tagIdList = new ArrayList<>(); + for (String tagId : tagIds){ + tagIdList.add(Long.valueOf(tagId)); + } + for (Long tagId : tagIdList){ + // 查询课程是否绑定了标签 + QueryBuilder query=QueryBuilder.from(CourseTagRelation.class); + List filters = new ArrayList<>(); + filters.add(FieldFilters.eq("courseId",Long.valueOf(id))); + filters.add(FieldFilters.eq("tagId",Long.valueOf(tagId))); + query.addFilters(filters); + List 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 public CourseTag getTagByName(String tagName) { CourseTag courseTag = courseTagDao.getTagByName(tagName);