mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/per-boe/java-servers.git
synced 2025-12-09 02:46:50 +08:00
课程权限优化
This commit is contained in:
@@ -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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user