diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/course/service/impl/CourseServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/module/course/service/impl/CourseServiceImpl.java index 8f714d0f..ef48ef3f 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/course/service/impl/CourseServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/course/service/impl/CourseServiceImpl.java @@ -261,6 +261,7 @@ public class CourseServiceImpl implements ICourseService { @Override public PageList findPage(int pageIndex, int pageSize, CourseQueryDto dto) { List filters = createFilters(dto); + List filters1 = createFilters(dto); List filters2 = createFilters(dto); List list1 = getProject(dto); List list2 = getRouter(dto); @@ -293,19 +294,17 @@ public class CourseServiceImpl implements ICourseService { String[] split = dto.getOrgIds().split(","); List strings = Arrays.asList(split); // filters.add(FieldFilters.or(FieldFilters.in("orgId",strings),FieldFilters.eq("sysCreateAid",dto.getOrgAid()))); - filters.add((FieldFilters.in("orgId",strings))); + filters.add(FieldFilters.in("orgId",strings)); + filters1.add(FieldFilters.eq("sysCreateAid",dto.getOrgAid())); if(!list.isEmpty()){ - filters2.add(FieldFilters.or(FieldFilters.in("id",list),FieldFilters.eq("sysCreateAid",dto.getOrgAid()))); - }else { - filters2.add(FieldFilters.eq("sysCreateAid",dto.getOrgAid())); + filters2.add(FieldFilters.in("id",list)); } }else { // filters.add(FieldFilters.or(FieldFilters.eq("orgId",dto.getOrgIds()),FieldFilters.eq("sysCreateAid",dto.getOrgAid()))); filters.add(FieldFilters.eq("orgId",dto.getOrgIds())); + filters1.add(FieldFilters.eq("sysCreateAid",dto.getOrgAid())); if(!list.isEmpty()){ - filters2.add(FieldFilters.or(FieldFilters.in("id",list),FieldFilters.eq("sysCreateAid",dto.getOrgAid()))); - }else { - filters2.add(FieldFilters.eq("sysCreateAid",dto.getOrgAid())); + filters2.add(FieldFilters.in("id",list)); } } } @@ -313,11 +312,9 @@ public class CourseServiceImpl implements ICourseService { //log.info("【"+dto.getOrgAid()+"】 机构ids没有, 只查询自己创建的课程"); //没有机构权限,只能查出自己创建的 // filters.add(FieldFilters.eq("sysCreateAid",dto.getOrgAid())); + filters1.add(FieldFilters.eq("sysCreateAid",dto.getOrgAid())); if(!list.isEmpty()){ - filters2.add(FieldFilters.or(FieldFilters.eq("sysCreateAid",dto.getOrgAid()),FieldFilters.in("id",list))); - } - else { - filters2.add(FieldFilters.eq("sysCreateAid",dto.getOrgAid())); + filters2.add(FieldFilters.in("id",list)); } } }else { @@ -327,6 +324,7 @@ public class CourseServiceImpl implements ICourseService { //自动添加过滤已删除 filters.add(FieldFilters.eq("deleted",false)); + filters1.add(FieldFilters.eq("deleted",false)); filters2.add(FieldFilters.eq("deleted",false)); //同时查出所有项目内课程 OrderCondition oc=null; @@ -340,11 +338,18 @@ public class CourseServiceImpl implements ICourseService { oc=OrderCondition.desc("id"); } List listByFilters = new ArrayList<>(); + //根据组织筛选 if(StringUtil.isNotBlank(dto.getOrgIds())){ listByFilters = courseDao.findListByFilters(oc, filters); } - List listByFilters1 = courseDao.findListByFilters(oc, filters2); - List mergedList = Stream.concat(listByFilters.stream(), listByFilters1.stream()) + //根据创建人筛选 + List listByFilters1=new ArrayList<>(); + if(!list.isEmpty()){ + listByFilters1 = courseDao.findListByFilters(oc, filters1); + } + //根据list筛选 + List listByFilters2 = courseDao.findListByFilters(oc, filters2); + List mergedList = Stream.concat(Stream.concat(listByFilters.stream(), listByFilters1.stream()),listByFilters2.stream()) // 使用distinct()配合自定义的去重条件 .filter(distinctByKey(c -> c.getId())) .collect(Collectors.toList()); @@ -352,6 +357,14 @@ public class CourseServiceImpl implements ICourseService { // long endTime = System.nanoTime(); //log.info("查询出的条数:"+rs.getCount()); if(!mergedList.isEmpty()){ + //去掉未发布的课程 + mergedList.removeIf(e->{ + if(!e.getPublished()&&list.contains(e.getId())){ + return true; + } + return false; + }); + //将需要隐藏的做标记 mergedList.forEach(e->{ if(list.contains(e.getId())){ e.setIsPermission(false); @@ -550,6 +563,8 @@ public class CourseServiceImpl implements ICourseService { return list1; } private List getNoAudiences(CourseQueryDto dto) { + String sql1="SELECT cc.course_id FROM boe_base.boe_course_crowd cc"; + List list2 = courseTeacherDao.sqlFindList(sql1); List list=new ArrayList<>(); if(StringUtil.isNotBlank(dto.getOrgIds())){ if(dto.getOrgIds().contains(",")){ @@ -560,11 +575,11 @@ public class CourseServiceImpl implements ICourseService { "FROM\n" + "\tboe_base.boe_course c \n" + "WHERE\n" + - "\tc.id NOT IN ( SELECT cc.course_id FROM boe_base.boe_course_crowd cc ) \n" + + "\tc.id NOT IN ( ?1 ) \n" + "\tAND c.deleted =0 \n"+ - "and c.org_id not in(?1)\n" + - "and (c.sys_create_aid !=?2 or c.sys_create_aid is null)"; - list = courseTeacherDao.sqlFindList(sql,strings,dto.getOrgAid()); + "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 { @@ -573,11 +588,11 @@ public class CourseServiceImpl implements ICourseService { "FROM\n" + "\tboe_base.boe_course c \n" + "WHERE\n" + - "\tc.id NOT IN ( SELECT cc.course_id FROM boe_base.boe_course_crowd cc ) \n" + + "\tc.id NOT IN ( ?1 ) \n" + "\tAND c.deleted =0 \n"+ - "and c.org_id !=?1\n" + - "and (c.sys_create_aid !=?2 or c.sys_create_aid is null)"; - list = courseTeacherDao.sqlFindList(sql, dto.getOrgIds(),dto.getOrgAid()); + "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" + @@ -585,10 +600,10 @@ public class CourseServiceImpl implements ICourseService { "FROM\n" + "\tboe_base.boe_course c \n" + "WHERE\n" + - "\tc.id NOT IN ( SELECT cc.course_id FROM boe_base.boe_course_crowd cc ) \n" + + "\tc.id NOT IN ( ?1 ) \n" + "\tAND c.deleted =0 \n"+ - "and (c.sys_create_aid !=?1 or c.sys_create_aid is null)"; - list = courseTeacherDao.sqlFindList(sql,dto.getOrgAid()); + "and (c.sys_create_aid !=?2 or c.sys_create_aid is null)"; + list = courseTeacherDao.sqlFindList(sql,list2,dto.getOrgAid()); } Listlist1=new ArrayList<>(); for (Object obj : list) {