fixed 课程设置,新增章节

beetlsql3-dev
Mlxa0324 2 years ago
parent ab13ab8185
commit 1d34211112

@ -63,6 +63,9 @@ public class CorePlatformService {
public static final String USER_DATA_ACCESS_CACHE = "cache:core:userDataAccess";
public static final String USER_MENU_CACHE = "cache:core:userMenu";
// 通过开课ID获取的课程节点信息缓存KEY
public static final String CACHE_CORE_GET_COURSE_TARGET_INFO_BY_TEACHER_OPEN_COURSE_ID = "cache:core:getCourseTargetInfoByTeacherOpenCourseId";
/*当前用户会话*/
public static final String ACCESS_CURRENT_USER = "core:user";
/*当前登录用户所在部门*/

@ -4,7 +4,9 @@ import cn.hutool.core.collection.CollectionUtil;
import java.util.Collection;
import java.util.Objects;
import java.util.Set;
import java.util.function.Function;
import java.util.stream.Collector;
import java.util.stream.Collectors;
/**
@ -41,4 +43,29 @@ public class StreamUtils {
public static <T, R> String listJoin(Collection<T> list, Function<T, R> function) {
return CollectionUtil.newArrayList(list).stream().map(function).map(Objects::toString).collect(Collectors.joining(","));
}
/**
* Listjoin
* @param list
* @param function
* @return
* @param <T>
* @param <R>
*/
public static <T, R> Set<R> getFieldToSet(Collection<T> list, Function<T, R> function) {
return CollectionUtil.newArrayList(list).stream().map(function).collect(Collectors.toSet());
}
/**
* Listjoin
* @param list
* @param function
* @return
* @param <T>
* @param <A>
* @param <R>
*/
public static <T, A, R> R getFieldTo(Collection<T> list, Function<T, R> function, Collector<R, A, R> collector) {
return CollectionUtil.newArrayList(list).stream().map(function).collect(collector);
}
}

@ -37,7 +37,9 @@ import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.beetl.sql.core.SqlId;
import org.beetl.sql.core.engine.PageQuery;
import org.beetl.sql.core.query.LambdaQuery;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -57,6 +59,7 @@ import java.util.stream.Collectors;
import static cn.hutool.core.util.ArrayUtil.join;
import static cn.hutool.core.util.ObjectUtil.defaultIfNull;
import static com.ibeetl.admin.core.service.CorePlatformService.CACHE_CORE_GET_COURSE_TARGET_INFO_BY_TEACHER_OPEN_COURSE_ID;
import static com.ibeetl.admin.core.util.ExcelUtil.getCellFormatValue;
import static com.ibeetl.jlw.enums.CopyFromEnum.FROM_OPEN_COURSE;
import static com.ibeetl.jlw.enums.GlobalUpStatusEnum.UP;
@ -168,14 +171,14 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService<Tea
public void deleteTeacherOpenCourseMergeCourseInfo(@NotBlank(message = "ID不能为空") String ids){
try {
for (String id : ids.split(",")) {
List<TeacherOpenCourseMergeCourseInfo> courseResources = getCourseResources(Long.valueOf(id));
List<TeacherOpenCourseMergeCourseInfo> courseInfoList = getCourseResources(Long.valueOf(id));
// TODO 这里要优化
// List<TeacherOpenCourseMergeCourseInfo> courseResources2 = getCourseResourcesByList(Long.valueOf(id));
//
// int a = 1/0;
// 只匹配章节
Set<Long> idSet = courseResources.stream().filter(item -> Integer.valueOf(2).equals(item.getCourseInfoType()))
Set<Long> idSet = courseInfoList.stream().filter(item -> Integer.valueOf(2).equals(item.getCourseInfoType()))
.map(TeacherOpenCourseMergeCourseInfo::getTeacherOpenCourseMergeCourseInfoId).collect(toSet());
if(ObjectUtil.isNotEmpty(idSet)) {
@ -219,12 +222,12 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService<Tea
/**
*
*
* @param teacherOpenCourseMergeCourseInfoQuery
* @param query
* @return
*/
public JsonResult add(TeacherOpenCourseMergeCourseInfoQuery teacherOpenCourseMergeCourseInfoQuery){
public JsonResult add(TeacherOpenCourseMergeCourseInfoQuery query){
String msg = "";
TeacherOpenCourseMergeCourseInfo teacherOpenCourseMergeCourseInfo = teacherOpenCourseMergeCourseInfoQuery.pojo();
TeacherOpenCourseMergeCourseInfo teacherOpenCourseMergeCourseInfo = query.pojo();
teacherOpenCourseMergeCourseInfo.setCourseInfoStatus(1);
// 获取新的排序值
@ -238,7 +241,7 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService<Tea
teacherOpenCourseMergeCourseInfoDao.insert(teacherOpenCourseMergeCourseInfo);
// teacherOpenCourseMergeCourseInfoService.invalidateCourseInfoTreeLocalCache(teacherOpenCourseMergeCourseInfo.getTeacherOpenCourseId());
teacherOpenCourseMergeCourseInfoQuery.setTeacherOpenCourseMergeCourseInfoId(teacherOpenCourseMergeCourseInfo.getTeacherOpenCourseMergeCourseInfoId());
query.setTeacherOpenCourseMergeCourseInfoId(teacherOpenCourseMergeCourseInfo.getTeacherOpenCourseMergeCourseInfoId());
JsonResult jsonResult = new JsonResult();
jsonResult.setData(teacherOpenCourseMergeCourseInfo.getTeacherOpenCourseMergeCourseInfoId());//自增的ID丢进去
jsonResult.setCode(JsonReturnCode.SUCCESS.getCode());
@ -253,25 +256,75 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService<Tea
*
*
*
* @param teacherOpenCourseMergeCourseInfoQuery
* @param mergeCourseInfoQuery
* @return
*/
public JsonResult addCourseAndQuestionWithQuestionSnap(@Validated(ValidateConfig.ADD.class) @NotNull(message = "开课题目信息不能为空!")
TeacherOpenCourseMergeCourseInfoQuery teacherOpenCourseMergeCourseInfoQuery,
TeacherOpenCourseMergeCourseInfoQuery mergeCourseInfoQuery,
@Nullable List<QuestionSettingDTO> questionSettingOptions, Map<Long, Long> courseInfoIdPair) {
getParentCourseIdIfTypeEquals2(mergeCourseInfoQuery);
// 添加开课课程表
JsonResult jsonResult = add(teacherOpenCourseMergeCourseInfoQuery);
JsonResult jsonResult = add(mergeCourseInfoQuery);
// 开课课程2 章节节点
if(Integer.valueOf(2).equals(teacherOpenCourseMergeCourseInfoQuery.getCourseInfoType())) {
if(Integer.valueOf(2).equals(mergeCourseInfoQuery.getCourseInfoType())) {
// 添加到题目配置和开课题目快照表这里null 不拷贝题目
teacherOpenCourseQuestionSettingService.addFrom(teacherOpenCourseMergeCourseInfoQuery, questionSettingOptions, FROM_OPEN_COURSE, courseInfoIdPair);
teacherOpenCourseQuestionSettingService.addFrom(mergeCourseInfoQuery, questionSettingOptions, FROM_OPEN_COURSE, courseInfoIdPair);
}
return jsonResult;
}
/**
*
* @param mergeCourseInfoQuery
*/
public void getParentCourseIdIfTypeEquals2(TeacherOpenCourseMergeCourseInfoQuery mergeCourseInfoQuery) {
if (mergeCourseInfoQuery != null) {
final Integer courseInfoType = mergeCourseInfoQuery.getCourseInfoType();
final Long teacherOpenCourseId = mergeCourseInfoQuery.getTeacherOpenCourseId();
// 开课ID不为空且课程类型 = 章节类型的则查询归属的课程ID
if (ObjectUtil.isAllNotEmpty(courseInfoType, teacherOpenCourseId) && courseInfoType.equals(2)) {
TeacherOpenCourseMergeCourseInfo courseTargetInfo = getCourseTargetInfoByTeacherOpenCourseId(teacherOpenCourseId);
if (courseTargetInfo != null) {
mergeCourseInfoQuery.setCourseInfoParentId(courseTargetInfo.getTeacherOpenCourseMergeCourseInfoId());
}
}
}
}
/**
* ID
*
* @param teacherOpenCourseId
* @return
*/
@Cacheable(value = CACHE_CORE_GET_COURSE_TARGET_INFO_BY_TEACHER_OPEN_COURSE_ID, key = "#root.args[0]", unless = "#result == null")
public TeacherOpenCourseMergeCourseInfo getCourseTargetInfoByTeacherOpenCourseId(Long teacherOpenCourseId) {
if (teacherOpenCourseId == null) {
return null;
}
LambdaQuery<TeacherOpenCourseMergeCourseInfo> lambdaQuery = teacherOpenCourseMergeCourseInfoDao.createLambdaQuery();
LambdaQuery.Property<TeacherOpenCourseMergeCourseInfo, Object> pIdpt = TeacherOpenCourseMergeCourseInfo::getCourseInfoParentId;
// 课程节点的信息
TeacherOpenCourseMergeCourseInfo courseTargetInfo = lambdaQuery
.andEq(TeacherOpenCourseMergeCourseInfo::getTeacherOpenCourseId, teacherOpenCourseId)
.andEq(TeacherOpenCourseMergeCourseInfo::getCourseInfoStatus, 1)
.andEq(TeacherOpenCourseMergeCourseInfo::getCourseInfoType, 1)
.and(lambdaQuery.condition().andEq(pIdpt, "").orIsNull(pIdpt))
.single();
return courseTargetInfo;
}
public String edit(TeacherOpenCourseMergeCourseInfoQuery teacherOpenCourseMergeCourseInfoQuery){
String msg = "";

@ -354,11 +354,14 @@ public class TeacherOpenCourseQuestionSettingService extends CoreBaseService<Tea
settingQuery.setTeacherOpenCourseQuestionSettingName(teacherOpenCourseMergeCourseInfoQuery.getCourseInfoName());
// 关联上课程章节ID如果没有则会添加Null
settingQuery.setTeacherOpenCourseMergeCourseInfoId(teacherOpenCourseMergeCourseInfoQuery.getTeacherOpenCourseMergeCourseInfoId());
settingQuery.setQuestionSettingOptions(new ArrayList<>(questionSettingOptions));
List<QuestionSettingDTO> optionList = null == questionSettingOptions ? Collections.emptyList() : new ArrayList<>(questionSettingOptions);
settingQuery.setQuestionSettingOptions(optionList);
// 拷贝题库
switch (copyFrom) {
case FROM_OPEN_COURSE:
addSettingByOpenCourse(settingQuery, courseInfoIdPair);
break;
case FROM_SYSTEM:
addSettingBySystemCourse(settingQuery, courseInfoIdPair);
break;

Loading…
Cancel
Save