新在线课逻辑优化

This commit is contained in:
xiaozhequ
2024-07-03 12:46:55 +08:00
parent e0037b8814
commit f2be349301

View File

@@ -277,7 +277,7 @@ public class CourseServiceImpl implements ICourseService {
list.addAll(noAudiences);
//成长路径的课
List<String> grow = getGrow(dto);
//已报名的课
// //已报名的课
List<String> enroll = getEnroll(dto);
list.addAll(grow);
list.addAll(enroll);
@@ -343,13 +343,22 @@ public class CourseServiceImpl implements ICourseService {
listByFilters = courseDao.findListByFilters(oc, filters);
}
//根据创建人筛选
List<Course> listByFilters1=new ArrayList<>();
List<Course> listByFilters1;
if(!list.isEmpty()){
listByFilters1 = courseDao.findListByFilters(oc, filters1);
}
//根据list筛选
} else {
listByFilters1 = new ArrayList<>();
}
//根据list筛选
List<Course> listByFilters2 = courseDao.findListByFilters(oc, filters2);
List<Course> mergedList = Stream.concat(Stream.concat(listByFilters.stream(), listByFilters1.stream()),listByFilters2.stream())
//去除根据组织和创建人筛选的课程id
List<Course> finalListByFilters = listByFilters;
List<Course> collect = listByFilters2.stream()
.filter(element -> !finalListByFilters.contains(element))
.filter(element -> !listByFilters1.contains(element)).collect(Collectors.toList());
List<String> courseIds = collect.stream().map(Course::getId).collect(Collectors.toList());
//合并
List<Course> mergedList = Stream.concat(Stream.concat(listByFilters.stream(), listByFilters1.stream()),collect.stream())
// 使用distinct()配合自定义的去重条件
.filter(distinctByKey(c -> c.getId()))
.collect(Collectors.toList());
@@ -359,14 +368,14 @@ public class CourseServiceImpl implements ICourseService {
if(!mergedList.isEmpty()){
//去掉未发布的课程
mergedList.removeIf(e->{
if(!e.getPublished()&&list.contains(e.getId())){
if(!e.getPublished()&&courseIds.contains(e.getId())){
return true;
}
return false;
});
//将需要隐藏的做标记
mergedList.forEach(e->{
if(list.contains(e.getId())){
if(courseIds.contains(e.getId())){
e.setIsPermission(false);
}else {
e.setIsPermission(true);
@@ -381,11 +390,6 @@ public class CourseServiceImpl implements ICourseService {
}
private List<String> getRouter(CourseQueryDto dto) {
List<Long> list=new ArrayList<>();
if(StringUtil.isNotBlank(dto.getOrgIds())){
if(dto.getOrgIds().contains(",")){
String[] split = dto.getOrgIds().split(",");
List<String> strings = Arrays.asList(split);
String sql = "SELECT DISTINCT\n" +
"rt.course_id\n" +
"FROM\n" +
@@ -398,46 +402,8 @@ public class CourseServiceImpl implements ICourseService {
"and rt.type=1\n" +
"and c.deleted=0\n" +
"AND s.type =2 \n" +
"AND s.student_id = ?1\n" +
"and c.org_id not in(?2)\n" +
"and (c.sys_create_aid !=?3 or c.sys_create_aid is null)";
list = courseTeacherDao.sqlFindList(sql, dto.getOrgAid(),strings,dto.getOrgAid());
}
else {
String sql = "SELECT DISTINCT\n" +
"rt.course_id\n" +
"FROM\n" +
"boe.student s INNER JOIN boe.router_task rt on s.pid=rt.router_id inner join boe_base.boe_course c on c.id=rt.course_id\n" +
"\n" +
"WHERE\n" +
"\n" +
"s.deleted = 0 \n" +
"and rt.deleted=0\n" +
"and rt.type=1\n" +
"and c.deleted=0\n" +
"AND s.type =2 \n" +
"AND s.student_id = ?1\n" +
"and c.org_id !=?2\n" +
"and (c.sys_create_aid !=?3 or c.sys_create_aid is null)";
list = courseTeacherDao.sqlFindList(sql, dto.getOrgAid(), dto.getOrgIds(),dto.getOrgAid());
}
}else {
String sql = "SELECT DISTINCT\n" +
"rt.course_id\n" +
"FROM\n" +
"boe.student s INNER JOIN boe.router_task rt on s.pid=rt.router_id inner join boe_base.boe_course c on c.id=rt.course_id\n" +
"\n" +
"WHERE\n" +
"\n" +
"s.deleted = 0 \n" +
"and rt.deleted=0\n" +
"and rt.type=1\n" +
"and c.deleted=0\n" +
"AND s.type =2 \n" +
"AND s.student_id = ?1\n" +
"and (c.sys_create_aid !=?2 or c.sys_create_aid is null)";
list = courseTeacherDao.sqlFindList(sql, dto.getOrgAid(),dto.getOrgAid());
}
"AND s.student_id = ?1";
List<String>list = courseTeacherDao.sqlFindList(sql,dto.getOrgAid());
List<String>list1=new ArrayList<>();
for (Object obj : list) {
list1.add(obj.toString());
@@ -446,11 +412,6 @@ public class CourseServiceImpl implements ICourseService {
return list1;
}
private List<String> getProject(CourseQueryDto dto) {
List<Long> list=new ArrayList<>();
if(StringUtil.isNotBlank(dto.getOrgIds())){
if(dto.getOrgIds().contains(",")){
String[] split = dto.getOrgIds().split(",");
List<String> strings = Arrays.asList(split);
String sql = "SELECT DISTINCT\n" +
"pt.course_id\n" +
"FROM\n" +
@@ -463,60 +424,16 @@ public class CourseServiceImpl implements ICourseService {
"and pt.type=1\n" +
"and c.deleted=0\n" +
"AND s.type =1 \n" +
"AND s.student_id = ?1\n" +
"and c.org_id not in(?2)\n" +
"and (c.sys_create_aid !=?3 or c.sys_create_aid is null)";
list = courseTeacherDao.sqlFindList(sql, dto.getOrgAid(),strings,dto.getOrgAid());
}
else {
String sql = "SELECT DISTINCT\n" +
"pt.course_id\n" +
"FROM\n" +
"boe.student s INNER JOIN boe.project_task pt on s.pid=pt.project_id inner join boe_base.boe_course c on c.id=pt.course_id\n" +
"\n" +
"WHERE\n" +
"\n" +
"s.deleted = 0 \n" +
"and pt.deleted=0\n" +
"and pt.type=1\n" +
"and c.deleted=0\n" +
"AND s.type =1 \n" +
"AND s.student_id = ?1\n" +
"and c.org_id !=?2\n" +
"and (c.sys_create_aid !=?3 or c.sys_create_aid is null)";
list = courseTeacherDao.sqlFindList(sql, dto.getOrgAid(), dto.getOrgIds(),dto.getOrgAid());
}
}else {
String sql = "SELECT DISTINCT\n" +
"pt.course_id\n" +
"FROM\n" +
"boe.student s INNER JOIN boe.project_task pt on s.pid=pt.project_id inner join boe_base.boe_course c on c.id=pt.course_id\n" +
"\n" +
"WHERE\n" +
"\n" +
"s.deleted = 0 \n" +
"and pt.deleted=0\n" +
"and pt.type=1\n" +
"and c.deleted=0\n" +
"AND s.type =1 \n" +
"AND s.student_id = ?1\n" +
"and (c.sys_create_aid !=?2 or c.sys_create_aid is null)";
list = courseTeacherDao.sqlFindList(sql, dto.getOrgAid(),dto.getOrgAid());
}
"AND s.student_id = ?1\n";
List<Long>list = courseTeacherDao.sqlFindList(sql, dto.getOrgAid());
List<String>list1=new ArrayList<>();
for (Object obj : list) {
list1.add(obj.toString());
}
return list1;
}
private List<String> getAudiences(CourseQueryDto dto) {
List<Long> list=new ArrayList<>();
List<String> s=Arrays.asList(dto.getAudiences().split(","));
if(StringUtil.isNotBlank(dto.getOrgIds())){
if(dto.getOrgIds().contains(",")){
String[] split = dto.getOrgIds().split(",");
List<String> strings = Arrays.asList(split);
String sql = "SELECT DISTINCT\n" +
"\tcc.course_id \n" +
"FROM\n" +
@@ -524,37 +441,8 @@ public class CourseServiceImpl implements ICourseService {
"\tINNER JOIN boe_course c ON cc.course_id = c.id \n" +
"WHERE\n" +
"\tcc.group_id IN (?1) \n" +
"\tAND c.deleted =0 \n"+
"and c.org_id not in(?2)\n" +
"and (c.sys_create_aid !=?3 or c.sys_create_aid is null)";
list = courseTeacherDao.sqlFindList(sql,s,strings,dto.getOrgAid());
}
else {
String sql = "SELECT DISTINCT\n" +
"\tc.id \n" +
"FROM\n" +
"\t`boe_course_crowd` cc\n" +
"\tINNER JOIN boe_course c ON cc.course_id = c.id \n" +
"WHERE\n" +
"\tcc.group_id IN (?1) \n" +
"\tAND c.deleted =0 \n"+
"and c.org_id !=?2\n" +
"and (c.sys_create_aid !=?3 or c.sys_create_aid is null)";
list = courseTeacherDao.sqlFindList(sql, s, dto.getOrgIds(),dto.getOrgAid());
}
}else {
String sql = "SELECT DISTINCT\n" +
"\tc.id \n" +
"FROM\n" +
"\t`boe_course_crowd` cc\n" +
"\tINNER JOIN boe_course c ON cc.course_id = c.id \n" +
"WHERE\n" +
"\tcc.group_id IN (?1) \n" +
"\tAND c.deleted =0 \n"+
"and (c.sys_create_aid !=?2 or c.sys_create_aid is null)";
list = courseTeacherDao.sqlFindList(sql, s,dto.getOrgAid());
}
"\tAND c.deleted =0 ";
List<Long> list = courseTeacherDao.sqlFindList(sql,s);
List<String>list1=new ArrayList<>();
for (Object obj : list) {
list1.add(obj.toString());
@@ -563,61 +451,21 @@ public class CourseServiceImpl implements ICourseService {
return list1;
}
private List<String> getNoAudiences(CourseQueryDto dto) {
String sql1="SELECT cc.course_id FROM boe_base.boe_course_crowd cc";
List<String> list2 = courseTeacherDao.sqlFindList(sql1);
List<Long> list=new ArrayList<>();
if(StringUtil.isNotBlank(dto.getOrgIds())){
if(dto.getOrgIds().contains(",")){
String[] split = dto.getOrgIds().split(",");
List<String> strings = Arrays.asList(split);
String sql = "SELECT DISTINCT\n" +
"\tc.id \n" +
"FROM\n" +
"\tboe_base.boe_course c \n" +
"WHERE\n" +
"\tc.id NOT IN ( ?1 ) \n" +
"\tAND c.deleted =0 \n"+
"and c.org_id not in(?2)\n" +
"and (c.sys_create_aid !=?3 or c.sys_create_aid is null)";
list = courseTeacherDao.sqlFindList(sql,list2,strings,dto.getOrgAid());
}
else {
String sql = "SELECT DISTINCT\n" +
"\tc.id \n" +
"FROM\n" +
"\tboe_base.boe_course c \n" +
"WHERE\n" +
"\tc.id NOT IN ( ?1 ) \n" +
"\tAND c.deleted =0 \n"+
"and c.org_id !=?2\n" +
"and (c.sys_create_aid !=?3 or c.sys_create_aid is null)";
list = courseTeacherDao.sqlFindList(sql,list2, dto.getOrgIds(),dto.getOrgAid());
}
}else {
String sql = "SELECT DISTINCT\n" +
"\tc.id \n" +
"FROM\n" +
"\tboe_base.boe_course c \n" +
"WHERE\n" +
"\tc.id NOT IN ( ?1 ) \n" +
"\tAND c.deleted =0 \n"+
"and (c.sys_create_aid !=?2 or c.sys_create_aid is null)";
list = courseTeacherDao.sqlFindList(sql,list2,dto.getOrgAid());
}
"\t NOT EXISTS ( SELECT 1 FROM boe_base.boe_course_crowd cc where cc.course_id = c.id ) \n" +
"\tAND c.deleted =0 \n";
List<Long>list = courseTeacherDao.sqlFindList(sql);
List<String>list1=new ArrayList<>();
for (Object obj : list) {
list1.add(obj.toString());
}
return list1;
}
private List<String> getGrow(CourseQueryDto dto) {
List<Long> list=new ArrayList<>();
if(StringUtil.isNotBlank(dto.getOrgIds())){
if(dto.getOrgIds().contains(",")){
String[] split = dto.getOrgIds().split(",");
List<String> strings = Arrays.asList(split);
String sql = "SELECT DISTINCT\n" +
"\tc.id \n" +
"FROM\n" +
@@ -630,60 +478,15 @@ public class CourseServiceImpl implements ICourseService {
"\tAND s.deleted = 0 \n" +
"\tAND gt.deleted = 0 \n" +
"\tAND c.deleted = 0\n"+
"\tAND s.student_id = ?1\n"+
"and c.org_id not in(?2)\n" +
"and (c.sys_create_aid !=?3 or c.sys_create_aid is null)";
list = courseTeacherDao.sqlFindList(sql,dto.getOrgAid(),strings,dto.getOrgAid());
}
else {
String sql = "SELECT DISTINCT\n" +
"\tc.id \n" +
"FROM\n" +
"\tboe.student s\n" +
"\tINNER JOIN boe.grow_task gt ON s.pid = gt.grow_id\n" +
"\tINNER JOIN boe_base.boe_course c ON gt.course_id = c.id \n" +
"WHERE\n" +
"\ts.type = 14 \n" +
"\tAND gt.type = 1 \n" +
"\tAND s.deleted = 0 \n" +
"\tAND gt.deleted = 0 \n" +
"\tAND c.deleted = 0\n"+
"\tAND s.student_id = ?1\n"+
"and c.org_id !=?2\n" +
"and (c.sys_create_aid !=?3 or c.sys_create_aid is null)";
list = courseTeacherDao.sqlFindList(sql,dto.getOrgAid(), dto.getOrgIds(),dto.getOrgAid());
}
}else {
String sql = "SELECT DISTINCT\n" +
"\tc.id \n" +
"FROM\n" +
"\tboe.student s\n" +
"\tINNER JOIN boe.grow_task gt ON s.pid = gt.grow_id\n" +
"\tINNER JOIN boe_base.boe_course c ON gt.course_id = c.id \n" +
"WHERE\n" +
"\ts.type = 14 \n" +
"\tAND gt.type = 1 \n" +
"\tAND s.deleted = 0 \n" +
"\tAND gt.deleted = 0 \n" +
"\tAND c.deleted = 0\n"+
"\tAND s.student_id = ?1\n"+
"and (c.sys_create_aid !=?2 or c.sys_create_aid is null)";
list = courseTeacherDao.sqlFindList(sql,dto.getOrgAid(),dto.getOrgAid());
}
"\tAND s.student_id = ?1\n";
List<Long>list = courseTeacherDao.sqlFindList(sql,dto.getOrgAid());
List<String>list1=new ArrayList<>();
for (Object obj : list) {
list1.add(obj.toString());
}
return list1;
}
private List<String> getEnroll(CourseQueryDto dto) {
List<Long> list=new ArrayList<>();
if(StringUtil.isNotBlank(dto.getOrgIds())){
if(dto.getOrgIds().contains(",")){
String[] split = dto.getOrgIds().split(",");
List<String> strings = Arrays.asList(split);
String sql = "SELECT DISTINCT\n" +
"\tsc.course_id \n" +
"FROM\n" +
@@ -691,37 +494,8 @@ public class CourseServiceImpl implements ICourseService {
"\tINNER JOIN boe_base.boe_course c ON sc.course_id = c.id \n" +
"WHERE\n" +
"\tsc.aid = ?1 \n" +
"\tAND c.deleted =0\n"+
"and c.org_id not in(?2)\n" +
"and (c.sys_create_aid !=?3 or c.sys_create_aid is null)";
list = courseTeacherDao.sqlFindList(sql,dto.getOrgAid(),strings,dto.getOrgAid());
}
else {
String sql = "SELECT DISTINCT\n" +
"\tsc.course_id \n" +
"FROM\n" +
"\tboe_base.boe_study_course sc\n" +
"\tINNER JOIN boe_base.boe_course c ON sc.course_id = c.id \n" +
"WHERE\n" +
"\tsc.aid = ?1 \n" +
"\tAND c.deleted =0\n"+
"and c.org_id !=?2\n" +
"and (c.sys_create_aid !=?3 or c.sys_create_aid is null)";
list = courseTeacherDao.sqlFindList(sql,dto.getOrgAid(), dto.getOrgIds(),dto.getOrgAid());
}
}else {
String sql = "SELECT DISTINCT\n" +
"\tsc.course_id \n" +
"FROM\n" +
"\tboe_base.boe_study_course sc\n" +
"\tINNER JOIN boe_base.boe_course c ON sc.course_id = c.id \n" +
"WHERE\n" +
"\tsc.aid = ?1 \n" +
"\tAND c.deleted =0\n"+
"and (c.sys_create_aid !=?2 or c.sys_create_aid is null)";
list = courseTeacherDao.sqlFindList(sql,dto.getOrgAid(),dto.getOrgAid());
}
"\tAND c.deleted =0";
List<Long>list = courseTeacherDao.sqlFindList(sql,dto.getOrgAid());
List<String>list1=new ArrayList<>();
for (Object obj : list) {
list1.add(obj.toString());