diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/course/dto/CourseQueryDto.java b/servers/boe-server-all/src/main/java/com/xboe/module/course/dto/CourseQueryDto.java index 72ff5da1..6f895735 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/course/dto/CourseQueryDto.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/course/dto/CourseQueryDto.java @@ -2,6 +2,8 @@ package com.xboe.module.course.dto; import lombok.Data; +import java.util.List; + /** * 课程查询的条件对象 */ @@ -129,4 +131,8 @@ public class CourseQueryDto { * 登录人id */ private String userId; + /** + * 任务课件id + */ + private List courseIds; } diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/course/entity/Course.java b/servers/boe-server-all/src/main/java/com/xboe/module/course/entity/Course.java index 5d7fdca3..900125a5 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/course/entity/Course.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/course/entity/Course.java @@ -370,6 +370,9 @@ public class Course extends BaseEntity { @Column(name = "ref_type",length=32,columnDefinition="varchar(32) comment '反向关联的类型'") private String refType; + + + private Boolean isPermission; @Transient private String orgName; 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 82eabf81..c1f26660 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 @@ -3,10 +3,7 @@ package com.xboe.module.course.service.impl; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; import javax.annotation.Resource; @@ -257,12 +254,28 @@ public class CourseServiceImpl implements ICourseService { @Override public PageList findPage(int pageIndex, int pageSize, CourseQueryDto dto) { List filters = createFilters(dto); - + List filters1=new ArrayList<>(); //有权限的查询,也同时查询出创建人的数据,在权限上 if(TempFilterConfig.Manager_CourseFile_ByOrgIds) { if(dto.getIsSystemAdmin()==null || !dto.getIsSystemAdmin()) { - - if(StringUtil.isNotBlank(dto.getOrgIds())){ + if(StringUtil.isNotBlank(dto.getOrgIds())&&dto.getCourseIds()!=null&&!dto.getCourseIds().isEmpty()){ + //log.info("【"+dto.getOrgAid()+"】 按机构过滤和自己创建的课程"); + //log.info(" orgids "+dto.getOrgIds()); + if(dto.getOrgIds().contains(",")){ + String[] split = dto.getOrgIds().split(","); + List strings = Arrays.asList(split); + filters1.add(FieldFilters.in("orgId",strings)); + filters1.add(FieldFilters.eq("sysCreateAid",dto.getOrgAid())); + filters1.add(FieldFilters.in("id",dto.getCourseIds())); + filters.add(FieldFilters.or(filters1)); + }else { + filters1.add(FieldFilters.eq("orgId",dto.getOrgIds())); + filters1.add(FieldFilters.eq("sysCreateAid",dto.getOrgAid())); + filters1.add(FieldFilters.in("id",dto.getCourseIds())); + filters.add(FieldFilters.or(filters1)); + } + } + if(StringUtil.isNotBlank(dto.getOrgIds())&&(dto.getCourseIds()==null||dto.getCourseIds().isEmpty())){ //log.info("【"+dto.getOrgAid()+"】 按机构过滤和自己创建的课程"); //log.info(" orgids "+dto.getOrgIds()); if(dto.getOrgIds().contains(",")){ @@ -272,7 +285,8 @@ public class CourseServiceImpl implements ICourseService { }else { filters.add(FieldFilters.or(FieldFilters.eq("orgId",dto.getOrgIds()),FieldFilters.eq("sysCreateAid",dto.getOrgAid()))); } - }else { + } + if (!StringUtil.isNotBlank(dto.getOrgIds())&&(dto.getCourseIds()==null||dto.getCourseIds().isEmpty())){ //log.info("【"+dto.getOrgAid()+"】 机构ids没有, 只查询自己创建的课程"); //没有机构权限,只能查出自己创建的 filters.add(FieldFilters.eq("sysCreateAid",dto.getOrgAid())); @@ -294,9 +308,27 @@ public class CourseServiceImpl implements ICourseService { }else { oc=OrderCondition.desc("id"); } - - PageList rs=courseDao.findPage(pageIndex, pageSize, filters, oc); + PageList rs=courseDao.findPage(pageIndex, pageSize, filters, oc); //log.info("查询出的条数:"+rs.getCount()); + if(dto.getCourseIds()!=null&&!dto.getCourseIds().isEmpty()){ + //查出属于机构的课程和创建人的课程 + List courseIds = courseDao.findListByFilters(oc, filters).stream().map(Course::getId).collect(Collectors.toList()); + //找出courseIds和dto.getCourseIds的差集 + List collect = dto.getCourseIds().stream().filter(courseIds::contains).collect(Collectors.toList()); + //将属于项目内课程 但不属于组织机构和创建人的课程设置为无权限 + if (!collect.isEmpty()){ + List list = rs.getList(); + list.forEach(e->{ + if (collect.contains(e.getId())){ + e.setIsPermission(false); + }else { + e.setIsPermission(true); + } + }); + rs.setList(list); + } + } + return rs; }