课程权限优化

This commit is contained in:
xiaozhequ
2024-07-03 09:57:59 +08:00
parent 0b0bd748d9
commit e0037b8814

View File

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