文章、课程标签的默认封面
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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">
|
||||
|
||||
Reference in New Issue
Block a user