mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/per-boe/java-servers.git
synced 2025-12-11 20:06:51 +08:00
在线可权限更改逻辑
This commit is contained in:
@@ -131,12 +131,5 @@ public class CourseQueryDto {
|
|||||||
* 登录人id
|
* 登录人id
|
||||||
*/
|
*/
|
||||||
private String userId;
|
private String userId;
|
||||||
/**
|
|
||||||
* 任务课件id
|
|
||||||
*/
|
|
||||||
private List<String> courseIds;
|
|
||||||
/**
|
|
||||||
* 项目id
|
|
||||||
*/
|
|
||||||
private Long projectId;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -262,17 +262,7 @@ public class CourseServiceImpl implements ICourseService {
|
|||||||
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> filters2 = createFilters(dto);
|
List<IFieldFilter> filters2 = createFilters(dto);
|
||||||
String sql = "SELECT\n" +
|
List<String> list = getStrings(dto);
|
||||||
"\ts.id \n" +
|
|
||||||
"FROM\n" +
|
|
||||||
"\tboe.student s \n" +
|
|
||||||
"WHERE\n" +
|
|
||||||
"\ts.deleted = 0 \n" +
|
|
||||||
"\tAND s.type = 1 \n" +
|
|
||||||
"\tAND s.pid = ?1\n" +
|
|
||||||
"\tand s.student_id=?2 ";
|
|
||||||
List<String> list = courseTeacherDao.sqlFindList(sql,dto.getProjectId(),dto.getOrgAid());
|
|
||||||
// String aid=getCurrent().getAccountId();
|
|
||||||
//有权限的查询,也同时查询出创建人的数据,在权限上
|
//有权限的查询,也同时查询出创建人的数据,在权限上
|
||||||
if(TempFilterConfig.Manager_CourseFile_ByOrgIds) {
|
if(TempFilterConfig.Manager_CourseFile_ByOrgIds) {
|
||||||
if(dto.getIsSystemAdmin()==null || !dto.getIsSystemAdmin()) {
|
if(dto.getIsSystemAdmin()==null || !dto.getIsSystemAdmin()) {
|
||||||
@@ -284,18 +274,17 @@ public class CourseServiceImpl implements ICourseService {
|
|||||||
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)));
|
||||||
// filters2.add(FieldFilters.eq("sysCreateAid",dto.getOrgAid()));
|
if(!list.isEmpty()){
|
||||||
if(dto.getCourseIds()!=null&&!dto.getCourseIds().isEmpty()&& !list.isEmpty()){
|
filters2.add(FieldFilters.or(FieldFilters.in("id",list),FieldFilters.eq("sysCreateAid",dto.getOrgAid())));
|
||||||
filters2.add(FieldFilters.or(FieldFilters.eq("sysCreateAid",dto.getOrgAid()),FieldFilters.in("id",dto.getCourseIds())));
|
}else {
|
||||||
}else{
|
|
||||||
filters2.add(FieldFilters.eq("sysCreateAid",dto.getOrgAid()));
|
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()));
|
||||||
if(dto.getCourseIds()!=null&&!dto.getCourseIds().isEmpty()&& !list.isEmpty()){
|
if(!list.isEmpty()){
|
||||||
filters2.add(FieldFilters.or(FieldFilters.eq("sysCreateAid",dto.getOrgAid()),FieldFilters.in("id",dto.getCourseIds())));
|
filters2.add(FieldFilters.or(FieldFilters.in("id",list),FieldFilters.eq("sysCreateAid",dto.getOrgAid())));
|
||||||
}else{
|
}else {
|
||||||
filters2.add(FieldFilters.eq("sysCreateAid",dto.getOrgAid()));
|
filters2.add(FieldFilters.eq("sysCreateAid",dto.getOrgAid()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -304,9 +293,10 @@ 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()));
|
||||||
if(dto.getCourseIds()!=null&&!dto.getCourseIds().isEmpty()&& !list.isEmpty()){
|
if(!list.isEmpty()){
|
||||||
filters2.add(FieldFilters.or(FieldFilters.eq("sysCreateAid",dto.getOrgAid()),FieldFilters.in("id",dto.getCourseIds())));
|
filters2.add(FieldFilters.or(FieldFilters.eq("sysCreateAid",dto.getOrgAid()),FieldFilters.in("id",list)));
|
||||||
}else{
|
}
|
||||||
|
else {
|
||||||
filters2.add(FieldFilters.eq("sysCreateAid",dto.getOrgAid()));
|
filters2.add(FieldFilters.eq("sysCreateAid",dto.getOrgAid()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -314,21 +304,6 @@ public class CourseServiceImpl implements ICourseService {
|
|||||||
//log.info("【"+dto.getOrgAid()+"】IsSystemAdmin is true 不过机构过滤,查询全部");
|
//log.info("【"+dto.getOrgAid()+"】IsSystemAdmin is true 不过机构过滤,查询全部");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// List<Object[]> listFields=new ArrayList<>();
|
|
||||||
// List<Object[]> listFields1=new ArrayList<>();
|
|
||||||
// String sql="SELECT name FROM "+Course.class.getSimpleName()+" WHERE sys_create_aid =?1";
|
|
||||||
// String sql1="select name from "+Course.class.getSimpleName()+" where org_id in (?1)";
|
|
||||||
// try {
|
|
||||||
// listFields1=courseDao.findListFields(sql,"965342027497607168");
|
|
||||||
// listFields = courseDao.findListFields(sql1, "123");
|
|
||||||
// } catch (Exception e) {
|
|
||||||
// throw new RuntimeException(e);
|
|
||||||
// }
|
|
||||||
// List<Object[]> collect1 = Stream.concat(listFields1.stream(), listFields.stream())
|
|
||||||
// .distinct()
|
|
||||||
// .collect(Collectors.toList());
|
|
||||||
// paginate(collect1, pageIndex, pageSize);
|
|
||||||
|
|
||||||
|
|
||||||
//自动添加过滤已删除
|
//自动添加过滤已删除
|
||||||
filters.add(FieldFilters.eq("deleted",false));
|
filters.add(FieldFilters.eq("deleted",false));
|
||||||
@@ -353,28 +328,17 @@ public class CourseServiceImpl implements ICourseService {
|
|||||||
// 使用distinct()配合自定义的去重条件
|
// 使用distinct()配合自定义的去重条件
|
||||||
.filter(distinctByKey(c -> c.getId()))
|
.filter(distinctByKey(c -> c.getId()))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
// long startTime = System.nanoTime();
|
|
||||||
// PageList<Course> rs=courseDao.findPage(pageIndex, pageSize, filters, oc);
|
// PageList<Course> rs=courseDao.findPage(pageIndex, pageSize, filters, oc);
|
||||||
// long endTime = System.nanoTime();
|
// long endTime = System.nanoTime();
|
||||||
// // 计算并转换执行时间为秒
|
|
||||||
// double durationInSeconds = (endTime - startTime) / 1_000_000_000.0;
|
|
||||||
// System.out.printf("方法执行时间: %.6f 秒%n", durationInSeconds);
|
|
||||||
//log.info("查询出的条数:"+rs.getCount());
|
//log.info("查询出的条数:"+rs.getCount());
|
||||||
if(dto.getCourseIds()!=null&&!dto.getCourseIds().isEmpty()){
|
if(!mergedList.isEmpty()){
|
||||||
//查出属于机构的课程和创建人的课程
|
mergedList.forEach(e->{
|
||||||
List<String> courseIds = mergedList.stream().map(Course::getId).collect(Collectors.toList());
|
if(list.contains(e.getId())){
|
||||||
//找出courseIds和dto.getCourseIds的差集
|
e.setIsPermission(false);
|
||||||
List<String> collect = dto.getCourseIds().stream().filter(courseIds::contains).collect(Collectors.toList());
|
}else {
|
||||||
//将属于项目内课程 但不属于组织机构和创建人的课程设置为无权限
|
e.setIsPermission(true);
|
||||||
if (!collect.isEmpty()){
|
}
|
||||||
mergedList.forEach(e->{
|
});
|
||||||
if (collect.contains(e.getId())){
|
|
||||||
e.setIsPermission(false);
|
|
||||||
}else {
|
|
||||||
e.setIsPermission(true);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
List<Course> paginate = paginate(mergedList, pageIndex, pageSize);
|
List<Course> paginate = paginate(mergedList, pageIndex, pageSize);
|
||||||
PageList<Course> rs=new PageList<>();
|
PageList<Course> rs=new PageList<>();
|
||||||
@@ -382,6 +346,70 @@ public class CourseServiceImpl implements ICourseService {
|
|||||||
rs.setList(paginate);
|
rs.setList(paginate);
|
||||||
return rs;
|
return rs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private List<String> getStrings(CourseQueryDto dto) {
|
||||||
|
List<Long> list=new ArrayList<>();
|
||||||
|
if(StringUtil.isNotBlank(dto.getOrgIds())){
|
||||||
|
if(dto.getOrgIds().contains(",")){
|
||||||
|
String[] split = dto.getOrgIds().split(",");
|
||||||
|
List<String> strings = Arrays.asList(split);
|
||||||
|
String sql = "SELECT DISTINCT\n" +
|
||||||
|
"pt.course_id\n" +
|
||||||
|
"FROM\n" +
|
||||||
|
"boe.student s INNER JOIN boe.project_task pt on s.pid=pt.project_id inner join boe_base.boe_course c on c.id=pt.course_id\n" +
|
||||||
|
"\n" +
|
||||||
|
"WHERE\n" +
|
||||||
|
"\n" +
|
||||||
|
"s.deleted = 0 \n" +
|
||||||
|
"and pt.deleted=0\n" +
|
||||||
|
"and c.deleted=0\n" +
|
||||||
|
"AND s.type = 1 \n" +
|
||||||
|
"AND s.student_id = ?1\n" +
|
||||||
|
"and c.org_id not in(?2)\n" +
|
||||||
|
"and c.sys_create_aid !=?3";
|
||||||
|
list = courseTeacherDao.sqlFindList(sql, dto.getOrgAid(),strings,dto.getOrgAid());
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
String sql = "SELECT DISTINCT\n" +
|
||||||
|
"pt.course_id\n" +
|
||||||
|
"FROM\n" +
|
||||||
|
"boe.student s INNER JOIN boe.project_task pt on s.pid=pt.project_id inner join boe_base.boe_course c on c.id=pt.course_id\n" +
|
||||||
|
"\n" +
|
||||||
|
"WHERE\n" +
|
||||||
|
"\n" +
|
||||||
|
"s.deleted = 0 \n" +
|
||||||
|
"and pt.deleted=0\n" +
|
||||||
|
"and c.deleted=0\n" +
|
||||||
|
"AND s.type = 1 \n" +
|
||||||
|
"AND s.student_id = ?1\n" +
|
||||||
|
"and c.org_id !=?2\n" +
|
||||||
|
"and c.sys_create_aid !=?3";
|
||||||
|
list = courseTeacherDao.sqlFindList(sql, dto.getOrgAid(), dto.getOrgIds(),dto.getOrgAid());
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
String sql = "SELECT DISTINCT\n" +
|
||||||
|
"pt.course_id\n" +
|
||||||
|
"FROM\n" +
|
||||||
|
"boe.student s INNER JOIN boe.project_task pt on s.pid=pt.project_id inner join boe_base.boe_course c on c.id=pt.course_id\n" +
|
||||||
|
"\n" +
|
||||||
|
"WHERE\n" +
|
||||||
|
"\n" +
|
||||||
|
"s.deleted = 0 \n" +
|
||||||
|
"and pt.deleted=0\n" +
|
||||||
|
"and c.deleted=0\n" +
|
||||||
|
"AND s.type = 1 \n" +
|
||||||
|
"AND s.student_id = ?1\n" +
|
||||||
|
"and c.sys_create_aid !=?2";
|
||||||
|
list = courseTeacherDao.sqlFindList(sql, dto.getOrgAid(),dto.getOrgAid());
|
||||||
|
}
|
||||||
|
List<String>list1=new ArrayList<>();
|
||||||
|
for (Object obj : list) {
|
||||||
|
list1.add(obj.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
return list1;
|
||||||
|
}
|
||||||
|
|
||||||
public static <T> List<T> paginate(List<T> list, int pageNumber, int pageSize) {
|
public static <T> List<T> paginate(List<T> list, int pageNumber, int pageSize) {
|
||||||
if (list == null || list.isEmpty() || pageNumber <= 0 || pageSize <= 0) {
|
if (list == null || list.isEmpty() || pageNumber <= 0 || pageSize <= 0) {
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
Reference in New Issue
Block a user