文章、课程标签的默认封面

This commit is contained in:
2025-12-24 15:44:07 +08:00
parent 46464f36a0
commit 878133fb40
22 changed files with 1278 additions and 25 deletions

View File

@@ -22,13 +22,15 @@ import org.xyzh.common.dto.resource.TbResource;
import org.xyzh.common.dto.study.TbCourse;
import org.xyzh.common.dto.study.TbCourseChapter;
import org.xyzh.common.dto.study.TbCourseNode;
import org.xyzh.common.dto.study.TbCourseTag;
import org.xyzh.common.dto.user.TbSysUser;
import org.xyzh.common.utils.IDUtils;
import org.xyzh.common.vo.CourseItemVO;
import org.xyzh.common.vo.ResourceVO;
import org.xyzh.study.mapper.CourseMapper;
import org.xyzh.study.mapper.CourseChapterMapper;
import org.xyzh.study.mapper.CourseMapper;
import org.xyzh.study.mapper.CourseNodeMapper;
import org.xyzh.study.mapper.CourseTagMapper;
import org.xyzh.study.service.SCCourseService;
import org.xyzh.system.utils.LoginUtil;
import org.xyzh.api.news.resource.ResourceAuditService;
@@ -58,6 +60,9 @@ public class SCCourseServiceImpl implements SCCourseService {
@Autowired
private CourseNodeMapper courseNodeMapper;
@Autowired
private CourseTagMapper courseTagMapper;
@Autowired
private ResourceAuditService auditService;
@@ -231,6 +236,22 @@ public class SCCourseServiceImpl implements SCCourseService {
logger.error("创建课程权限异常,但不影响课程创建: {}", e.getMessage(), e);
}
// 处理课程标签关联
if (courseItemVO.getTagID() != null && !courseItemVO.getTagID().isEmpty()) {
try {
TbCourseTag courseTag = new TbCourseTag();
courseTag.setId(IDUtils.generateID());
courseTag.setCourseID(courseID);
courseTag.setTagID(courseItemVO.getTagID());
courseTag.setCreator(user.getId());
courseTag.setCreateTime(now);
courseTagMapper.insertCourseTag(courseTag);
logger.info("创建课程标签关联成功: courseID={}, tagID={}", courseID, courseItemVO.getTagID());
} catch (Exception e) {
logger.error("创建课程标签关联失败: {}", e.getMessage(), e);
}
}
resultDomain.success("创建课程成功", courseItemVO);
return resultDomain;
}
@@ -259,6 +280,34 @@ public class SCCourseServiceImpl implements SCCourseService {
course.setUpdateTime(now);
courseMapper.updateCourse(course);
// 1.5. 处理课程标签关联
if (courseItemVO.getTagID() != null && !courseItemVO.getTagID().isEmpty()) {
try {
// 先删除旧的标签关联
courseTagMapper.deleteByCourseId(courseID);
// 创建新的标签关联
TbCourseTag courseTag = new TbCourseTag();
courseTag.setId(IDUtils.generateID());
courseTag.setCourseID(courseID);
courseTag.setTagID(courseItemVO.getTagID());
courseTag.setCreator(user.getId());
courseTag.setCreateTime(now);
courseTagMapper.insertCourseTag(courseTag);
logger.info("更新课程标签关联成功: courseID={}, tagID={}", courseID, courseItemVO.getTagID());
} catch (Exception e) {
logger.error("更新课程标签关联失败: {}", e.getMessage(), e);
}
} else {
// 如果没有tagID删除所有标签关联
try {
courseTagMapper.deleteByCourseId(courseID);
logger.info("清空课程标签关联: courseID={}", courseID);
} catch (Exception e) {
logger.error("清空课程标签关联失败: {}", e.getMessage(), e);
}
}
// 2. 处理章节和节点
List<CourseItemVO> newChapterVOs = courseItemVO.getChapters();
if (newChapterVOs == null) {

View File

@@ -16,6 +16,7 @@
<result column="view_count" property="viewCount" jdbcType="INTEGER"/>
<result column="learn_count" property="learnCount" jdbcType="INTEGER"/>
<result column="order_num" property="orderNum" jdbcType="INTEGER"/>
<result column="tag_id" property="tagID" jdbcType="VARCHAR"/>
<result column="creator" property="creator" jdbcType="VARCHAR"/>
<result column="updater" property="updater" jdbcType="VARCHAR"/>
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
@@ -26,9 +27,9 @@
<!-- 基础字段 -->
<sql id="Base_Column_List">
id, course_id, name, cover_image, description, content, duration,
teacher, status, view_count, learn_count, order_num, creator, updater,
create_time, update_time, delete_time, deleted
c.id, c.course_id, c.name, c.cover_image, c.description, c.content, c.duration,
c.teacher, c.status, c.view_count, c.learn_count, c.order_num, ct.tag_id, c.creator, c.updater,
c.create_time, c.update_time, c.delete_time, c.deleted
</sql>
<!-- 通用条件 -->
@@ -111,8 +112,9 @@
<!-- selectCourses - 添加权限过滤 -->
<select id="selectCourses" resultMap="BaseResultMap">
SELECT DISTINCT c.*
SELECT DISTINCT <include refid="Base_Column_List" />
FROM tb_course c
LEFT JOIN tb_course_tag ct ON c.course_id = ct.course_id
<include refid="Permission_Filter"/>
WHERE c.deleted = 0
<if test="filter.courseID != null and filter.courseID != ''">
@@ -134,8 +136,9 @@
<select id="selectByCourseId" resultMap="BaseResultMap">
SELECT
<include refid="Base_Column_List" />
FROM tb_course
WHERE course_id = #{courseId} AND deleted = 0
FROM tb_course c
LEFT JOIN tb_course_tag ct ON c.course_id = ct.course_id
WHERE c.course_id = #{courseId} AND c.deleted = 0
</select>
<!-- 根据课程名称查询课程 -->
@@ -316,8 +319,9 @@
<!-- 分页查询课程 -->
<!-- selectCoursesPage - 添加权限过滤 -->
<select id="selectCoursesPage" resultMap="BaseResultMap">
SELECT DISTINCT c.*
SELECT DISTINCT <include refid="Base_Column_List" />
FROM tb_course c
LEFT JOIN tb_course_tag ct ON c.course_id = ct.course_id
<include refid="Permission_Filter"/>
WHERE c.deleted = 0
<if test="filter != null">