课程、文章审核
This commit is contained in:
@@ -27,6 +27,11 @@
|
||||
<artifactId>api-study</artifactId>
|
||||
<version>1.0.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.xyzh</groupId>
|
||||
<artifactId>api-new</artifactId>
|
||||
<version>1.0.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.xyzh</groupId>
|
||||
<artifactId>system</artifactId>
|
||||
|
||||
@@ -64,6 +64,8 @@ public interface CourseNodeMapper extends BaseMapper<TbCourseNode> {
|
||||
*/
|
||||
List<TbCourseNode> selectByChapterId(@Param("chapterId") String chapterId);
|
||||
|
||||
List<TbCourseNode> selectByCourseId(@Param("courseId")String courseId);
|
||||
|
||||
/**
|
||||
* @description 根据节点名称查询节点
|
||||
* @param name 节点名称
|
||||
@@ -146,6 +148,8 @@ public interface CourseNodeMapper extends BaseMapper<TbCourseNode> {
|
||||
*/
|
||||
int batchDeleteCourseNodes(@Param("nodeIDs") List<String> nodeIDs);
|
||||
|
||||
int batchUpdateNodeAudited(@Param("courseNodeList")List<TbCourseNode> nodeList);
|
||||
|
||||
/**
|
||||
* @description 根据章节ID批量删除节点
|
||||
* @param chapterId 章节ID
|
||||
|
||||
@@ -13,21 +13,26 @@ import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.xyzh.common.core.domain.ResultDomain;
|
||||
import org.xyzh.common.core.page.PageDomain;
|
||||
import org.xyzh.common.core.page.PageParam;
|
||||
import org.xyzh.common.core.page.PageRequest;
|
||||
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.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.CourseNodeMapper;
|
||||
import org.xyzh.study.service.SCCourseService;
|
||||
import org.xyzh.system.utils.LoginUtil;
|
||||
import org.xyzh.api.news.resource.ResourceAuditService;
|
||||
import org.xyzh.api.news.resource.ResourceService;
|
||||
import org.xyzh.api.system.permission.ResourcePermissionService;
|
||||
import org.xyzh.common.vo.UserDeptRoleVO;
|
||||
import org.xyzh.common.core.enums.ResourceType;
|
||||
@@ -53,6 +58,12 @@ public class SCCourseServiceImpl implements SCCourseService {
|
||||
@Autowired
|
||||
private CourseNodeMapper courseNodeMapper;
|
||||
|
||||
@Autowired
|
||||
private ResourceAuditService auditService;
|
||||
|
||||
@Autowired
|
||||
private ResourceService resourceService;
|
||||
|
||||
@Autowired
|
||||
private ResourcePermissionService resourcePermissionService;
|
||||
|
||||
@@ -414,8 +425,70 @@ public class SCCourseServiceImpl implements SCCourseService {
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public ResultDomain<TbCourse> updateCourseStatus(TbCourse course) {
|
||||
ResultDomain<TbCourse> resultDomain = new ResultDomain<>();
|
||||
if(course.getStatus()==1){ // 发布前审核
|
||||
// 获取所有课程节点
|
||||
List<TbCourseNode> nodeList = courseNodeMapper.selectByCourseId(course.getCourseID());
|
||||
List<TbCourseNode> notPassList = new ArrayList<>();
|
||||
for(TbCourseNode node: nodeList){
|
||||
if(!node.getIsAudited()){
|
||||
// 重新审核
|
||||
int type = node.getNodeType();
|
||||
// auditService.
|
||||
if(type==1){ //文章类型
|
||||
ResultDomain<ResourceVO> resourceDomain = resourceService.getResourceById(node.getResourceID());
|
||||
if (resourceDomain.isSuccess()) {
|
||||
if (!resourceDomain.getData().getResource().getIsAudited()) {
|
||||
ResultDomain<Boolean> pass = auditService.auditText(resourceDomain.getData().getResource().getContent());
|
||||
if(!pass.isSuccess() || !pass.getData()){
|
||||
// 审核失败,标记课程状态为3(审核失败)
|
||||
course.setStatus(3);
|
||||
course.setUpdateTime(new Date());
|
||||
courseMapper.updateCourse(course);
|
||||
|
||||
resultDomain.fail("课程节点:"+node.getName()+"审核未通过");
|
||||
return resultDomain;
|
||||
}
|
||||
}
|
||||
}
|
||||
}else if (type == 2){
|
||||
ResultDomain<Boolean> pass = auditService.auditByFileId(node.getResourceID());
|
||||
if(!pass.isSuccess() || !pass.getData()){
|
||||
// 审核失败,标记课程状态为3(审核失败)
|
||||
course.setStatus(3);
|
||||
course.setUpdateTime(new Date());
|
||||
courseMapper.updateCourse(course);
|
||||
|
||||
resultDomain.fail("课程节点:"+node.getName()+"审核未通过");
|
||||
return resultDomain;
|
||||
}
|
||||
}else{
|
||||
ResultDomain<Boolean> pass = auditService.auditText(node.getContent());
|
||||
if(!pass.isSuccess() || !pass.getData()){
|
||||
// 审核失败,标记课程状态为3(审核失败)
|
||||
course.setStatus(3);
|
||||
course.setUpdateTime(new Date());
|
||||
courseMapper.updateCourse(course);
|
||||
|
||||
resultDomain.fail("课程节点:"+node.getName()+"审核未通过");
|
||||
return resultDomain;
|
||||
}
|
||||
}
|
||||
node.setIsAudited(true);
|
||||
notPassList.add(node);
|
||||
}
|
||||
}
|
||||
if(!notPassList.isEmpty()){
|
||||
int i = courseNodeMapper.batchUpdateNodeAudited(notPassList);
|
||||
if(i<=0){
|
||||
resultDomain.fail("课程节点审核状态更新失败");
|
||||
return resultDomain;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
int result = courseMapper.updateCourse(course);
|
||||
if (result > 0) {
|
||||
resultDomain.success("更新课程状态成功", course);
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
<result column="duration" property="duration" jdbcType="INTEGER"/>
|
||||
<result column="order_num" property="orderNum" jdbcType="INTEGER"/>
|
||||
<result column="is_required" property="isRequired" jdbcType="INTEGER"/>
|
||||
<result column="is_audited" property="isAudited" jdbcType="BOOLEAN"/>
|
||||
<result column="creator" property="creator" jdbcType="VARCHAR"/>
|
||||
<result column="updater" property="updater" jdbcType="VARCHAR"/>
|
||||
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
|
||||
@@ -46,7 +47,7 @@
|
||||
|
||||
<!-- 基础字段 -->
|
||||
<sql id="Base_Column_List">
|
||||
id, node_id, chapter_id, name, content, node_type, resource_id, video_url, duration, order_num, is_required,
|
||||
id, node_id, chapter_id, name, content, node_type, resource_id, video_url, duration, order_num, is_required, is_audited,
|
||||
creator, updater, create_time, update_time, delete_time, deleted
|
||||
</sql>
|
||||
|
||||
@@ -98,6 +99,20 @@
|
||||
ORDER BY order_num ASC, create_time ASC
|
||||
</select>
|
||||
|
||||
<select id="selectByCourseId">
|
||||
SELECT
|
||||
tcn.id, tcn.node_id, tcn.chapter_id, tcn.name,
|
||||
tcn.content, tcn.node_type, tcn.resource_id, tcn.video_url, tcn.duration,
|
||||
tcn.order_num, tcn.is_required, tcn.is_audited, tcn.creator, tcn.updater,
|
||||
tcn.create_time, tcn.update_time, tcn.delete_time, tcn.deleted
|
||||
FROM tb_course_node tcn
|
||||
LEFT JOIN tb_course_chapter tcc ON tcc.chapter_id = tcn.chapter_id
|
||||
LEFT JOIN tb_course tc ON tcc.course_id = tc.course_id
|
||||
WHERE tc.course_id=#{courseId} AND tcn.deleted = 0
|
||||
ORDER BY order_num ASC, create_time ASC
|
||||
</select>
|
||||
|
||||
|
||||
<!-- 根据节点名称查询节点 -->
|
||||
<select id="selectByName" resultMap="BaseResultMap">
|
||||
SELECT
|
||||
@@ -149,47 +164,48 @@
|
||||
<update id="updateCourseNode" parameterType="org.xyzh.common.dto.study.TbCourseNode">
|
||||
UPDATE tb_course_node
|
||||
<set>
|
||||
is_audited = 0
|
||||
<if test="chapterID != null and chapterID != ''">
|
||||
chapter_id = #{chapterID},
|
||||
,chapter_id = #{chapterID}
|
||||
</if>
|
||||
<if test="name != null and name != ''">
|
||||
name = #{name},
|
||||
,name = #{name}
|
||||
</if>
|
||||
<if test="content != null and content != ''">
|
||||
content = #{content},
|
||||
,content = #{content}
|
||||
</if>
|
||||
<if test="nodeType != null">
|
||||
node_type = #{nodeType},
|
||||
,node_type = #{nodeType}
|
||||
</if>
|
||||
<if test="resourceID != null">
|
||||
resource_id = #{resourceID},
|
||||
,resource_id = #{resourceID}
|
||||
</if>
|
||||
<if test="videoUrl != null and videoUrl != ''">
|
||||
video_url = #{videoUrl},
|
||||
,video_url = #{videoUrl}
|
||||
</if>
|
||||
<if test="duration != null">
|
||||
duration = #{duration},
|
||||
,duration = #{duration}
|
||||
</if>
|
||||
<if test="orderNum != null">
|
||||
order_num = #{orderNum},
|
||||
,order_num = #{orderNum}
|
||||
</if>
|
||||
<if test="isRequired != null">
|
||||
is_required = #{isRequired},
|
||||
,is_required = #{isRequired}
|
||||
</if>
|
||||
<if test="updater != null and updater != ''">
|
||||
updater = #{updater},
|
||||
,updater = #{updater}
|
||||
</if>
|
||||
<if test="updateTime != null">
|
||||
update_time = #{updateTime},
|
||||
,update_time = #{updateTime}
|
||||
</if>
|
||||
<if test="deleteTime != null">
|
||||
delete_time = #{deleteTime},
|
||||
,delete_time = #{deleteTime}
|
||||
</if>
|
||||
<if test="deleted != null">
|
||||
deleted = #{deleted},
|
||||
,deleted = #{deleted}
|
||||
</if>
|
||||
</set>
|
||||
WHERE id = #{id}
|
||||
WHERE node_id = #{nodeID}
|
||||
</update>
|
||||
|
||||
<!-- 删除学习节点 -->
|
||||
@@ -222,6 +238,15 @@
|
||||
</foreach>
|
||||
</delete>
|
||||
|
||||
<!-- batchUpdateNodeAudited -->
|
||||
<update id="batchUpdateNodeAudited">
|
||||
<foreach collection="courseNodeList" item="item" separator=";">
|
||||
UPDATE tb_course_node
|
||||
SET is_audited = #{item.isAudited}
|
||||
WHERE node_id = #{item.nodeID}
|
||||
</foreach>
|
||||
</update>
|
||||
|
||||
<!-- 根据章节ID批量删除节点 -->
|
||||
<delete id="deleteByChapterId">
|
||||
DELETE FROM tb_course_node
|
||||
|
||||
Reference in New Issue
Block a user