mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/per-boe/java-servers.git
synced 2025-12-09 10:56:50 +08:00
选择在线可时增加数据权限逻辑
This commit is contained in:
@@ -2,6 +2,8 @@ package com.xboe.module.course.dto;
|
|||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 课程查询的条件对象
|
* 课程查询的条件对象
|
||||||
*/
|
*/
|
||||||
@@ -129,4 +131,8 @@ public class CourseQueryDto {
|
|||||||
* 登录人id
|
* 登录人id
|
||||||
*/
|
*/
|
||||||
private String userId;
|
private String userId;
|
||||||
|
/**
|
||||||
|
* 任务课件id
|
||||||
|
*/
|
||||||
|
private List<String> courseIds;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -370,6 +370,9 @@ public class Course extends BaseEntity {
|
|||||||
|
|
||||||
@Column(name = "ref_type",length=32,columnDefinition="varchar(32) comment '反向关联的类型'")
|
@Column(name = "ref_type",length=32,columnDefinition="varchar(32) comment '反向关联的类型'")
|
||||||
private String refType;
|
private String refType;
|
||||||
|
|
||||||
|
|
||||||
|
private Boolean isPermission;
|
||||||
|
|
||||||
@Transient
|
@Transient
|
||||||
private String orgName;
|
private String orgName;
|
||||||
|
|||||||
@@ -3,10 +3,7 @@ package com.xboe.module.course.service.impl;
|
|||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
@@ -257,12 +254,28 @@ 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=new ArrayList<>();
|
||||||
//有权限的查询,也同时查询出创建人的数据,在权限上
|
//有权限的查询,也同时查询出创建人的数据,在权限上
|
||||||
if(TempFilterConfig.Manager_CourseFile_ByOrgIds) {
|
if(TempFilterConfig.Manager_CourseFile_ByOrgIds) {
|
||||||
if(dto.getIsSystemAdmin()==null || !dto.getIsSystemAdmin()) {
|
if(dto.getIsSystemAdmin()==null || !dto.getIsSystemAdmin()) {
|
||||||
|
if(StringUtil.isNotBlank(dto.getOrgIds())&&dto.getCourseIds()!=null&&!dto.getCourseIds().isEmpty()){
|
||||||
if(StringUtil.isNotBlank(dto.getOrgIds())){
|
//log.info("【"+dto.getOrgAid()+"】 按机构过滤和自己创建的课程");
|
||||||
|
//log.info(" orgids "+dto.getOrgIds());
|
||||||
|
if(dto.getOrgIds().contains(",")){
|
||||||
|
String[] split = dto.getOrgIds().split(",");
|
||||||
|
List<String> 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("【"+dto.getOrgAid()+"】 按机构过滤和自己创建的课程");
|
||||||
//log.info(" orgids "+dto.getOrgIds());
|
//log.info(" orgids "+dto.getOrgIds());
|
||||||
if(dto.getOrgIds().contains(",")){
|
if(dto.getOrgIds().contains(",")){
|
||||||
@@ -272,7 +285,8 @@ public class CourseServiceImpl implements ICourseService {
|
|||||||
}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())));
|
||||||
}
|
}
|
||||||
}else {
|
}
|
||||||
|
if (!StringUtil.isNotBlank(dto.getOrgIds())&&(dto.getCourseIds()==null||dto.getCourseIds().isEmpty())){
|
||||||
//log.info("【"+dto.getOrgAid()+"】 机构ids没有, 只查询自己创建的课程");
|
//log.info("【"+dto.getOrgAid()+"】 机构ids没有, 只查询自己创建的课程");
|
||||||
//没有机构权限,只能查出自己创建的
|
//没有机构权限,只能查出自己创建的
|
||||||
filters.add(FieldFilters.eq("sysCreateAid",dto.getOrgAid()));
|
filters.add(FieldFilters.eq("sysCreateAid",dto.getOrgAid()));
|
||||||
@@ -294,9 +308,27 @@ public class CourseServiceImpl implements ICourseService {
|
|||||||
}else {
|
}else {
|
||||||
oc=OrderCondition.desc("id");
|
oc=OrderCondition.desc("id");
|
||||||
}
|
}
|
||||||
|
PageList<Course> rs=courseDao.findPage(pageIndex, pageSize, filters, oc);
|
||||||
PageList<Course> rs=courseDao.findPage(pageIndex, pageSize, filters, oc);
|
|
||||||
//log.info("查询出的条数:"+rs.getCount());
|
//log.info("查询出的条数:"+rs.getCount());
|
||||||
|
if(dto.getCourseIds()!=null&&!dto.getCourseIds().isEmpty()){
|
||||||
|
//查出属于机构的课程和创建人的课程
|
||||||
|
List<String> courseIds = courseDao.findListByFilters(oc, filters).stream().map(Course::getId).collect(Collectors.toList());
|
||||||
|
//找出courseIds和dto.getCourseIds的差集
|
||||||
|
List<String> collect = dto.getCourseIds().stream().filter(courseIds::contains).collect(Collectors.toList());
|
||||||
|
//将属于项目内课程 但不属于组织机构和创建人的课程设置为无权限
|
||||||
|
if (!collect.isEmpty()){
|
||||||
|
List<Course> list = rs.getList();
|
||||||
|
list.forEach(e->{
|
||||||
|
if (collect.contains(e.getId())){
|
||||||
|
e.setIsPermission(false);
|
||||||
|
}else {
|
||||||
|
e.setIsPermission(true);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
rs.setList(list);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return rs;
|
return rs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user