diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/course/api/CourseManageApi.java b/servers/boe-server-all/src/main/java/com/xboe/module/course/api/CourseManageApi.java index eb79b007..9556b4fd 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/course/api/CourseManageApi.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/course/api/CourseManageApi.java @@ -131,6 +131,16 @@ public class CourseManageApi extends ApiBaseController{ return success(coursePageService.pageQuery(null, coursePageQueryDTO)); } + /** + * 新-教师端 我开发的课程 + * @param coursePageQueryDTO + * @return + */ + @PostMapping("/develop_page") + public JsonResponse> teacherPage(@RequestBody CoursePageQueryDTO coursePageQueryDTO) { + return success(coursePageService.pageQuery(getCurrent(), coursePageQueryDTO)); + } + /** * 当前用户是否在管理端显示置顶相关功能 * @return diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/course/dao/CourseDao.java b/servers/boe-server-all/src/main/java/com/xboe/module/course/dao/CourseDao.java index f1bb45ed..787452ad 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/course/dao/CourseDao.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/course/dao/CourseDao.java @@ -6,6 +6,7 @@ import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import com.xboe.module.course.dto.CoursePageQueryDTO; @@ -229,7 +230,7 @@ public class CourseDao extends BaseDao { // 开头判断:课程培训时间的两个参数是否不为null boolean filterLearningTime = queryDTO.getLearningTimeStart() != null && queryDTO.getLearningTimeEnd() != null; builder.append(" FROM boe_course c"); - // 聚合教师姓名(仅未删除的教师) + // 聚合教师姓名 builder.append(System.lineSeparator()); builder.append("LEFT JOIN (SELECT course_id, GROUP_CONCAT(teacher_name ORDER BY id SEPARATOR ',') AS teacher_names FROM boe_course_teacher GROUP BY course_id) tch ON c.id = tch.course_id"); // 学习人数聚合(满足时间条件的学习记录,且学习记录有效) @@ -253,6 +254,9 @@ public class CourseDao extends BaseDao { builder.append(System.lineSeparator()); builder.append("LEFT JOIN ").append(userCenterSchema) .append(".organization org ON c.org_id = org.organization_id AND org.deleted = 0"); + // 教师联查 + builder.append(System.lineSeparator()); + builder.append("LEFT JOIN boe_course_teacher ct ON c.id = ct.course_id"); // where条件 // 第一个条件:deleted = 0 @@ -302,9 +306,14 @@ public class CourseDao extends BaseDao { builder.append("AND (:learningTimeStart IS NULL OR :learningTimeEnd IS NULL OR EXISTS (SELECT 1 FROM boe_study_course sc WHERE sc.course_id = c.id AND sc.finish_time IS NOT NULL AND sc.add_time >= :learningTimeStart AND sc.finish_time <= :learningTimeEnd))"); } // 授课教师 - if (StringUtils.isNotBlank(queryDTO.getTeacherName())) { + if (StringUtils.isNotBlank(queryDTO.getTeacherId())) { builder.append(System.lineSeparator()); - builder.append("AND tch.teacher_names LIKE CONCAT('%', :teacherName, '%')"); + // 判断teacherId是一个还是多个 + if (queryDTO.getTeacherId().contains(",")) { + builder.append("AND ct.teacher_id IN (:teacherIdList)"); + } else { + builder.append("AND ct.teacher_id = :teacherId"); + } } // 展开后条件 if (queryDTO.getEnabled() != null) { @@ -319,9 +328,13 @@ public class CourseDao extends BaseDao { builder.append(System.lineSeparator()); builder.append("AND c.org_id = :orgId"); } - if (StringUtils.isNotBlank(queryDTO.getCreateUser())) { + if (StringUtils.isNotBlank(queryDTO.getCreateUserId())) { builder.append(System.lineSeparator()); - builder.append("AND c.sys_create_by LIKE CONCAT('%', :createUser, '%')"); + if (queryDTO.getCreateUserId().contains(",")) { + builder.append("AND c.sys_create_aid IN (:createUserIdList)"); + } else { + builder.append("AND c.sys_create_aid = :createUserId"); + } } if (StringUtils.isNotBlank(queryDTO.getCreateFrom())) { builder.append(System.lineSeparator()); @@ -402,8 +415,14 @@ public class CourseDao extends BaseDao { query.setParameter("learningTimeStart", queryDTO.getLearningTimeStart()); query.setParameter("learningTimeEnd", queryDTO.getLearningTimeEnd()); } - if (StringUtils.isNotBlank(queryDTO.getTeacherName())) { - query.setParameter("teacherName", queryDTO.getTeacherName()); + if (StringUtils.isNotBlank(queryDTO.getTeacherId())) { + String teacherIdStr = queryDTO.getTeacherId(); + if (teacherIdStr.contains(",")) { + List teacherIdList = Arrays.asList(teacherIdStr.split(",")); + query.setParameter("teacherIdList", teacherIdList); + } else { + query.setParameter("teacherId", queryDTO.getTeacherId()); + } } if (queryDTO.getEnabled() != null) { query.setParameter("enabled", queryDTO.getEnabled()); @@ -414,8 +433,14 @@ public class CourseDao extends BaseDao { if (StringUtils.isNotBlank(queryDTO.getResOwner1())) { query.setParameter("orgId", queryDTO.getResOwner1()); } - if (StringUtils.isNotBlank(queryDTO.getCreateUser())) { - query.setParameter("createUser", queryDTO.getCreateUser()); + if (StringUtils.isNotBlank(queryDTO.getCreateUserId())) { + String createUserIdStr = queryDTO.getCreateUserId(); + if (createUserIdStr.contains(",")) { + List createUserIdList = Arrays.asList(createUserIdStr.split(",")); + query.setParameter("createUserIdList", createUserIdList); + } else { + query.setParameter("createUserId", queryDTO.getCreateUserId()); + } } if (StringUtils.isNotBlank(queryDTO.getCreateFrom())) { query.setParameter("createFrom", queryDTO.getCreateFrom()); diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/course/dto/CoursePageQueryDTO.java b/servers/boe-server-all/src/main/java/com/xboe/module/course/dto/CoursePageQueryDTO.java index 2df4f5d4..795fcfab 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/course/dto/CoursePageQueryDTO.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/course/dto/CoursePageQueryDTO.java @@ -31,6 +31,11 @@ public class CoursePageQueryDTO { /**创建人*/ private String createUser; + /** + * 创建人id + */ + private String createUserId; + /**课程分类的一级*/ private String sysType1; @@ -43,6 +48,11 @@ public class CoursePageQueryDTO { /**授课教师*/ private String teacherName; + /** + * 授课教师id + */ + private String teacherId; + /**培训时间筛选类型*/ private String learningTimeType; @@ -77,4 +87,11 @@ public class CoursePageQueryDTO { /**排序顺序*/ private Boolean orderAsc; + + /** + * 是否是新建在线课程页面 + * false时,代表是在管理端的“在线管理”、“我开发的课程” + * true时,代表是在学习路径图/项目管理 中,创建在线课程的选择页面 + */ + private Boolean isCreateCourse; } \ No newline at end of file diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/course/service/impl/CoursePageServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/module/course/service/impl/CoursePageServiceImpl.java index eb1f9223..ad9e37d8 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/course/service/impl/CoursePageServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/course/service/impl/CoursePageServiceImpl.java @@ -82,65 +82,9 @@ public class CoursePageServiceImpl implements ICoursePageService { String currentAccountId = currentUser == null ? null : currentUser.getAccountId(); - // 第一版废弃 -// // 构建查询条件 -// List filters = new ArrayList<>(); -// -// // 自动添加过滤已删除 -// filters.add(FieldFilters.eq("c.deleted", false)); -// -// // 添加权限过滤条件 -// if (!isSystemAdmin) { -// // 非系统管理员需要进行权限过滤 -// List permissionFilters = new ArrayList<>(); -// -// // 添加组织权限过滤 -// if (orgIds != null && !orgIds.isEmpty()) { -// permissionFilters.add(FieldFilters.in("c.orgId", orgIds)); -// } -// -// // 添加创建人过滤(可以看到自己创建的课程) -// if (StringUtils.isNotBlank(currentAccountId)) { -// permissionFilters.add(FieldFilters.eq("c.sysCreateAid", currentAccountId)); -// } -// -// // 如果有权限条件,则添加OR条件 -// if (!permissionFilters.isEmpty()) { -// filters.add(FieldFilters.or(permissionFilters)); -// } -// } -// filters.addAll(createFilters(coursePageQueryDTO)); -// -// QueryBuilder query = QueryBuilder.from(Course.class.getSimpleName() + " c").addFilters(filters); -// // 处理排序 -// handleOrder(query, coursePageQueryDTO.getOrderField(), coursePageQueryDTO.getOrderAsc()); -// -// // 设置分页参数 -// int pageIndex = coursePageQueryDTO.getPageIndex() != null ? coursePageQueryDTO.getPageIndex() : 0; -// int pageSize = coursePageQueryDTO.getPageSize() != null ? coursePageQueryDTO.getPageSize() : 10; -// query.setPageIndex(pageIndex); -// query.setPageSize(pageSize); -// -// // 执行查询 -// PageList coursePageList = courseDao.findPage(query.builder()); -// -// // 转换为CoursePageVo -// PageList result = new PageList<>(); -// result.setCount(coursePageList.getCount()); -// result.setPageSize(coursePageList.getPageSize()); -// -// // 子查询:根据课程id查询课程下的教师 -// List courseIds = coursePageList.getList().stream() -// .map(Course::getId) -// .collect(Collectors.toList()); -// List courseTeacherList = getCourseTeacherList(courseIds); -// List voList = coursePageList.getList().stream() -// .map(c -> convertToVo(c, courseTeacherList)) -// .collect(Collectors.toList()); -// result.setList(voList); -// -// return result; - // 第二版 + List readIds = userOrgIds.getReadIds(); + orgIds.addAll(readIds); + long total = courseDao.countCourse(coursePageQueryDTO, isSystemAdmin, orgIds, currentAccountId, mySqlSchemaProperties.getUserCenterSchema()); List voList = courseDao.queryCourse(coursePageQueryDTO, isSystemAdmin, orgIds, currentAccountId, true, mySqlSchemaProperties.getUserCenterSchema()); PageList result = new PageList<>();