mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/per-boe/java-servers.git
synced 2025-12-06 17:36:47 +08:00
新在线课逻辑优化
This commit is contained in:
@@ -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());
|
||||
|
||||
Reference in New Issue
Block a user