From dd0af3cbef2dd2a8642bb4871db5437444bb3c09 Mon Sep 17 00:00:00 2001 From: xiaozhequ <792962424@qq.com> Date: Thu, 13 Jun 2024 18:11:41 +0800 Subject: [PATCH 01/22] =?UTF-8?q?=E9=80=89=E6=8B=A9=E5=9C=A8=E7=BA=BF?= =?UTF-8?q?=E5=8F=AF=E6=97=B6=E5=A2=9E=E5=8A=A0=E6=95=B0=E6=8D=AE=E6=9D=83?= =?UTF-8?q?=E9=99=90=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/course/dto/CourseQueryDto.java | 6 +++ .../com/xboe/module/course/entity/Course.java | 3 ++ .../service/impl/CourseServiceImpl.java | 52 +++++++++++++++---- 3 files changed, 51 insertions(+), 10 deletions(-) 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; } From 62884bcc154e59143313716aded6d5b8edcb84f8 Mon Sep 17 00:00:00 2001 From: xiaozhequ <792962424@qq.com> Date: Tue, 18 Jun 2024 14:56:28 +0800 Subject: [PATCH 02/22] =?UTF-8?q?=E6=89=80=E6=9C=89=E5=90=8E=E5=8F=B0?= =?UTF-8?q?=E4=BA=BA=E8=BF=87=E6=BB=A4=E5=9C=A8=E7=BA=BF=E8=AF=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/xboe/module/course/api/CourseManageApi.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/course/api/CourseManageApi.java b/servers/boe-server-all/src/main/java/com/xboe/module/course/api/CourseManageApi.java index 57f0081a..eb6d1508 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/course/api/CourseManageApi.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/course/api/CourseManageApi.java @@ -129,12 +129,12 @@ public class CourseManageApi extends ApiBaseController{ List orgIds = userOrgIds.getIds(); - if(userOrgIds.getPermissions().containsKey(UserOrgIds.IsSystemAdminKey)){ - dto.setIsSystemAdmin(userOrgIds.getPermissions().get(UserOrgIds.IsSystemAdminKey)); - }else { - dto.setIsSystemAdmin(false); - } - +// if(userOrgIds.getPermissions().containsKey(UserOrgIds.IsSystemAdminKey)){ +// dto.setIsSystemAdmin(userOrgIds.getPermissions().get(UserOrgIds.IsSystemAdminKey)); +// }else { +// dto.setIsSystemAdmin(false); +// } + dto.setIsSystemAdmin(false); String ids=""; if(userOrgIds.getIds()!=null && !userOrgIds.getIds().isEmpty()) { From 2fcdb6b4b6d8e4e59c97418f7d450f21e75d664a Mon Sep 17 00:00:00 2001 From: xiaozhequ <792962424@qq.com> Date: Tue, 18 Jun 2024 15:49:10 +0800 Subject: [PATCH 03/22] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E8=BF=98=E5=8E=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/xboe/module/course/api/CourseManageApi.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/course/api/CourseManageApi.java b/servers/boe-server-all/src/main/java/com/xboe/module/course/api/CourseManageApi.java index eb6d1508..238e98a0 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/course/api/CourseManageApi.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/course/api/CourseManageApi.java @@ -129,12 +129,12 @@ public class CourseManageApi extends ApiBaseController{ List orgIds = userOrgIds.getIds(); -// if(userOrgIds.getPermissions().containsKey(UserOrgIds.IsSystemAdminKey)){ -// dto.setIsSystemAdmin(userOrgIds.getPermissions().get(UserOrgIds.IsSystemAdminKey)); -// }else { -// dto.setIsSystemAdmin(false); -// } - dto.setIsSystemAdmin(false); + if(userOrgIds.getPermissions().containsKey(UserOrgIds.IsSystemAdminKey)){ + dto.setIsSystemAdmin(userOrgIds.getPermissions().get(UserOrgIds.IsSystemAdminKey)); + }else { + dto.setIsSystemAdmin(false); + } +// dto.setIsSystemAdmin(false); String ids=""; if(userOrgIds.getIds()!=null && !userOrgIds.getIds().isEmpty()) { From de69ba1c118fb7c0689ccf4bfcba68d586b23075 Mon Sep 17 00:00:00 2001 From: xiaozhequ <792962424@qq.com> Date: Wed, 19 Jun 2024 15:34:53 +0800 Subject: [PATCH 04/22] =?UTF-8?q?=E5=9C=A8=E7=BA=BF=E8=AF=BE=E6=9D=83?= =?UTF-8?q?=E9=99=90=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/course/api/CourseManageApi.java | 22 ++-- .../service/impl/CourseServiceImpl.java | 122 +++++++++++++----- 2 files changed, 98 insertions(+), 46 deletions(-) diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/course/api/CourseManageApi.java b/servers/boe-server-all/src/main/java/com/xboe/module/course/api/CourseManageApi.java index 238e98a0..c04b2cde 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/course/api/CourseManageApi.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/course/api/CourseManageApi.java @@ -1,11 +1,7 @@ package com.xboe.module.course.api; import java.io.OutputStream; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; @@ -129,12 +125,11 @@ public class CourseManageApi extends ApiBaseController{ List orgIds = userOrgIds.getIds(); - if(userOrgIds.getPermissions().containsKey(UserOrgIds.IsSystemAdminKey)){ - dto.setIsSystemAdmin(userOrgIds.getPermissions().get(UserOrgIds.IsSystemAdminKey)); - }else { - dto.setIsSystemAdmin(false); - } -// dto.setIsSystemAdmin(false); +// if(userOrgIds.getPermissions().containsKey(UserOrgIds.IsSystemAdminKey)){ +// dto.setIsSystemAdmin(userOrgIds.getPermissions().get(UserOrgIds.IsSystemAdminKey)); +// }else { +// dto.setIsSystemAdmin(false); +// } String ids=""; if(userOrgIds.getIds()!=null && !userOrgIds.getIds().isEmpty()) { @@ -142,6 +137,11 @@ public class CourseManageApi extends ApiBaseController{ } //log.info("获取到的用户的组织机构权限ids",ids); String aid=getCurrent().getAccountId(); + if(Objects.equals(aid, "965342027497607168")||Objects.equals(aid, "1739115608332701697")){ + dto.setIsSystemAdmin(true); + }else { + dto.setIsSystemAdmin(false); + } //如果前端查询当前人的,这里去掉 if(StringUtils.isNotBlank(dto.getAid())) { dto.setAid(null); 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 c1f26660..4d8fa8c5 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 @@ -4,10 +4,16 @@ import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.*; +import java.util.concurrent.ConcurrentHashMap; +import java.util.function.Function; +import java.util.function.Predicate; import java.util.stream.Collectors; +import java.util.stream.Stream; import javax.annotation.Resource; +import javax.management.Query; +import com.xboe.core.orm.*; import org.apache.commons.lang3.StringUtils; import org.hibernate.mapping.IdGenerator; import org.springframework.beans.factory.annotation.Autowired; @@ -23,11 +29,6 @@ import com.xboe.common.beans.KeyValue; import com.xboe.common.utils.IDGenerator; import com.xboe.common.utils.StringUtil; import com.xboe.core.event.IEventDataSender; -import com.xboe.core.orm.FieldFilters; -import com.xboe.core.orm.IFieldFilter; -import com.xboe.core.orm.LikeMatchMode; -import com.xboe.core.orm.QueryBuilder; -import com.xboe.core.orm.UpdateBuilder; import com.xboe.module.course.dao.CourseContentDao; import com.xboe.module.course.dao.CourseCrowdDao; import com.xboe.module.course.dao.CourseDao; @@ -254,50 +255,68 @@ public class CourseServiceImpl implements ICourseService { @Override public PageList findPage(int pageIndex, int pageSize, CourseQueryDto dto) { List filters = createFilters(dto); - List filters1=new ArrayList<>(); + List filters2 = createFilters(dto); //有权限的查询,也同时查询出创建人的数据,在权限上 if(TempFilterConfig.Manager_CourseFile_ByOrgIds) { if(dto.getIsSystemAdmin()==null || !dto.getIsSystemAdmin()) { - 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())){ + if(StringUtil.isNotBlank(dto.getOrgIds())){ //log.info("【"+dto.getOrgAid()+"】 按机构过滤和自己创建的课程"); //log.info(" orgids "+dto.getOrgIds()); if(dto.getOrgIds().contains(",")){ String[] split = dto.getOrgIds().split(","); List 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))); +// filters2.add(FieldFilters.eq("sysCreateAid",dto.getOrgAid())); + if(dto.getCourseIds()!=null&&!dto.getCourseIds().isEmpty()){ + filters2.add(FieldFilters.or(FieldFilters.eq("sysCreateAid",dto.getOrgAid()),FieldFilters.eq("id",dto.getCourseIds()))); + }else{ + filters2.add(FieldFilters.eq("sysCreateAid",dto.getOrgAid())); + } }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())); + if(dto.getCourseIds()!=null&&!dto.getCourseIds().isEmpty()){ + filters2.add(FieldFilters.or(FieldFilters.eq("sysCreateAid",dto.getOrgAid()),FieldFilters.eq("id",dto.getCourseIds()))); + }else{ + filters2.add(FieldFilters.eq("sysCreateAid",dto.getOrgAid())); + } } } - if (!StringUtil.isNotBlank(dto.getOrgIds())&&(dto.getCourseIds()==null||dto.getCourseIds().isEmpty())){ + if (!StringUtil.isNotBlank(dto.getOrgIds())){ //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()){ + filters2.add(FieldFilters.or(FieldFilters.eq("sysCreateAid",dto.getOrgAid()),FieldFilters.eq("id",dto.getCourseIds()))); + }else{ + filters2.add(FieldFilters.eq("sysCreateAid",dto.getOrgAid())); + } } }else { //log.info("【"+dto.getOrgAid()+"】IsSystemAdmin is true 不过机构过滤,查询全部"); } } - +// List listFields=new ArrayList<>(); +// List 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 collect1 = Stream.concat(listFields1.stream(), listFields.stream()) +// .distinct() +// .collect(Collectors.toList()); +// paginate(collect1, pageIndex, pageSize); + + //自动添加过滤已删除 filters.add(FieldFilters.eq("deleted",false)); + filters2.add(FieldFilters.eq("deleted",false)); + //同时查出所有项目内课程 OrderCondition oc=null; if(StringUtils.isNotBlank(dto.getOrderField())) { if(dto.getOrderAsc()||dto.getOrderAsc()==null) { @@ -308,30 +327,63 @@ public class CourseServiceImpl implements ICourseService { }else { oc=OrderCondition.desc("id"); } - PageList rs=courseDao.findPage(pageIndex, pageSize, filters, oc); + List listByFilters = new ArrayList<>(); + if(StringUtil.isNotBlank(dto.getOrgIds())){ + listByFilters = courseDao.findListByFilters(oc, filters); + } + List listByFilters1 = courseDao.findListByFilters(oc, filters2); + List mergedList = Stream.concat(listByFilters.stream(), listByFilters1.stream()) + // 使用distinct()配合自定义的去重条件 + .filter(distinctByKey(c -> c.getId())) + .collect(Collectors.toList()); +// long startTime = System.nanoTime(); +// PageList rs=courseDao.findPage(pageIndex, pageSize, filters, oc); +// long endTime = System.nanoTime(); +// // 计算并转换执行时间为秒 +// double durationInSeconds = (endTime - startTime) / 1_000_000_000.0; +// System.out.printf("方法执行时间: %.6f 秒%n", durationInSeconds); //log.info("查询出的条数:"+rs.getCount()); if(dto.getCourseIds()!=null&&!dto.getCourseIds().isEmpty()){ //查出属于机构的课程和创建人的课程 - List courseIds = courseDao.findListByFilters(oc, filters).stream().map(Course::getId).collect(Collectors.toList()); + List courseIds = mergedList.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->{ + mergedList.forEach(e->{ if (collect.contains(e.getId())){ e.setIsPermission(false); }else { e.setIsPermission(true); } }); - rs.setList(list); } } - + List paginate = paginate(mergedList, pageIndex, pageSize); + PageList rs=new PageList<>(); + rs.setCount(mergedList.size()); + rs.setList(paginate); return rs; } + public static List paginate(List list, int pageNumber, int pageSize) { + if (list == null || list.isEmpty() || pageNumber <= 0 || pageSize <= 0) { + return null; + } + int fromIndex = (pageNumber - 1) * pageSize; + int toIndex = Math.min(fromIndex + pageSize, list.size()); + + if (fromIndex >= list.size()) { + // 请求的页码超过了最大页数,返回空列表 + return null; + } + + return list.subList(fromIndex, toIndex); + } + private static Predicate distinctByKey(Function keyExtractor) { + Set seen = ConcurrentHashMap.newKeySet(); + return t -> seen.add(keyExtractor.apply(t)); + } @Override public List findList(CourseQueryDto dto) { List filters = createFilters(dto); From 53c38baf222e7c59de7d5fc1de1bce42709b9267 Mon Sep 17 00:00:00 2001 From: xiaozhequ <792962424@qq.com> Date: Fri, 21 Jun 2024 15:46:43 +0800 Subject: [PATCH 05/22] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E5=A4=B1=E8=B4=A5bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/course/dto/CourseQueryDto.java | 4 +++ .../service/impl/CourseServiceImpl.java | 29 +++++++++++++++---- 2 files changed, 27 insertions(+), 6 deletions(-) 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 6f895735..0bca46f6 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 @@ -135,4 +135,8 @@ public class CourseQueryDto { * 任务课件id */ private List courseIds; + /** + * 项目id + */ + private Long projectId; } 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 4d8fa8c5..d5d4ad10 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 @@ -13,7 +13,11 @@ import java.util.stream.Stream; import javax.annotation.Resource; import javax.management.Query; +import com.xboe.api.ThirdApi; import com.xboe.core.orm.*; +import com.xboe.data.dto.UserData; +import com.xboe.school.study.dao.StudyCourseDao; +import com.xboe.school.study.entity.StudyCourse; import org.apache.commons.lang3.StringUtils; import org.hibernate.mapping.IdGenerator; import org.springframework.beans.factory.annotation.Autowired; @@ -109,6 +113,8 @@ public class CourseServiceImpl implements ICourseService { @Autowired(required = false) private IEventDataSender eventSender; + + /** * 生成过滤条件 @@ -256,6 +262,17 @@ public class CourseServiceImpl implements ICourseService { public PageList findPage(int pageIndex, int pageSize, CourseQueryDto dto) { List filters = createFilters(dto); List filters2 = createFilters(dto); + String sql = "SELECT\n" + + "\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 list = courseTeacherDao.sqlFindList(sql,dto.getProjectId(),dto.getOrgAid()); +// String aid=getCurrent().getAccountId(); //有权限的查询,也同时查询出创建人的数据,在权限上 if(TempFilterConfig.Manager_CourseFile_ByOrgIds) { if(dto.getIsSystemAdmin()==null || !dto.getIsSystemAdmin()) { @@ -268,16 +285,16 @@ public class CourseServiceImpl implements ICourseService { // filters.add(FieldFilters.or(FieldFilters.in("orgId",strings),FieldFilters.eq("sysCreateAid",dto.getOrgAid()))); filters.add((FieldFilters.in("orgId",strings))); // filters2.add(FieldFilters.eq("sysCreateAid",dto.getOrgAid())); - if(dto.getCourseIds()!=null&&!dto.getCourseIds().isEmpty()){ - filters2.add(FieldFilters.or(FieldFilters.eq("sysCreateAid",dto.getOrgAid()),FieldFilters.eq("id",dto.getCourseIds()))); + if(dto.getCourseIds()!=null&&!dto.getCourseIds().isEmpty()&& !list.isEmpty()){ + filters2.add(FieldFilters.or(FieldFilters.eq("sysCreateAid",dto.getOrgAid()),FieldFilters.in("id",dto.getCourseIds()))); }else{ filters2.add(FieldFilters.eq("sysCreateAid",dto.getOrgAid())); } }else { // filters.add(FieldFilters.or(FieldFilters.eq("orgId",dto.getOrgIds()),FieldFilters.eq("sysCreateAid",dto.getOrgAid()))); filters.add(FieldFilters.eq("orgId",dto.getOrgIds())); - if(dto.getCourseIds()!=null&&!dto.getCourseIds().isEmpty()){ - filters2.add(FieldFilters.or(FieldFilters.eq("sysCreateAid",dto.getOrgAid()),FieldFilters.eq("id",dto.getCourseIds()))); + if(dto.getCourseIds()!=null&&!dto.getCourseIds().isEmpty()&& !list.isEmpty()){ + filters2.add(FieldFilters.or(FieldFilters.eq("sysCreateAid",dto.getOrgAid()),FieldFilters.in("id",dto.getCourseIds()))); }else{ filters2.add(FieldFilters.eq("sysCreateAid",dto.getOrgAid())); } @@ -287,8 +304,8 @@ public class CourseServiceImpl implements ICourseService { //log.info("【"+dto.getOrgAid()+"】 机构ids没有, 只查询自己创建的课程"); //没有机构权限,只能查出自己创建的 // filters.add(FieldFilters.eq("sysCreateAid",dto.getOrgAid())); - if(dto.getCourseIds()!=null&&!dto.getCourseIds().isEmpty()){ - filters2.add(FieldFilters.or(FieldFilters.eq("sysCreateAid",dto.getOrgAid()),FieldFilters.eq("id",dto.getCourseIds()))); + if(dto.getCourseIds()!=null&&!dto.getCourseIds().isEmpty()&& !list.isEmpty()){ + filters2.add(FieldFilters.or(FieldFilters.eq("sysCreateAid",dto.getOrgAid()),FieldFilters.in("id",dto.getCourseIds()))); }else{ filters2.add(FieldFilters.eq("sysCreateAid",dto.getOrgAid())); } From a2317d0b597ba8e7159d1faa9658dfeae344ea20 Mon Sep 17 00:00:00 2001 From: xiaozhequ <792962424@qq.com> Date: Mon, 24 Jun 2024 13:47:34 +0800 Subject: [PATCH 06/22] =?UTF-8?q?=E5=9C=A8=E7=BA=BF=E5=8F=AF=E6=9D=83?= =?UTF-8?q?=E9=99=90=E6=9B=B4=E6=94=B9=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/course/dto/CourseQueryDto.java | 9 +- .../service/impl/CourseServiceImpl.java | 138 +++++++++++------- 2 files changed, 84 insertions(+), 63 deletions(-) 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 0bca46f6..141d7ec6 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 @@ -131,12 +131,5 @@ public class CourseQueryDto { * 登录人id */ private String userId; - /** - * 任务课件id - */ - private List courseIds; - /** - * 项目id - */ - private Long projectId; + } 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 d5d4ad10..75e84b1e 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 @@ -262,17 +262,7 @@ public class CourseServiceImpl implements ICourseService { public PageList findPage(int pageIndex, int pageSize, CourseQueryDto dto) { List filters = createFilters(dto); List filters2 = createFilters(dto); - String sql = "SELECT\n" + - "\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 list = courseTeacherDao.sqlFindList(sql,dto.getProjectId(),dto.getOrgAid()); -// String aid=getCurrent().getAccountId(); + List list = getStrings(dto); //有权限的查询,也同时查询出创建人的数据,在权限上 if(TempFilterConfig.Manager_CourseFile_ByOrgIds) { if(dto.getIsSystemAdmin()==null || !dto.getIsSystemAdmin()) { @@ -284,18 +274,17 @@ public class CourseServiceImpl implements ICourseService { List strings = Arrays.asList(split); // filters.add(FieldFilters.or(FieldFilters.in("orgId",strings),FieldFilters.eq("sysCreateAid",dto.getOrgAid()))); filters.add((FieldFilters.in("orgId",strings))); -// filters2.add(FieldFilters.eq("sysCreateAid",dto.getOrgAid())); - if(dto.getCourseIds()!=null&&!dto.getCourseIds().isEmpty()&& !list.isEmpty()){ - filters2.add(FieldFilters.or(FieldFilters.eq("sysCreateAid",dto.getOrgAid()),FieldFilters.in("id",dto.getCourseIds()))); - }else{ + if(!list.isEmpty()){ + filters2.add(FieldFilters.or(FieldFilters.in("id",list),FieldFilters.eq("sysCreateAid",dto.getOrgAid()))); + }else { filters2.add(FieldFilters.eq("sysCreateAid",dto.getOrgAid())); } }else { // filters.add(FieldFilters.or(FieldFilters.eq("orgId",dto.getOrgIds()),FieldFilters.eq("sysCreateAid",dto.getOrgAid()))); filters.add(FieldFilters.eq("orgId",dto.getOrgIds())); - if(dto.getCourseIds()!=null&&!dto.getCourseIds().isEmpty()&& !list.isEmpty()){ - filters2.add(FieldFilters.or(FieldFilters.eq("sysCreateAid",dto.getOrgAid()),FieldFilters.in("id",dto.getCourseIds()))); - }else{ + if(!list.isEmpty()){ + filters2.add(FieldFilters.or(FieldFilters.in("id",list),FieldFilters.eq("sysCreateAid",dto.getOrgAid()))); + }else { filters2.add(FieldFilters.eq("sysCreateAid",dto.getOrgAid())); } } @@ -304,9 +293,10 @@ public class CourseServiceImpl implements ICourseService { //log.info("【"+dto.getOrgAid()+"】 机构ids没有, 只查询自己创建的课程"); //没有机构权限,只能查出自己创建的 // filters.add(FieldFilters.eq("sysCreateAid",dto.getOrgAid())); - if(dto.getCourseIds()!=null&&!dto.getCourseIds().isEmpty()&& !list.isEmpty()){ - filters2.add(FieldFilters.or(FieldFilters.eq("sysCreateAid",dto.getOrgAid()),FieldFilters.in("id",dto.getCourseIds()))); - }else{ + if(!list.isEmpty()){ + filters2.add(FieldFilters.or(FieldFilters.eq("sysCreateAid",dto.getOrgAid()),FieldFilters.in("id",list))); + } + else { filters2.add(FieldFilters.eq("sysCreateAid",dto.getOrgAid())); } } @@ -314,21 +304,6 @@ public class CourseServiceImpl implements ICourseService { //log.info("【"+dto.getOrgAid()+"】IsSystemAdmin is true 不过机构过滤,查询全部"); } } -// List listFields=new ArrayList<>(); -// List 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 collect1 = Stream.concat(listFields1.stream(), listFields.stream()) -// .distinct() -// .collect(Collectors.toList()); -// paginate(collect1, pageIndex, pageSize); - //自动添加过滤已删除 filters.add(FieldFilters.eq("deleted",false)); @@ -353,28 +328,17 @@ public class CourseServiceImpl implements ICourseService { // 使用distinct()配合自定义的去重条件 .filter(distinctByKey(c -> c.getId())) .collect(Collectors.toList()); -// long startTime = System.nanoTime(); // PageList rs=courseDao.findPage(pageIndex, pageSize, filters, oc); // long endTime = System.nanoTime(); -// // 计算并转换执行时间为秒 -// double durationInSeconds = (endTime - startTime) / 1_000_000_000.0; -// System.out.printf("方法执行时间: %.6f 秒%n", durationInSeconds); //log.info("查询出的条数:"+rs.getCount()); - if(dto.getCourseIds()!=null&&!dto.getCourseIds().isEmpty()){ - //查出属于机构的课程和创建人的课程 - List courseIds = mergedList.stream().map(Course::getId).collect(Collectors.toList()); - //找出courseIds和dto.getCourseIds的差集 - List collect = dto.getCourseIds().stream().filter(courseIds::contains).collect(Collectors.toList()); - //将属于项目内课程 但不属于组织机构和创建人的课程设置为无权限 - if (!collect.isEmpty()){ - mergedList.forEach(e->{ - if (collect.contains(e.getId())){ - e.setIsPermission(false); - }else { - e.setIsPermission(true); - } - }); - } + if(!mergedList.isEmpty()){ + mergedList.forEach(e->{ + if(list.contains(e.getId())){ + e.setIsPermission(false); + }else { + e.setIsPermission(true); + } + }); } List paginate = paginate(mergedList, pageIndex, pageSize); PageList rs=new PageList<>(); @@ -382,6 +346,70 @@ public class CourseServiceImpl implements ICourseService { rs.setList(paginate); return rs; } + + private List getStrings(CourseQueryDto dto) { + List list=new ArrayList<>(); + if(StringUtil.isNotBlank(dto.getOrgIds())){ + if(dto.getOrgIds().contains(",")){ + String[] split = dto.getOrgIds().split(","); + List 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()); + } + Listlist1=new ArrayList<>(); + for (Object obj : list) { + list1.add(obj.toString()); + } + + return list1; + } + public static List paginate(List list, int pageNumber, int pageSize) { if (list == null || list.isEmpty() || pageNumber <= 0 || pageSize <= 0) { return null; From a26ceb86d1bc1d44f557de84a6c841e7714afcaf Mon Sep 17 00:00:00 2001 From: xiaozhequ <792962424@qq.com> Date: Mon, 24 Jun 2024 14:04:53 +0800 Subject: [PATCH 07/22] =?UTF-8?q?=E5=AD=A6=E4=B9=A0=E8=B7=AF=E5=BE=84?= =?UTF-8?q?=E5=9B=BE=E4=BF=9D=E6=8C=81=E4=B8=80=E8=87=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xboe/module/course/service/impl/CourseServiceImpl.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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 75e84b1e..4188a942 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 @@ -363,7 +363,7 @@ public class CourseServiceImpl implements ICourseService { "s.deleted = 0 \n" + "and pt.deleted=0\n" + "and c.deleted=0\n" + - "AND s.type = 1 \n" + + "AND s.type in (1,2) \n" + "AND s.student_id = ?1\n" + "and c.org_id not in(?2)\n" + "and c.sys_create_aid !=?3"; @@ -380,7 +380,7 @@ public class CourseServiceImpl implements ICourseService { "s.deleted = 0 \n" + "and pt.deleted=0\n" + "and c.deleted=0\n" + - "AND s.type = 1 \n" + + "AND s.type in (1,2) \n" + "AND s.student_id = ?1\n" + "and c.org_id !=?2\n" + "and c.sys_create_aid !=?3"; @@ -397,7 +397,7 @@ public class CourseServiceImpl implements ICourseService { "s.deleted = 0 \n" + "and pt.deleted=0\n" + "and c.deleted=0\n" + - "AND s.type = 1 \n" + + "AND s.type in (1,2) \n" + "AND s.student_id = ?1\n" + "and c.sys_create_aid !=?2"; list = courseTeacherDao.sqlFindList(sql, dto.getOrgAid(),dto.getOrgAid()); From f950788e0891195e437033f80f5e883b80dea702 Mon Sep 17 00:00:00 2001 From: xiaozhequ <792962424@qq.com> Date: Mon, 24 Jun 2024 14:58:13 +0800 Subject: [PATCH 08/22] =?UTF-8?q?=E8=AF=BE=E7=A8=8B=E6=9D=83=E9=99=90?= =?UTF-8?q?=E5=AD=A6=E4=B9=A0=E8=B7=AF=E5=BE=84=E5=9B=BE=E4=BF=9D=E6=8C=81?= =?UTF-8?q?=E4=B8=80=E8=87=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/CourseServiceImpl.java | 84 +++++++++++++++++-- 1 file changed, 77 insertions(+), 7 deletions(-) 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 4188a942..8b0778e2 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 @@ -262,7 +262,10 @@ public class CourseServiceImpl implements ICourseService { public PageList findPage(int pageIndex, int pageSize, CourseQueryDto dto) { List filters = createFilters(dto); List filters2 = createFilters(dto); - List list = getStrings(dto); + List list1 = getProject(dto); + List list2 = getRouter(dto); + Set list = new HashSet<>(list1); + list.addAll(list2); //有权限的查询,也同时查询出创建人的数据,在权限上 if(TempFilterConfig.Manager_CourseFile_ByOrgIds) { if(dto.getIsSystemAdmin()==null || !dto.getIsSystemAdmin()) { @@ -347,7 +350,72 @@ public class CourseServiceImpl implements ICourseService { return rs; } - private List getStrings(CourseQueryDto dto) { + private List getRouter(CourseQueryDto dto) { + List list=new ArrayList<>(); + if(StringUtil.isNotBlank(dto.getOrgIds())){ + if(dto.getOrgIds().contains(",")){ + String[] split = dto.getOrgIds().split(","); + List strings = Arrays.asList(split); + String sql = "SELECT DISTINCT\n" + + "rt.course_id\n" + + "FROM\n" + + "boe.student s INNER JOIN boe.router_task rt on s.pid=rt.router_id inner join boe_base.boe_course c on c.id=rt.course_id\n" + + "\n" + + "WHERE\n" + + "\n" + + "s.deleted = 0 \n" + + "and rt.deleted=0\n" + + "and rt.type=1\n" + + "and c.deleted=0\n" + + "AND s.type =2 \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" + + "rt.course_id\n" + + "FROM\n" + + "boe.student s INNER JOIN boe.router_task rt on s.pid=rt.router_id inner join boe_base.boe_course c on c.id=rt.course_id\n" + + "\n" + + "WHERE\n" + + "\n" + + "s.deleted = 0 \n" + + "and rt.deleted=0\n" + + "and rt.type=1\n" + + "and c.deleted=0\n" + + "AND s.type =2 \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" + + "rt.course_id\n" + + "FROM\n" + + "boe.student s INNER JOIN boe.router_task rt on s.pid=rt.router_id inner join boe_base.boe_course c on c.id=rt.course_id\n" + + "\n" + + "WHERE\n" + + "\n" + + "s.deleted = 0 \n" + + "and rt.deleted=0\n" + + "and rt.type=1\n" + + "and c.deleted=0\n" + + "AND s.type =2 \n" + + "AND s.student_id = ?1\n" + + "and c.sys_create_aid !=?2"; + list = courseTeacherDao.sqlFindList(sql, dto.getOrgAid(),dto.getOrgAid()); + } + Listlist1=new ArrayList<>(); + for (Object obj : list) { + list1.add(obj.toString()); + } + + return list1; + } + private List getProject(CourseQueryDto dto) { List list=new ArrayList<>(); if(StringUtil.isNotBlank(dto.getOrgIds())){ if(dto.getOrgIds().contains(",")){ @@ -362,8 +430,9 @@ public class CourseServiceImpl implements ICourseService { "\n" + "s.deleted = 0 \n" + "and pt.deleted=0\n" + + "and pt.type=1\n" + "and c.deleted=0\n" + - "AND s.type in (1,2) \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"; @@ -379,8 +448,9 @@ public class CourseServiceImpl implements ICourseService { "\n" + "s.deleted = 0 \n" + "and pt.deleted=0\n" + + "and pt.type=1\n" + "and c.deleted=0\n" + - "AND s.type in (1,2) \n" + + "AND s.type =1 \n" + "AND s.student_id = ?1\n" + "and c.org_id !=?2\n" + "and c.sys_create_aid !=?3"; @@ -396,20 +466,20 @@ public class CourseServiceImpl implements ICourseService { "\n" + "s.deleted = 0 \n" + "and pt.deleted=0\n" + + "and pt.type=1\n" + "and c.deleted=0\n" + - "AND s.type in (1,2) \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()); } - Listlist1=new ArrayList<>(); + Listlist1=new ArrayList<>(); for (Object obj : list) { list1.add(obj.toString()); } return list1; } - public static List paginate(List list, int pageNumber, int pageSize) { if (list == null || list.isEmpty() || pageNumber <= 0 || pageSize <= 0) { return null; From 625c41f46608d0daad58df85f169b453cbb6bbf6 Mon Sep 17 00:00:00 2001 From: xiaozhequ <792962424@qq.com> Date: Mon, 24 Jun 2024 16:00:23 +0800 Subject: [PATCH 09/22] =?UTF-8?q?=E5=9C=A8=E7=BA=BF=E5=8F=AF=E6=9D=83?= =?UTF-8?q?=E9=99=90bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../course/service/impl/CourseServiceImpl.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) 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 8b0778e2..1d987bec 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 @@ -370,7 +370,7 @@ public class CourseServiceImpl implements ICourseService { "AND s.type =2 \n" + "AND s.student_id = ?1\n" + "and c.org_id not in(?2)\n" + - "and c.sys_create_aid !=?3"; + "and (c.sys_create_aid !=?3 or c.sys_create_aid is null)"; list = courseTeacherDao.sqlFindList(sql, dto.getOrgAid(),strings,dto.getOrgAid()); } else { @@ -388,7 +388,7 @@ public class CourseServiceImpl implements ICourseService { "AND s.type =2 \n" + "AND s.student_id = ?1\n" + "and c.org_id !=?2\n" + - "and c.sys_create_aid !=?3"; + "and (c.sys_create_aid !=?3 or c.sys_create_aid is null)"; list = courseTeacherDao.sqlFindList(sql, dto.getOrgAid(), dto.getOrgIds(),dto.getOrgAid()); } }else { @@ -405,7 +405,7 @@ public class CourseServiceImpl implements ICourseService { "and c.deleted=0\n" + "AND s.type =2 \n" + "AND s.student_id = ?1\n" + - "and c.sys_create_aid !=?2"; + "and (c.sys_create_aid !=?2 or c.sys_create_aid is null)"; list = courseTeacherDao.sqlFindList(sql, dto.getOrgAid(),dto.getOrgAid()); } Listlist1=new ArrayList<>(); @@ -435,7 +435,7 @@ public class CourseServiceImpl implements ICourseService { "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"; + "and (c.sys_create_aid !=?3 or c.sys_create_aid is null)"; list = courseTeacherDao.sqlFindList(sql, dto.getOrgAid(),strings,dto.getOrgAid()); } else { @@ -453,7 +453,7 @@ public class CourseServiceImpl implements ICourseService { "AND s.type =1 \n" + "AND s.student_id = ?1\n" + "and c.org_id !=?2\n" + - "and c.sys_create_aid !=?3"; + "and (c.sys_create_aid !=?3 or c.sys_create_aid is null)"; list = courseTeacherDao.sqlFindList(sql, dto.getOrgAid(), dto.getOrgIds(),dto.getOrgAid()); } }else { @@ -470,7 +470,7 @@ public class CourseServiceImpl implements ICourseService { "and c.deleted=0\n" + "AND s.type =1 \n" + "AND s.student_id = ?1\n" + - "and c.sys_create_aid !=?2"; + "and (c.sys_create_aid !=?2 or c.sys_create_aid is null)"; list = courseTeacherDao.sqlFindList(sql, dto.getOrgAid(),dto.getOrgAid()); } Listlist1=new ArrayList<>(); From 9fd4171107c2fb87f9703470adf87450ce3eacdd Mon Sep 17 00:00:00 2001 From: xiaozhequ <792962424@qq.com> Date: Tue, 2 Jul 2024 08:56:28 +0800 Subject: [PATCH 10/22] =?UTF-8?q?=E6=96=B0=E5=9C=A8=E7=BA=BF=E8=AF=BE?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/CourseServiceImpl.java | 182 +++++++++++++++++- 1 file changed, 181 insertions(+), 1 deletion(-) 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 1d987bec..71aa20a6 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 @@ -264,8 +264,22 @@ public class CourseServiceImpl implements ICourseService { List filters2 = createFilters(dto); List list1 = getProject(dto); List list2 = getRouter(dto); - Set list = new HashSet<>(list1); + //需要设置为隐藏的课程id + Set list = new HashSet<>(); + //有受众权限的课程 + if(dto.getAudiences()!=null&&!dto.getAudiences().isEmpty()){ + List audiences = getAudiences(dto); + list.addAll(audiences); + } + //没有受众的课程 + List noAudiences = getNoAudiences(dto); + list.addAll(noAudiences); + //成长路径的课 + List grow = getGrow(dto); + list.addAll(grow); + list.addAll(list1); list.addAll(list2); + //有权限的查询,也同时查询出创建人的数据,在权限上 if(TempFilterConfig.Manager_CourseFile_ByOrgIds) { if(dto.getIsSystemAdmin()==null || !dto.getIsSystemAdmin()) { @@ -480,6 +494,172 @@ public class CourseServiceImpl implements ICourseService { return list1; } + private List getAudiences(CourseQueryDto dto) { + List list=new ArrayList<>(); + List s=Arrays.asList(dto.getAudiences().split(",")); + if(StringUtil.isNotBlank(dto.getOrgIds())){ + if(dto.getOrgIds().contains(",")){ + String[] split = dto.getOrgIds().split(","); + List strings = Arrays.asList(split); + String sql = "SELECT DISTINCT\n" + + "\tcc.course_id \n" + + "FROM\n" + + "\t`boe_course_crowd` cc\n" + + "\tINNER JOIN boe_course c ON cc.course_id = c.id \n" + + "WHERE\n" + + "\tcc.group_id IN (?1) \n" + + "\tAND c.deleted =0 \n"+ + "and c.org_id not in(?2)\n" + + "and (c.sys_create_aid !=?3 or c.sys_create_aid is null)"; + list = courseTeacherDao.sqlFindList(sql,s,strings,dto.getOrgAid()); + + } + else { + String sql = "SELECT DISTINCT\n" + + "\tc.id \n" + + "FROM\n" + + "\t`boe_course_crowd` cc\n" + + "\tINNER JOIN boe_course c ON cc.course_id = c.id \n" + + "WHERE\n" + + "\tcc.group_id IN (?1) \n" + + "\tAND c.deleted =0 \n"+ + "and c.org_id !=?2\n" + + "and (c.sys_create_aid !=?3 or c.sys_create_aid is null)"; + list = courseTeacherDao.sqlFindList(sql, s, dto.getOrgIds(),dto.getOrgAid()); + } + }else { + String sql = "SELECT DISTINCT\n" + + "\tc.id \n" + + "FROM\n" + + "\t`boe_course_crowd` cc\n" + + "\tINNER JOIN boe_course c ON cc.course_id = c.id \n" + + "WHERE\n" + + "\tcc.group_id IN (?1) \n" + + "\tAND c.deleted =0 \n"+ + "and (c.sys_create_aid !=?2 or c.sys_create_aid is null)"; + list = courseTeacherDao.sqlFindList(sql, s,dto.getOrgAid()); + } + Listlist1=new ArrayList<>(); + for (Object obj : list) { + list1.add(obj.toString()); + } + + return list1; + } + private List getNoAudiences(CourseQueryDto dto) { + List list=new ArrayList<>(); + if(StringUtil.isNotBlank(dto.getOrgIds())){ + if(dto.getOrgIds().contains(",")){ + String[] split = dto.getOrgIds().split(","); + List strings = Arrays.asList(split); + String sql = "SELECT DISTINCT\n" + + "\tc.id \n" + + "FROM\n" + + "\tboe_base.boe_course c \n" + + "WHERE\n" + + "\tc.id NOT IN ( SELECT cc.course_id FROM boe_base.boe_course_crowd cc ) \n" + + "\tAND c.deleted =0 \n"+ + "and c.org_id not in(?1)\n" + + "and (c.sys_create_aid !=?2 or c.sys_create_aid is null)"; + list = courseTeacherDao.sqlFindList(sql,strings,dto.getOrgAid()); + + } + else { + String sql = "SELECT DISTINCT\n" + + "\tc.id \n" + + "FROM\n" + + "\tboe_base.boe_course c \n" + + "WHERE\n" + + "\tc.id NOT IN ( SELECT cc.course_id FROM boe_base.boe_course_crowd cc ) \n" + + "\tAND c.deleted =0 \n"+ + "and c.org_id !=?1\n" + + "and (c.sys_create_aid !=?2 or c.sys_create_aid is null)"; + list = courseTeacherDao.sqlFindList(sql, dto.getOrgIds(),dto.getOrgAid()); + } + }else { + String sql = "SELECT DISTINCT\n" + + "\tc.id \n" + + "FROM\n" + + "\tboe_base.boe_course c \n" + + "WHERE\n" + + "\tc.id NOT IN ( SELECT cc.course_id FROM boe_base.boe_course_crowd cc ) \n" + + "\tAND c.deleted =0 \n"+ + "and (c.sys_create_aid !=?1 or c.sys_create_aid is null)"; + list = courseTeacherDao.sqlFindList(sql,dto.getOrgAid()); + } + Listlist1=new ArrayList<>(); + for (Object obj : list) { + list1.add(obj.toString()); + } + + return list1; + } + private List getGrow(CourseQueryDto dto) { + List list=new ArrayList<>(); + if(StringUtil.isNotBlank(dto.getOrgIds())){ + if(dto.getOrgIds().contains(",")){ + String[] split = dto.getOrgIds().split(","); + List strings = Arrays.asList(split); + String sql = "SELECT DISTINCT\n" + + "\tc.id \n" + + "FROM\n" + + "\tboe.student s\n" + + "\tINNER JOIN boe.grow_task gt ON s.pid = gt.grow_id\n" + + "\tINNER JOIN boe_base.boe_course c ON gt.course_id = c.id \n" + + "WHERE\n" + + "\ts.type = 14 \n" + + "\tAND gt.type = 1 \n" + + "\tAND s.deleted = 0 \n" + + "\tAND gt.deleted = 0 \n" + + "\tAND c.deleted = 0\n"+ + "\tAND s.student_id = ?1\n"+ + "and c.org_id not in(?2)\n" + + "and (c.sys_create_aid !=?3 or c.sys_create_aid is null)"; + list = courseTeacherDao.sqlFindList(sql,dto.getOrgAid(),strings,dto.getOrgAid()); + + } + else { + String sql = "SELECT DISTINCT\n" + + "\tc.id \n" + + "FROM\n" + + "\tboe.student s\n" + + "\tINNER JOIN boe.grow_task gt ON s.pid = gt.grow_id\n" + + "\tINNER JOIN boe_base.boe_course c ON gt.course_id = c.id \n" + + "WHERE\n" + + "\ts.type = 14 \n" + + "\tAND gt.type = 1 \n" + + "\tAND s.deleted = 0 \n" + + "\tAND gt.deleted = 0 \n" + + "\tAND c.deleted = 0\n"+ + "\tAND s.student_id = ?1\n"+ + "and c.org_id !=?2\n" + + "and (c.sys_create_aid !=?3 or c.sys_create_aid is null)"; + list = courseTeacherDao.sqlFindList(sql,dto.getOrgAid(), dto.getOrgIds(),dto.getOrgAid()); + } + }else { + String sql = "SELECT DISTINCT\n" + + "\tc.id \n" + + "FROM\n" + + "\tboe.student s\n" + + "\tINNER JOIN boe.grow_task gt ON s.pid = gt.grow_id\n" + + "\tINNER JOIN boe_base.boe_course c ON gt.course_id = c.id \n" + + "WHERE\n" + + "\ts.type = 14 \n" + + "\tAND gt.type = 1 \n" + + "\tAND s.deleted = 0 \n" + + "\tAND gt.deleted = 0 \n" + + "\tAND c.deleted = 0\n"+ + "\tAND s.student_id = ?1\n"+ + "and (c.sys_create_aid !=?2 or c.sys_create_aid is null)"; + list = courseTeacherDao.sqlFindList(sql,dto.getOrgAid(),dto.getOrgAid()); + } + Listlist1=new ArrayList<>(); + for (Object obj : list) { + list1.add(obj.toString()); + } + + return list1; + } public static List paginate(List list, int pageNumber, int pageSize) { if (list == null || list.isEmpty() || pageNumber <= 0 || pageSize <= 0) { return null; From 0b0bd748d9681cf99e141a94e567c50dc17542b9 Mon Sep 17 00:00:00 2001 From: xiaozhequ <792962424@qq.com> Date: Tue, 2 Jul 2024 09:42:47 +0800 Subject: [PATCH 11/22] =?UTF-8?q?=E6=96=B0=E5=9C=A8=E7=BA=BF=E8=AF=BE?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/CourseServiceImpl.java | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) 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 71aa20a6..8f714d0f 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 @@ -276,7 +276,10 @@ public class CourseServiceImpl implements ICourseService { list.addAll(noAudiences); //成长路径的课 List grow = getGrow(dto); + //已报名的课 + List enroll = getEnroll(dto); list.addAll(grow); + list.addAll(enroll); list.addAll(list1); list.addAll(list2); @@ -660,6 +663,57 @@ public class CourseServiceImpl implements ICourseService { return list1; } + private List getEnroll(CourseQueryDto dto) { + List list=new ArrayList<>(); + if(StringUtil.isNotBlank(dto.getOrgIds())){ + if(dto.getOrgIds().contains(",")){ + String[] split = dto.getOrgIds().split(","); + List strings = Arrays.asList(split); + String sql = "SELECT DISTINCT\n" + + "\tsc.course_id \n" + + "FROM\n" + + "\tboe_base.boe_study_course sc\n" + + "\tINNER JOIN boe_base.boe_course c ON sc.course_id = c.id \n" + + "WHERE\n" + + "\tsc.aid = ?1 \n" + + "\tAND c.deleted =0\n"+ + "and c.org_id not in(?2)\n" + + "and (c.sys_create_aid !=?3 or c.sys_create_aid is null)"; + list = courseTeacherDao.sqlFindList(sql,dto.getOrgAid(),strings,dto.getOrgAid()); + + } + else { + String sql = "SELECT DISTINCT\n" + + "\tsc.course_id \n" + + "FROM\n" + + "\tboe_base.boe_study_course sc\n" + + "\tINNER JOIN boe_base.boe_course c ON sc.course_id = c.id \n" + + "WHERE\n" + + "\tsc.aid = ?1 \n" + + "\tAND c.deleted =0\n"+ + "and c.org_id !=?2\n" + + "and (c.sys_create_aid !=?3 or c.sys_create_aid is null)"; + list = courseTeacherDao.sqlFindList(sql,dto.getOrgAid(), dto.getOrgIds(),dto.getOrgAid()); + } + }else { + String sql = "SELECT DISTINCT\n" + + "\tsc.course_id \n" + + "FROM\n" + + "\tboe_base.boe_study_course sc\n" + + "\tINNER JOIN boe_base.boe_course c ON sc.course_id = c.id \n" + + "WHERE\n" + + "\tsc.aid = ?1 \n" + + "\tAND c.deleted =0\n"+ + "and (c.sys_create_aid !=?2 or c.sys_create_aid is null)"; + list = courseTeacherDao.sqlFindList(sql,dto.getOrgAid(),dto.getOrgAid()); + } + Listlist1=new ArrayList<>(); + for (Object obj : list) { + list1.add(obj.toString()); + } + + return list1; + } public static List paginate(List list, int pageNumber, int pageSize) { if (list == null || list.isEmpty() || pageNumber <= 0 || pageSize <= 0) { return null; From e0037b88142f1853bece61aac10aa8dc0c58eb18 Mon Sep 17 00:00:00 2001 From: xiaozhequ <792962424@qq.com> Date: Wed, 3 Jul 2024 09:57:59 +0800 Subject: [PATCH 12/22] =?UTF-8?q?=E8=AF=BE=E7=A8=8B=E6=9D=83=E9=99=90?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/CourseServiceImpl.java | 63 ++++++++++++------- 1 file changed, 39 insertions(+), 24 deletions(-) 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 8f714d0f..ef48ef3f 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 @@ -261,6 +261,7 @@ public class CourseServiceImpl implements ICourseService { @Override public PageList findPage(int pageIndex, int pageSize, CourseQueryDto dto) { List filters = createFilters(dto); + List filters1 = createFilters(dto); List filters2 = createFilters(dto); List list1 = getProject(dto); List list2 = getRouter(dto); @@ -293,19 +294,17 @@ public class CourseServiceImpl implements ICourseService { String[] split = dto.getOrgIds().split(","); List strings = Arrays.asList(split); // 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()){ - filters2.add(FieldFilters.or(FieldFilters.in("id",list),FieldFilters.eq("sysCreateAid",dto.getOrgAid()))); - }else { - filters2.add(FieldFilters.eq("sysCreateAid",dto.getOrgAid())); + filters2.add(FieldFilters.in("id",list)); } }else { // filters.add(FieldFilters.or(FieldFilters.eq("orgId",dto.getOrgIds()),FieldFilters.eq("sysCreateAid",dto.getOrgAid()))); filters.add(FieldFilters.eq("orgId",dto.getOrgIds())); + filters1.add(FieldFilters.eq("sysCreateAid",dto.getOrgAid())); if(!list.isEmpty()){ - filters2.add(FieldFilters.or(FieldFilters.in("id",list),FieldFilters.eq("sysCreateAid",dto.getOrgAid()))); - }else { - filters2.add(FieldFilters.eq("sysCreateAid",dto.getOrgAid())); + filters2.add(FieldFilters.in("id",list)); } } } @@ -313,11 +312,9 @@ public class CourseServiceImpl implements ICourseService { //log.info("【"+dto.getOrgAid()+"】 机构ids没有, 只查询自己创建的课程"); //没有机构权限,只能查出自己创建的 // filters.add(FieldFilters.eq("sysCreateAid",dto.getOrgAid())); + filters1.add(FieldFilters.eq("sysCreateAid",dto.getOrgAid())); if(!list.isEmpty()){ - filters2.add(FieldFilters.or(FieldFilters.eq("sysCreateAid",dto.getOrgAid()),FieldFilters.in("id",list))); - } - else { - filters2.add(FieldFilters.eq("sysCreateAid",dto.getOrgAid())); + filters2.add(FieldFilters.in("id",list)); } } }else { @@ -327,6 +324,7 @@ public class CourseServiceImpl implements ICourseService { //自动添加过滤已删除 filters.add(FieldFilters.eq("deleted",false)); + filters1.add(FieldFilters.eq("deleted",false)); filters2.add(FieldFilters.eq("deleted",false)); //同时查出所有项目内课程 OrderCondition oc=null; @@ -340,11 +338,18 @@ public class CourseServiceImpl implements ICourseService { oc=OrderCondition.desc("id"); } List listByFilters = new ArrayList<>(); + //根据组织筛选 if(StringUtil.isNotBlank(dto.getOrgIds())){ listByFilters = courseDao.findListByFilters(oc, filters); } - List listByFilters1 = courseDao.findListByFilters(oc, filters2); - List mergedList = Stream.concat(listByFilters.stream(), listByFilters1.stream()) + //根据创建人筛选 + List listByFilters1=new ArrayList<>(); + if(!list.isEmpty()){ + listByFilters1 = courseDao.findListByFilters(oc, filters1); + } + //根据list筛选 + List listByFilters2 = courseDao.findListByFilters(oc, filters2); + List mergedList = Stream.concat(Stream.concat(listByFilters.stream(), listByFilters1.stream()),listByFilters2.stream()) // 使用distinct()配合自定义的去重条件 .filter(distinctByKey(c -> c.getId())) .collect(Collectors.toList()); @@ -352,6 +357,14 @@ public class CourseServiceImpl implements ICourseService { // long endTime = System.nanoTime(); //log.info("查询出的条数:"+rs.getCount()); if(!mergedList.isEmpty()){ + //去掉未发布的课程 + mergedList.removeIf(e->{ + if(!e.getPublished()&&list.contains(e.getId())){ + return true; + } + return false; + }); + //将需要隐藏的做标记 mergedList.forEach(e->{ if(list.contains(e.getId())){ e.setIsPermission(false); @@ -550,6 +563,8 @@ public class CourseServiceImpl implements ICourseService { return list1; } private List getNoAudiences(CourseQueryDto dto) { + String sql1="SELECT cc.course_id FROM boe_base.boe_course_crowd cc"; + List list2 = courseTeacherDao.sqlFindList(sql1); List list=new ArrayList<>(); if(StringUtil.isNotBlank(dto.getOrgIds())){ if(dto.getOrgIds().contains(",")){ @@ -560,11 +575,11 @@ public class CourseServiceImpl implements ICourseService { "FROM\n" + "\tboe_base.boe_course c \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"+ - "and c.org_id not in(?1)\n" + - "and (c.sys_create_aid !=?2 or c.sys_create_aid is null)"; - list = courseTeacherDao.sqlFindList(sql,strings,dto.getOrgAid()); + "and c.org_id not in(?2)\n" + + "and (c.sys_create_aid !=?3 or c.sys_create_aid is null)"; + list = courseTeacherDao.sqlFindList(sql,list2,strings,dto.getOrgAid()); } else { @@ -573,11 +588,11 @@ public class CourseServiceImpl implements ICourseService { "FROM\n" + "\tboe_base.boe_course c \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"+ - "and c.org_id !=?1\n" + - "and (c.sys_create_aid !=?2 or c.sys_create_aid is null)"; - list = courseTeacherDao.sqlFindList(sql, dto.getOrgIds(),dto.getOrgAid()); + "and c.org_id !=?2\n" + + "and (c.sys_create_aid !=?3 or c.sys_create_aid is null)"; + list = courseTeacherDao.sqlFindList(sql,list2, dto.getOrgIds(),dto.getOrgAid()); } }else { String sql = "SELECT DISTINCT\n" + @@ -585,10 +600,10 @@ public class CourseServiceImpl implements ICourseService { "FROM\n" + "\tboe_base.boe_course c \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"+ - "and (c.sys_create_aid !=?1 or c.sys_create_aid is null)"; - list = courseTeacherDao.sqlFindList(sql,dto.getOrgAid()); + "and (c.sys_create_aid !=?2 or c.sys_create_aid is null)"; + list = courseTeacherDao.sqlFindList(sql,list2,dto.getOrgAid()); } Listlist1=new ArrayList<>(); for (Object obj : list) { From f2be34930142c26dd73c569d8bdde5a00af80f1d Mon Sep 17 00:00:00 2001 From: xiaozhequ <792962424@qq.com> Date: Wed, 3 Jul 2024 12:46:55 +0800 Subject: [PATCH 13/22] =?UTF-8?q?=E6=96=B0=E5=9C=A8=E7=BA=BF=E8=AF=BE?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/CourseServiceImpl.java | 284 ++---------------- 1 file changed, 29 insertions(+), 255 deletions(-) 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 ef48ef3f..c48bd588 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 @@ -277,7 +277,7 @@ public class CourseServiceImpl implements ICourseService { list.addAll(noAudiences); //成长路径的课 List grow = getGrow(dto); - //已报名的课 +// //已报名的课 List enroll = getEnroll(dto); list.addAll(grow); list.addAll(enroll); @@ -343,13 +343,22 @@ public class CourseServiceImpl implements ICourseService { listByFilters = courseDao.findListByFilters(oc, filters); } //根据创建人筛选 - List listByFilters1=new ArrayList<>(); + List listByFilters1; if(!list.isEmpty()){ listByFilters1 = courseDao.findListByFilters(oc, filters1); - } - //根据list筛选 + } else { + listByFilters1 = new ArrayList<>(); + } + //根据list筛选 List listByFilters2 = courseDao.findListByFilters(oc, filters2); - List mergedList = Stream.concat(Stream.concat(listByFilters.stream(), listByFilters1.stream()),listByFilters2.stream()) + //去除根据组织和创建人筛选的课程id + List finalListByFilters = listByFilters; + List collect = listByFilters2.stream() + .filter(element -> !finalListByFilters.contains(element)) + .filter(element -> !listByFilters1.contains(element)).collect(Collectors.toList()); + List courseIds = collect.stream().map(Course::getId).collect(Collectors.toList()); + //合并 + List mergedList = Stream.concat(Stream.concat(listByFilters.stream(), listByFilters1.stream()),collect.stream()) // 使用distinct()配合自定义的去重条件 .filter(distinctByKey(c -> c.getId())) .collect(Collectors.toList()); @@ -359,14 +368,14 @@ public class CourseServiceImpl implements ICourseService { if(!mergedList.isEmpty()){ //去掉未发布的课程 mergedList.removeIf(e->{ - if(!e.getPublished()&&list.contains(e.getId())){ + if(!e.getPublished()&&courseIds.contains(e.getId())){ return true; } return false; }); //将需要隐藏的做标记 mergedList.forEach(e->{ - if(list.contains(e.getId())){ + if(courseIds.contains(e.getId())){ e.setIsPermission(false); }else { e.setIsPermission(true); @@ -381,11 +390,6 @@ public class CourseServiceImpl implements ICourseService { } private List getRouter(CourseQueryDto dto) { - List list=new ArrayList<>(); - if(StringUtil.isNotBlank(dto.getOrgIds())){ - if(dto.getOrgIds().contains(",")){ - String[] split = dto.getOrgIds().split(","); - List strings = Arrays.asList(split); String sql = "SELECT DISTINCT\n" + "rt.course_id\n" + "FROM\n" + @@ -398,46 +402,8 @@ public class CourseServiceImpl implements ICourseService { "and rt.type=1\n" + "and c.deleted=0\n" + "AND s.type =2 \n" + - "AND s.student_id = ?1\n" + - "and c.org_id not in(?2)\n" + - "and (c.sys_create_aid !=?3 or c.sys_create_aid is null)"; - list = courseTeacherDao.sqlFindList(sql, dto.getOrgAid(),strings,dto.getOrgAid()); - } - else { - String sql = "SELECT DISTINCT\n" + - "rt.course_id\n" + - "FROM\n" + - "boe.student s INNER JOIN boe.router_task rt on s.pid=rt.router_id inner join boe_base.boe_course c on c.id=rt.course_id\n" + - "\n" + - "WHERE\n" + - "\n" + - "s.deleted = 0 \n" + - "and rt.deleted=0\n" + - "and rt.type=1\n" + - "and c.deleted=0\n" + - "AND s.type =2 \n" + - "AND s.student_id = ?1\n" + - "and c.org_id !=?2\n" + - "and (c.sys_create_aid !=?3 or c.sys_create_aid is null)"; - list = courseTeacherDao.sqlFindList(sql, dto.getOrgAid(), dto.getOrgIds(),dto.getOrgAid()); - } - }else { - String sql = "SELECT DISTINCT\n" + - "rt.course_id\n" + - "FROM\n" + - "boe.student s INNER JOIN boe.router_task rt on s.pid=rt.router_id inner join boe_base.boe_course c on c.id=rt.course_id\n" + - "\n" + - "WHERE\n" + - "\n" + - "s.deleted = 0 \n" + - "and rt.deleted=0\n" + - "and rt.type=1\n" + - "and c.deleted=0\n" + - "AND s.type =2 \n" + - "AND s.student_id = ?1\n" + - "and (c.sys_create_aid !=?2 or c.sys_create_aid is null)"; - list = courseTeacherDao.sqlFindList(sql, dto.getOrgAid(),dto.getOrgAid()); - } + "AND s.student_id = ?1"; + Listlist = courseTeacherDao.sqlFindList(sql,dto.getOrgAid()); Listlist1=new ArrayList<>(); for (Object obj : list) { list1.add(obj.toString()); @@ -446,11 +412,6 @@ public class CourseServiceImpl implements ICourseService { return list1; } private List getProject(CourseQueryDto dto) { - List list=new ArrayList<>(); - if(StringUtil.isNotBlank(dto.getOrgIds())){ - if(dto.getOrgIds().contains(",")){ - String[] split = dto.getOrgIds().split(","); - List strings = Arrays.asList(split); String sql = "SELECT DISTINCT\n" + "pt.course_id\n" + "FROM\n" + @@ -463,60 +424,16 @@ public class CourseServiceImpl implements ICourseService { "and pt.type=1\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 or c.sys_create_aid is null)"; - 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 pt.type=1\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 or c.sys_create_aid is null)"; - 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 pt.type=1\n" + - "and c.deleted=0\n" + - "AND s.type =1 \n" + - "AND s.student_id = ?1\n" + - "and (c.sys_create_aid !=?2 or c.sys_create_aid is null)"; - list = courseTeacherDao.sqlFindList(sql, dto.getOrgAid(),dto.getOrgAid()); - } + "AND s.student_id = ?1\n"; + Listlist = courseTeacherDao.sqlFindList(sql, dto.getOrgAid()); Listlist1=new ArrayList<>(); for (Object obj : list) { list1.add(obj.toString()); } - return list1; } private List getAudiences(CourseQueryDto dto) { - List list=new ArrayList<>(); List s=Arrays.asList(dto.getAudiences().split(",")); - if(StringUtil.isNotBlank(dto.getOrgIds())){ - if(dto.getOrgIds().contains(",")){ - String[] split = dto.getOrgIds().split(","); - List strings = Arrays.asList(split); String sql = "SELECT DISTINCT\n" + "\tcc.course_id \n" + "FROM\n" + @@ -524,37 +441,8 @@ public class CourseServiceImpl implements ICourseService { "\tINNER JOIN boe_course c ON cc.course_id = c.id \n" + "WHERE\n" + "\tcc.group_id IN (?1) \n" + - "\tAND c.deleted =0 \n"+ - "and c.org_id not in(?2)\n" + - "and (c.sys_create_aid !=?3 or c.sys_create_aid is null)"; - list = courseTeacherDao.sqlFindList(sql,s,strings,dto.getOrgAid()); - - } - else { - String sql = "SELECT DISTINCT\n" + - "\tc.id \n" + - "FROM\n" + - "\t`boe_course_crowd` cc\n" + - "\tINNER JOIN boe_course c ON cc.course_id = c.id \n" + - "WHERE\n" + - "\tcc.group_id IN (?1) \n" + - "\tAND c.deleted =0 \n"+ - "and c.org_id !=?2\n" + - "and (c.sys_create_aid !=?3 or c.sys_create_aid is null)"; - list = courseTeacherDao.sqlFindList(sql, s, dto.getOrgIds(),dto.getOrgAid()); - } - }else { - String sql = "SELECT DISTINCT\n" + - "\tc.id \n" + - "FROM\n" + - "\t`boe_course_crowd` cc\n" + - "\tINNER JOIN boe_course c ON cc.course_id = c.id \n" + - "WHERE\n" + - "\tcc.group_id IN (?1) \n" + - "\tAND c.deleted =0 \n"+ - "and (c.sys_create_aid !=?2 or c.sys_create_aid is null)"; - list = courseTeacherDao.sqlFindList(sql, s,dto.getOrgAid()); - } + "\tAND c.deleted =0 "; + List list = courseTeacherDao.sqlFindList(sql,s); Listlist1=new ArrayList<>(); for (Object obj : list) { list1.add(obj.toString()); @@ -563,61 +451,21 @@ public class CourseServiceImpl implements ICourseService { return list1; } private List getNoAudiences(CourseQueryDto dto) { - String sql1="SELECT cc.course_id FROM boe_base.boe_course_crowd cc"; - List list2 = courseTeacherDao.sqlFindList(sql1); - List list=new ArrayList<>(); - if(StringUtil.isNotBlank(dto.getOrgIds())){ - if(dto.getOrgIds().contains(",")){ - String[] split = dto.getOrgIds().split(","); - List strings = Arrays.asList(split); String sql = "SELECT DISTINCT\n" + "\tc.id \n" + "FROM\n" + "\tboe_base.boe_course c \n" + "WHERE\n" + - "\tc.id NOT IN ( ?1 ) \n" + - "\tAND c.deleted =0 \n"+ - "and c.org_id not in(?2)\n" + - "and (c.sys_create_aid !=?3 or c.sys_create_aid is null)"; - list = courseTeacherDao.sqlFindList(sql,list2,strings,dto.getOrgAid()); - - } - else { - String sql = "SELECT DISTINCT\n" + - "\tc.id \n" + - "FROM\n" + - "\tboe_base.boe_course c \n" + - "WHERE\n" + - "\tc.id NOT IN ( ?1 ) \n" + - "\tAND c.deleted =0 \n"+ - "and c.org_id !=?2\n" + - "and (c.sys_create_aid !=?3 or c.sys_create_aid is null)"; - list = courseTeacherDao.sqlFindList(sql,list2, dto.getOrgIds(),dto.getOrgAid()); - } - }else { - String sql = "SELECT DISTINCT\n" + - "\tc.id \n" + - "FROM\n" + - "\tboe_base.boe_course c \n" + - "WHERE\n" + - "\tc.id NOT IN ( ?1 ) \n" + - "\tAND c.deleted =0 \n"+ - "and (c.sys_create_aid !=?2 or c.sys_create_aid is null)"; - list = courseTeacherDao.sqlFindList(sql,list2,dto.getOrgAid()); - } + "\t NOT EXISTS ( SELECT 1 FROM boe_base.boe_course_crowd cc where cc.course_id = c.id ) \n" + + "\tAND c.deleted =0 \n"; + Listlist = courseTeacherDao.sqlFindList(sql); Listlist1=new ArrayList<>(); for (Object obj : list) { list1.add(obj.toString()); } - return list1; } private List getGrow(CourseQueryDto dto) { - List list=new ArrayList<>(); - if(StringUtil.isNotBlank(dto.getOrgIds())){ - if(dto.getOrgIds().contains(",")){ - String[] split = dto.getOrgIds().split(","); - List strings = Arrays.asList(split); String sql = "SELECT DISTINCT\n" + "\tc.id \n" + "FROM\n" + @@ -630,60 +478,15 @@ public class CourseServiceImpl implements ICourseService { "\tAND s.deleted = 0 \n" + "\tAND gt.deleted = 0 \n" + "\tAND c.deleted = 0\n"+ - "\tAND s.student_id = ?1\n"+ - "and c.org_id not in(?2)\n" + - "and (c.sys_create_aid !=?3 or c.sys_create_aid is null)"; - list = courseTeacherDao.sqlFindList(sql,dto.getOrgAid(),strings,dto.getOrgAid()); - - } - else { - String sql = "SELECT DISTINCT\n" + - "\tc.id \n" + - "FROM\n" + - "\tboe.student s\n" + - "\tINNER JOIN boe.grow_task gt ON s.pid = gt.grow_id\n" + - "\tINNER JOIN boe_base.boe_course c ON gt.course_id = c.id \n" + - "WHERE\n" + - "\ts.type = 14 \n" + - "\tAND gt.type = 1 \n" + - "\tAND s.deleted = 0 \n" + - "\tAND gt.deleted = 0 \n" + - "\tAND c.deleted = 0\n"+ - "\tAND s.student_id = ?1\n"+ - "and c.org_id !=?2\n" + - "and (c.sys_create_aid !=?3 or c.sys_create_aid is null)"; - list = courseTeacherDao.sqlFindList(sql,dto.getOrgAid(), dto.getOrgIds(),dto.getOrgAid()); - } - }else { - String sql = "SELECT DISTINCT\n" + - "\tc.id \n" + - "FROM\n" + - "\tboe.student s\n" + - "\tINNER JOIN boe.grow_task gt ON s.pid = gt.grow_id\n" + - "\tINNER JOIN boe_base.boe_course c ON gt.course_id = c.id \n" + - "WHERE\n" + - "\ts.type = 14 \n" + - "\tAND gt.type = 1 \n" + - "\tAND s.deleted = 0 \n" + - "\tAND gt.deleted = 0 \n" + - "\tAND c.deleted = 0\n"+ - "\tAND s.student_id = ?1\n"+ - "and (c.sys_create_aid !=?2 or c.sys_create_aid is null)"; - list = courseTeacherDao.sqlFindList(sql,dto.getOrgAid(),dto.getOrgAid()); - } + "\tAND s.student_id = ?1\n"; + Listlist = courseTeacherDao.sqlFindList(sql,dto.getOrgAid()); Listlist1=new ArrayList<>(); for (Object obj : list) { list1.add(obj.toString()); } - return list1; } private List getEnroll(CourseQueryDto dto) { - List list=new ArrayList<>(); - if(StringUtil.isNotBlank(dto.getOrgIds())){ - if(dto.getOrgIds().contains(",")){ - String[] split = dto.getOrgIds().split(","); - List strings = Arrays.asList(split); String sql = "SELECT DISTINCT\n" + "\tsc.course_id \n" + "FROM\n" + @@ -691,37 +494,8 @@ public class CourseServiceImpl implements ICourseService { "\tINNER JOIN boe_base.boe_course c ON sc.course_id = c.id \n" + "WHERE\n" + "\tsc.aid = ?1 \n" + - "\tAND c.deleted =0\n"+ - "and c.org_id not in(?2)\n" + - "and (c.sys_create_aid !=?3 or c.sys_create_aid is null)"; - list = courseTeacherDao.sqlFindList(sql,dto.getOrgAid(),strings,dto.getOrgAid()); - - } - else { - String sql = "SELECT DISTINCT\n" + - "\tsc.course_id \n" + - "FROM\n" + - "\tboe_base.boe_study_course sc\n" + - "\tINNER JOIN boe_base.boe_course c ON sc.course_id = c.id \n" + - "WHERE\n" + - "\tsc.aid = ?1 \n" + - "\tAND c.deleted =0\n"+ - "and c.org_id !=?2\n" + - "and (c.sys_create_aid !=?3 or c.sys_create_aid is null)"; - list = courseTeacherDao.sqlFindList(sql,dto.getOrgAid(), dto.getOrgIds(),dto.getOrgAid()); - } - }else { - String sql = "SELECT DISTINCT\n" + - "\tsc.course_id \n" + - "FROM\n" + - "\tboe_base.boe_study_course sc\n" + - "\tINNER JOIN boe_base.boe_course c ON sc.course_id = c.id \n" + - "WHERE\n" + - "\tsc.aid = ?1 \n" + - "\tAND c.deleted =0\n"+ - "and (c.sys_create_aid !=?2 or c.sys_create_aid is null)"; - list = courseTeacherDao.sqlFindList(sql,dto.getOrgAid(),dto.getOrgAid()); - } + "\tAND c.deleted =0"; + Listlist = courseTeacherDao.sqlFindList(sql,dto.getOrgAid()); Listlist1=new ArrayList<>(); for (Object obj : list) { list1.add(obj.toString()); From 7eb578127d5833704be79cd61288f5da330f53c9 Mon Sep 17 00:00:00 2001 From: xiaozhequ <792962424@qq.com> Date: Wed, 3 Jul 2024 16:30:19 +0800 Subject: [PATCH 14/22] =?UTF-8?q?=E6=96=B0=E5=9C=A8=E7=BA=BF=E8=AF=BE?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E4=BC=98=E5=8C=962?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/course/api/CourseManageApi.java | 16 +- .../service/impl/CourseServiceImpl.java | 3350 +++++++++-------- 2 files changed, 1720 insertions(+), 1646 deletions(-) diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/course/api/CourseManageApi.java b/servers/boe-server-all/src/main/java/com/xboe/module/course/api/CourseManageApi.java index c04b2cde..f3aa6041 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/course/api/CourseManageApi.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/course/api/CourseManageApi.java @@ -125,11 +125,11 @@ public class CourseManageApi extends ApiBaseController{ List orgIds = userOrgIds.getIds(); -// if(userOrgIds.getPermissions().containsKey(UserOrgIds.IsSystemAdminKey)){ -// dto.setIsSystemAdmin(userOrgIds.getPermissions().get(UserOrgIds.IsSystemAdminKey)); -// }else { -// dto.setIsSystemAdmin(false); -// } + if(userOrgIds.getPermissions().containsKey(UserOrgIds.IsSystemAdminKey)){ + dto.setIsSystemAdmin(userOrgIds.getPermissions().get(UserOrgIds.IsSystemAdminKey)); + }else { + dto.setIsSystemAdmin(false); + } String ids=""; if(userOrgIds.getIds()!=null && !userOrgIds.getIds().isEmpty()) { @@ -137,11 +137,7 @@ public class CourseManageApi extends ApiBaseController{ } //log.info("获取到的用户的组织机构权限ids",ids); String aid=getCurrent().getAccountId(); - if(Objects.equals(aid, "965342027497607168")||Objects.equals(aid, "1739115608332701697")){ - dto.setIsSystemAdmin(true); - }else { - dto.setIsSystemAdmin(false); - } +// String aid="1706272694871445506"; //如果前端查询当前人的,这里去掉 if(StringUtils.isNotBlank(dto.getAid())) { dto.setAid(null); 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 c48bd588..e5190670 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 @@ -5,6 +5,7 @@ import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.*; import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.TimeUnit; import java.util.function.Function; import java.util.function.Predicate; import java.util.stream.Collectors; @@ -21,6 +22,7 @@ import com.xboe.school.study.entity.StudyCourse; import org.apache.commons.lang3.StringUtils; import org.hibernate.mapping.IdGenerator; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; @@ -63,866 +65,947 @@ import lombok.extern.slf4j.Slf4j; @Service @Transactional public class CourseServiceImpl implements ICourseService { - + @Resource private CourseDao courseDao; - + @Resource private CourseTeacherDao courseTeacherDao; - + @Resource private CourseCrowdDao courseCrowdDao; - @Resource - private CourseContentDao courseContentDao; - - @Resource - private CourseHomeWorkDao courseHomeWorkDao; - - @Resource - private CourseSectionDao courseSectionDao; + @Resource + private CourseContentDao courseContentDao; @Resource - private CourseUpdateLogDao updateLogDao; + private CourseHomeWorkDao courseHomeWorkDao; + + @Resource + private CourseSectionDao courseSectionDao; + + @Resource + private CourseUpdateLogDao updateLogDao; + + @Resource + private CourseExamDao courseExamDao; + + @Resource + private CourseHRBPAuditDao courseHRBPAuditDao; + - @Resource - private CourseExamDao courseExamDao; - - @Resource - private CourseHRBPAuditDao courseHRBPAuditDao; - - @Resource private SysLogAuditDao logAuditDao;//审核日志记录 - @Resource - private ICourseGradeService courseGradeService; - - @Resource - private IAccountService accountService; + @Resource + private ICourseGradeService courseGradeService; - - @Resource - private IResDataManagerService rdmService; - - @Autowired(required = false) - private ICourseFullTextSearch fullTextSearch; - - @Resource - PublishCourseUtil publishUtil; - - @Autowired(required = false) - private IEventDataSender eventSender; + @Resource + private IAccountService accountService; + + + @Resource + private IResDataManagerService rdmService; + + @Autowired(required = false) + private ICourseFullTextSearch fullTextSearch; + + @Resource + PublishCourseUtil publishUtil; + + @Autowired(required = false) + private IEventDataSender eventSender; /** * 生成过滤条件 + * * @param dto * @return */ - private List createFilters(CourseQueryDto dto){ - List filters = new ArrayList<>(); - List iFieldFilters = new ArrayList<>(); + private List createFilters(CourseQueryDto dto) { + List filters = new ArrayList<>(); + List iFieldFilters = new ArrayList<>(); - if(StringUtils.isNotBlank(dto.getKeyword())){ + if (StringUtils.isNotBlank(dto.getKeyword())) { // filters.add(FieldFilters.or(FieldFilters.like("keywords", dto.getKeyword()),FieldFilters.like("name", dto.getKeyword()), )); - iFieldFilters.add(FieldFilters.like("keywords", dto.getKeyword())); - iFieldFilters.add(FieldFilters.like("name", dto.getKeyword())); - iFieldFilters.add(FieldFilters.like("sysCreateBy",dto.getKeyword())); - filters.add(FieldFilters.or(iFieldFilters)); - }else { - if(StringUtils.isNotBlank(dto.getName())){ - filters.add(FieldFilters.like("name",dto.getName())); - } + iFieldFilters.add(FieldFilters.like("keywords", dto.getKeyword())); + iFieldFilters.add(FieldFilters.like("name", dto.getKeyword())); + iFieldFilters.add(FieldFilters.like("sysCreateBy", dto.getKeyword())); + filters.add(FieldFilters.or(iFieldFilters)); + } else { + if (StringUtils.isNotBlank(dto.getName())) { + filters.add(FieldFilters.like("name", dto.getName())); + } } - if(StringUtils.isNotBlank(dto.getCreateUser())){ - filters.add(FieldFilters.like("sysCreateBy", LikeMatchMode.ANYWHERE,dto.getCreateUser())); + if (StringUtils.isNotBlank(dto.getCreateUser())) { + filters.add(FieldFilters.like("sysCreateBy", LikeMatchMode.ANYWHERE, dto.getCreateUser())); } - if(StringUtils.isNotBlank(dto.getAid())){ - filters.add(FieldFilters.eq("sysCreateAid",dto.getAid())); + if (StringUtils.isNotBlank(dto.getAid())) { + filters.add(FieldFilters.eq("sysCreateAid", dto.getAid())); } - - if(StringUtils.isNotBlank(dto.getResOwner3())){ - filters.add(FieldFilters.eq("resOwner3",dto.getResOwner3())); + + if (StringUtils.isNotBlank(dto.getResOwner3())) { + filters.add(FieldFilters.eq("resOwner3", dto.getResOwner3())); } - if(StringUtils.isNotBlank(dto.getResOwner2())){ - filters.add(FieldFilters.eq("resOwner2",dto.getResOwner2())); + if (StringUtils.isNotBlank(dto.getResOwner2())) { + filters.add(FieldFilters.eq("resOwner2", dto.getResOwner2())); } - if(StringUtils.isNotBlank(dto.getResOwner1())){ - filters.add(FieldFilters.eq("resOwner1",dto.getResOwner1())); + if (StringUtils.isNotBlank(dto.getResOwner1())) { + filters.add(FieldFilters.eq("resOwner1", dto.getResOwner1())); + } + + if (StringUtils.isNotBlank(dto.getRefId())) { + filters.add(FieldFilters.eq("refId", dto.getRefId())); + } + if (StringUtils.isNotBlank(dto.getRefType())) { + filters.add(FieldFilters.eq("refType", dto.getRefType())); } - - if(StringUtils.isNotBlank(dto.getRefId())){ - filters.add(FieldFilters.eq("refId",dto.getRefId())); - } - if(StringUtils.isNotBlank(dto.getRefType())){ - filters.add(FieldFilters.eq("refType",dto.getRefType())); - } // if(dto.getVisible()!=null) { // filters.add(FieldFilters.eq("visible",dto.getVisible())); // } - - if(dto.getDevice()!=null){ - if(dto.getDevice()==Course.DEVICE_PC) { - filters.add(FieldFilters.in("device",Course.DEVICE_PC,Course.DEVICE_ALL)); - }else if(dto.getDevice()==Course.DEVICE_MOBILE) { - filters.add(FieldFilters.in("device",Course.DEVICE_MOBILE,Course.DEVICE_ALL)); - }else if(dto.getDevice()==Course.DEVICE_ALL) { - filters.add(FieldFilters.eq("device",Course.DEVICE_ALL)); - } - - } - - if(dto.getYearFilter()!=null && dto.getYearFilter()) { - LocalDateTime ldt=LocalDateTime.of(2022,1, 1, 0, 0); - filters.add(FieldFilters.ge("publishTime",ldt)); - } - + + if (dto.getDevice() != null) { + if (dto.getDevice() == Course.DEVICE_PC) { + filters.add(FieldFilters.in("device", Course.DEVICE_PC, Course.DEVICE_ALL)); + } else if (dto.getDevice() == Course.DEVICE_MOBILE) { + filters.add(FieldFilters.in("device", Course.DEVICE_MOBILE, Course.DEVICE_ALL)); + } else if (dto.getDevice() == Course.DEVICE_ALL) { + filters.add(FieldFilters.eq("device", Course.DEVICE_ALL)); + } + + } + + if (dto.getYearFilter() != null && dto.getYearFilter()) { + LocalDateTime ldt = LocalDateTime.of(2022, 1, 1, 0, 0); + filters.add(FieldFilters.ge("publishTime", ldt)); + } + // if(dto.getType()!=null){ // filters.add(FieldFilters.eq("type",dto.getType())); // } //对场景的查询是单表还是多条的问题,如果单独的分类绑定表,这种查询会单独的处理 - if(StringUtils.isNotBlank(dto.getScenes())){ + if (StringUtils.isNotBlank(dto.getScenes())) { // if(dto.getScenes().indexOf(CourseQueryDto.SEPARATE)>0) { // //String[] array=dto.getScenes().split(CourseQueryDto.SEPARATE); // //后续再完善 // } // else { - filters.add(FieldFilters.eq("forScene",dto.getScenes())); + filters.add(FieldFilters.eq("forScene", dto.getScenes())); // } } - - if(StringUtils.isNotBlank(dto.getStatus())){ - if(dto.getStatus().indexOf(CourseQueryDto.SEPARATE)>0) { - String[] array=dto.getStatus().split(CourseQueryDto.SEPARATE); - List types=new ArrayList(); - for(String s : array) { - types.add(Integer.valueOf(s)); - } - filters.add(FieldFilters.in("status",types));//多个的情况查询 - }else { - filters.add(FieldFilters.eq("status",Integer.valueOf(dto.getStatus()))); - } + + if (StringUtils.isNotBlank(dto.getStatus())) { + if (dto.getStatus().indexOf(CourseQueryDto.SEPARATE) > 0) { + String[] array = dto.getStatus().split(CourseQueryDto.SEPARATE); + List types = new ArrayList(); + for (String s : array) { + types.add(Integer.valueOf(s)); + } + filters.add(FieldFilters.in("status", types));//多个的情况查询 + } else { + filters.add(FieldFilters.eq("status", Integer.valueOf(dto.getStatus()))); + } } //对于系统分类是一个课程只是一个分类,还是多个的问题。如果单独的分类绑定表,这种查询会单独的处理 - if(StringUtils.isNotBlank(dto.getSysType3())){ - filters.add(FieldFilters.eq("sysType3",dto.getSysType3())); + if (StringUtils.isNotBlank(dto.getSysType3())) { + filters.add(FieldFilters.eq("sysType3", dto.getSysType3())); } - if(StringUtils.isNotBlank(dto.getSysType2())){ - filters.add(FieldFilters.eq("sysType2",dto.getSysType2())); + if (StringUtils.isNotBlank(dto.getSysType2())) { + filters.add(FieldFilters.eq("sysType2", dto.getSysType2())); } - if(StringUtils.isNotBlank(dto.getSysType1())){ - filters.add(FieldFilters.eq("sysType1",dto.getSysType1())); + if (StringUtils.isNotBlank(dto.getSysType1())) { + filters.add(FieldFilters.eq("sysType1", dto.getSysType1())); } - - if(dto.getPublish()!=null){ - filters.add(FieldFilters.eq("published",dto.getPublish())); + + if (dto.getPublish() != null) { + filters.add(FieldFilters.eq("published", dto.getPublish())); } //是否启用 - if(dto.getEnabled()!=null){ - filters.add(FieldFilters.eq("enabled",dto.getEnabled())); + if (dto.getEnabled() != null) { + filters.add(FieldFilters.eq("enabled", dto.getEnabled())); } return filters; } - @Override - public List findList(int num, CourseQueryDto dto) { - List filters = createFilters(dto); - //自动添加过滤已删除 - filters.add(FieldFilters.eq("deleted",false)); - filters.add(FieldFilters.eq("enabled",true)); - - QueryBuilder query=QueryBuilder.from(Course.class).addFilters(filters); - - if(dto.getTopOrder()!=null) { - if(dto.getTopOrder()){ - //query.addOrder(OrderCondition.desc("isTop")); - query.addOrder(OrderCondition.desc("topTime")); - } - } - - OrderCondition oc=null; - if(StringUtils.isNotBlank(dto.getOrderField())) { - if(dto.getOrderAsc()|| dto.getOrderAsc()==null) { - oc=OrderCondition.asc(dto.getOrderField()); - }else { - oc=OrderCondition.desc(dto.getOrderField()); - } - }else { - oc=OrderCondition.desc("id"); - } - query.addOrder(oc); - query.setPageSize(num); - return courseDao.findList(query.builder()); - } - - @Override - public PageList findPage(int pageIndex, int pageSize, CourseQueryDto dto) { - List filters = createFilters(dto); - List filters1 = createFilters(dto); - List filters2 = createFilters(dto); - List list1 = getProject(dto); - List list2 = getRouter(dto); - //需要设置为隐藏的课程id - Set list = new HashSet<>(); - //有受众权限的课程 - if(dto.getAudiences()!=null&&!dto.getAudiences().isEmpty()){ - List audiences = getAudiences(dto); - list.addAll(audiences); - } - //没有受众的课程 - List noAudiences = getNoAudiences(dto); - list.addAll(noAudiences); - //成长路径的课 - List grow = getGrow(dto); -// //已报名的课 - List enroll = getEnroll(dto); - list.addAll(grow); - list.addAll(enroll); - list.addAll(list1); - list.addAll(list2); + @Override + public List findList(int num, CourseQueryDto dto) { + List filters = createFilters(dto); + //自动添加过滤已删除 + filters.add(FieldFilters.eq("deleted", false)); + filters.add(FieldFilters.eq("enabled", true)); - //有权限的查询,也同时查询出创建人的数据,在权限上 - if(TempFilterConfig.Manager_CourseFile_ByOrgIds) { - if(dto.getIsSystemAdmin()==null || !dto.getIsSystemAdmin()) { - if(StringUtil.isNotBlank(dto.getOrgIds())){ - //log.info("【"+dto.getOrgAid()+"】 按机构过滤和自己创建的课程"); - //log.info(" orgids "+dto.getOrgIds()); - if(dto.getOrgIds().contains(",")){ - String[] split = dto.getOrgIds().split(","); - List strings = Arrays.asList(split); -// filters.add(FieldFilters.or(FieldFilters.in("orgId",strings),FieldFilters.eq("sysCreateAid",dto.getOrgAid()))); - filters.add(FieldFilters.in("orgId",strings)); - filters1.add(FieldFilters.eq("sysCreateAid",dto.getOrgAid())); - if(!list.isEmpty()){ - filters2.add(FieldFilters.in("id",list)); - } - }else { -// filters.add(FieldFilters.or(FieldFilters.eq("orgId",dto.getOrgIds()),FieldFilters.eq("sysCreateAid",dto.getOrgAid()))); - filters.add(FieldFilters.eq("orgId",dto.getOrgIds())); - filters1.add(FieldFilters.eq("sysCreateAid",dto.getOrgAid())); - if(!list.isEmpty()){ - filters2.add(FieldFilters.in("id",list)); - } - } - } - if (!StringUtil.isNotBlank(dto.getOrgIds())){ - //log.info("【"+dto.getOrgAid()+"】 机构ids没有, 只查询自己创建的课程"); - //没有机构权限,只能查出自己创建的 -// filters.add(FieldFilters.eq("sysCreateAid",dto.getOrgAid())); - filters1.add(FieldFilters.eq("sysCreateAid",dto.getOrgAid())); - if(!list.isEmpty()){ - filters2.add(FieldFilters.in("id",list)); - } - } - }else { - //log.info("【"+dto.getOrgAid()+"】IsSystemAdmin is true 不过机构过滤,查询全部"); - } - } + QueryBuilder query = QueryBuilder.from(Course.class).addFilters(filters); - //自动添加过滤已删除 - filters.add(FieldFilters.eq("deleted",false)); - filters1.add(FieldFilters.eq("deleted",false)); - filters2.add(FieldFilters.eq("deleted",false)); - //同时查出所有项目内课程 - OrderCondition oc=null; - if(StringUtils.isNotBlank(dto.getOrderField())) { - if(dto.getOrderAsc()||dto.getOrderAsc()==null) { - oc=OrderCondition.asc(dto.getOrderField()); - }else { - oc=OrderCondition.desc(dto.getOrderField()); - } - }else { - oc=OrderCondition.desc("id"); - } - List listByFilters = new ArrayList<>(); - //根据组织筛选 - if(StringUtil.isNotBlank(dto.getOrgIds())){ - listByFilters = courseDao.findListByFilters(oc, filters); - } - //根据创建人筛选 - List listByFilters1; - if(!list.isEmpty()){ - listByFilters1 = courseDao.findListByFilters(oc, filters1); - } else { - listByFilters1 = new ArrayList<>(); + if (dto.getTopOrder() != null) { + if (dto.getTopOrder()) { + //query.addOrder(OrderCondition.desc("isTop")); + query.addOrder(OrderCondition.desc("topTime")); + } } - //根据list筛选 - List listByFilters2 = courseDao.findListByFilters(oc, filters2); - //去除根据组织和创建人筛选的课程id - List finalListByFilters = listByFilters; - List collect = listByFilters2.stream() - .filter(element -> !finalListByFilters.contains(element)) - .filter(element -> !listByFilters1.contains(element)).collect(Collectors.toList()); - List courseIds = collect.stream().map(Course::getId).collect(Collectors.toList()); - //合并 - List mergedList = Stream.concat(Stream.concat(listByFilters.stream(), listByFilters1.stream()),collect.stream()) - // 使用distinct()配合自定义的去重条件 - .filter(distinctByKey(c -> c.getId())) - .collect(Collectors.toList()); -// PageList rs=courseDao.findPage(pageIndex, pageSize, filters, oc); -// long endTime = System.nanoTime(); - //log.info("查询出的条数:"+rs.getCount()); - if(!mergedList.isEmpty()){ - //去掉未发布的课程 - mergedList.removeIf(e->{ - if(!e.getPublished()&&courseIds.contains(e.getId())){ - return true; - } - return false; - }); - //将需要隐藏的做标记 - mergedList.forEach(e->{ - if(courseIds.contains(e.getId())){ - e.setIsPermission(false); - }else { - e.setIsPermission(true); - } - }); - } - List paginate = paginate(mergedList, pageIndex, pageSize); - PageList rs=new PageList<>(); - rs.setCount(mergedList.size()); - rs.setList(paginate); - return rs; - } - private List getRouter(CourseQueryDto dto) { - String sql = "SELECT DISTINCT\n" + - "rt.course_id\n" + - "FROM\n" + - "boe.student s INNER JOIN boe.router_task rt on s.pid=rt.router_id inner join boe_base.boe_course c on c.id=rt.course_id\n" + - "\n" + - "WHERE\n" + - "\n" + - "s.deleted = 0 \n" + - "and rt.deleted=0\n" + - "and rt.type=1\n" + - "and c.deleted=0\n" + - "AND s.type =2 \n" + - "AND s.student_id = ?1"; - Listlist = courseTeacherDao.sqlFindList(sql,dto.getOrgAid()); - Listlist1=new ArrayList<>(); - for (Object obj : list) { - list1.add(obj.toString()); - } - - return list1; - } - private List getProject(CourseQueryDto dto) { - 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 pt.type=1\n" + - "and c.deleted=0\n" + - "AND s.type =1 \n" + - "AND s.student_id = ?1\n"; - Listlist = courseTeacherDao.sqlFindList(sql, dto.getOrgAid()); - Listlist1=new ArrayList<>(); - for (Object obj : list) { - list1.add(obj.toString()); - } - return list1; - } - private List getAudiences(CourseQueryDto dto) { - List s=Arrays.asList(dto.getAudiences().split(",")); - String sql = "SELECT DISTINCT\n" + - "\tcc.course_id \n" + - "FROM\n" + - "\t`boe_course_crowd` cc\n" + - "\tINNER JOIN boe_course c ON cc.course_id = c.id \n" + - "WHERE\n" + - "\tcc.group_id IN (?1) \n" + - "\tAND c.deleted =0 "; - List list = courseTeacherDao.sqlFindList(sql,s); - Listlist1=new ArrayList<>(); - for (Object obj : list) { - list1.add(obj.toString()); - } - - return list1; - } - private List getNoAudiences(CourseQueryDto dto) { - String sql = "SELECT DISTINCT\n" + - "\tc.id \n" + - "FROM\n" + - "\tboe_base.boe_course c \n" + - "WHERE\n" + - "\t NOT EXISTS ( SELECT 1 FROM boe_base.boe_course_crowd cc where cc.course_id = c.id ) \n" + - "\tAND c.deleted =0 \n"; - Listlist = courseTeacherDao.sqlFindList(sql); - Listlist1=new ArrayList<>(); - for (Object obj : list) { - list1.add(obj.toString()); - } - return list1; - } - private List getGrow(CourseQueryDto dto) { - String sql = "SELECT DISTINCT\n" + - "\tc.id \n" + - "FROM\n" + - "\tboe.student s\n" + - "\tINNER JOIN boe.grow_task gt ON s.pid = gt.grow_id\n" + - "\tINNER JOIN boe_base.boe_course c ON gt.course_id = c.id \n" + - "WHERE\n" + - "\ts.type = 14 \n" + - "\tAND gt.type = 1 \n" + - "\tAND s.deleted = 0 \n" + - "\tAND gt.deleted = 0 \n" + - "\tAND c.deleted = 0\n"+ - "\tAND s.student_id = ?1\n"; - Listlist = courseTeacherDao.sqlFindList(sql,dto.getOrgAid()); - Listlist1=new ArrayList<>(); - for (Object obj : list) { - list1.add(obj.toString()); - } - return list1; - } - private List getEnroll(CourseQueryDto dto) { - String sql = "SELECT DISTINCT\n" + - "\tsc.course_id \n" + - "FROM\n" + - "\tboe_base.boe_study_course sc\n" + - "\tINNER JOIN boe_base.boe_course c ON sc.course_id = c.id \n" + - "WHERE\n" + - "\tsc.aid = ?1 \n" + - "\tAND c.deleted =0"; - Listlist = courseTeacherDao.sqlFindList(sql,dto.getOrgAid()); - Listlist1=new ArrayList<>(); - for (Object obj : list) { - list1.add(obj.toString()); - } - - return list1; - } - public static List paginate(List list, int pageNumber, int pageSize) { - if (list == null || list.isEmpty() || pageNumber <= 0 || pageSize <= 0) { - return null; - } - - int fromIndex = (pageNumber - 1) * pageSize; - int toIndex = Math.min(fromIndex + pageSize, list.size()); - - if (fromIndex >= list.size()) { - // 请求的页码超过了最大页数,返回空列表 - return null; - } - - return list.subList(fromIndex, toIndex); - } - private static Predicate distinctByKey(Function keyExtractor) { - Set seen = ConcurrentHashMap.newKeySet(); - return t -> seen.add(keyExtractor.apply(t)); - } - @Override - public List findList(CourseQueryDto dto) { - List filters = createFilters(dto); - //自动添加过滤已删除 - filters.add(FieldFilters.eq("deleted",false)); - filters.add(FieldFilters.eq("enabled",true)); - OrderCondition oc=null; - if(StringUtils.isNotBlank(dto.getOrderField())) { - if(dto.getOrderAsc()||dto.getOrderAsc()==null) { - oc=OrderCondition.asc(dto.getOrderField()); - }else { - oc=OrderCondition.desc(dto.getOrderField()); - } - }else { - oc=OrderCondition.desc("sysCreateTime"); - } - List list = courseDao.findListByFilters(oc, filters); - - return list; - } + OrderCondition oc = null; + if (StringUtils.isNotBlank(dto.getOrderField())) { + if (dto.getOrderAsc() || dto.getOrderAsc() == null) { + oc = OrderCondition.asc(dto.getOrderField()); + } else { + oc = OrderCondition.desc(dto.getOrderField()); + } + } else { + oc = OrderCondition.desc("id"); + } + query.addOrder(oc); + query.setPageSize(num); + return courseDao.findList(query.builder()); + } - @Override - public PageList findSimplePage(int pageIndex, int pageSize, CourseQueryDto dto) { - List filters = createFilters(dto); - //自动添加过滤已删除 - filters.add(FieldFilters.eq("deleted",false)); - filters.add(FieldFilters.eq("enabled",true)); - - QueryBuilder query=QueryBuilder.from(Course.class).addFilters(filters); - - if(dto.getTopOrder()!=null) { - if(dto.getTopOrder()){ - query.addOrder(OrderCondition.desc("isTop")); - query.addOrder(OrderCondition.desc("topTime")); - } - } - OrderCondition oc=null; - if(StringUtils.isNotBlank(dto.getOrderField())) { - if(dto.getOrderAsc()==null || dto.getOrderAsc()) { - oc=OrderCondition.asc(dto.getOrderField()); - }else { - oc=OrderCondition.desc(dto.getOrderField()); - } - }else { - //oc=OrderCondition.desc("id"); - //默认按发布时间排序 - oc=OrderCondition.desc("publishTime"); - } - query.addOrder(oc); - -// if(dto.getTopOrder()!=null && dto.getTopOrder()){ -// query.addOrder(OrderCondition.desc("topTime")); + // public PageList findPage(int pageIndex, int pageSize, CourseQueryDto dto) { +// List filters = createFilters(dto); +// List filters1 = createFilters(dto); +// List filters2 = createFilters(dto); +//// String s = redisTemplate.opsForValue().get("course_search"); +//// Setlist=new HashSet<>(); +//// if(s!=null&&!s.isEmpty()){ +//// list=Arrays.stream(s.split(",")).collect(Collectors.toSet()); +//// }else { +//// Set ss = getSeache(dto); +//// String courseSearch=String.join(",",ss); +//// redisTemplate.opsForValue().set("course_search",courseSearch); +//// //设置过期时间为1分钟 +//// redisTemplate.expire("course_search", 1, TimeUnit.MINUTES); +//// } +// Set list = getSeache(dto); +// //有权限的查询,也同时查询出创建人的数据,在权限上 +// if(TempFilterConfig.Manager_CourseFile_ByOrgIds) { +// if(dto.getIsSystemAdmin()==null || !dto.getIsSystemAdmin()) { +// if(StringUtil.isNotBlank(dto.getOrgIds())){ +// //log.info("【"+dto.getOrgAid()+"】 按机构过滤和自己创建的课程"); +// //log.info(" orgids "+dto.getOrgIds()); +// if(dto.getOrgIds().contains(",")){ +// String[] split = dto.getOrgIds().split(","); +// List strings = Arrays.asList(split); +//// filters.add(FieldFilters.or(FieldFilters.in("orgId",strings),FieldFilters.eq("sysCreateAid",dto.getOrgAid()))); +// filters.add(FieldFilters.in("orgId",strings)); +// filters1.add(FieldFilters.eq("sysCreateAid",dto.getOrgAid())); +// if(!list.isEmpty()){ +// filters2.add(FieldFilters.in("id",list)); +// } +// }else { +//// filters.add(FieldFilters.or(FieldFilters.eq("orgId",dto.getOrgIds()),FieldFilters.eq("sysCreateAid",dto.getOrgAid()))); +// filters.add(FieldFilters.eq("orgId",dto.getOrgIds())); +// filters1.add(FieldFilters.eq("sysCreateAid",dto.getOrgAid())); +// if(!list.isEmpty()){ +// filters2.add(FieldFilters.in("id",list)); +// } +// } +// } +// if (!StringUtil.isNotBlank(dto.getOrgIds())){ +// //log.info("【"+dto.getOrgAid()+"】 机构ids没有, 只查询自己创建的课程"); +// //没有机构权限,只能查出自己创建的 +//// filters.add(FieldFilters.eq("sysCreateAid",dto.getOrgAid())); +// filters1.add(FieldFilters.eq("sysCreateAid",dto.getOrgAid())); +// if(!list.isEmpty()){ +// filters2.add(FieldFilters.in("id",list)); +// } +// } +// }else { +// //log.info("【"+dto.getOrgAid()+"】IsSystemAdmin is true 不过机构过滤,查询全部"); +// } +// } +// +// //自动添加过滤已删除 +// filters.add(FieldFilters.eq("deleted",false)); +// filters1.add(FieldFilters.eq("deleted",false)); +// filters2.add(FieldFilters.eq("deleted",false)); +// //同时查出所有项目内课程 +// OrderCondition oc=null; +// if(StringUtils.isNotBlank(dto.getOrderField())) { +// if(dto.getOrderAsc()||dto.getOrderAsc()==null) { +// oc=OrderCondition.asc(dto.getOrderField()); +// }else { +// oc=OrderCondition.desc(dto.getOrderField()); +// } +// }else { +// oc=OrderCondition.desc("id"); // } - - query.setPageIndex(pageIndex); - query.setPageSize(pageSize); - query.addFields("new Course(id,type,name,coverImg,score,studys,comments,shares,praises,favorites,forUsers,value,summary,publishTime,isTop)"); - - PageList rs=courseDao.findPage(query.builder()); - - return rs; - } +// List listByFilters = new ArrayList<>(); +// //根据组织筛选 +// if(StringUtil.isNotBlank(dto.getOrgIds())){ +// listByFilters = courseDao.findListByFilters(oc, filters); +// } +// //根据创建人筛选 +// List listByFilters1; +// if(!list.isEmpty()){ +// listByFilters1 = courseDao.findListByFilters(oc, filters1); +// } else { +// listByFilters1 = new ArrayList<>(); +// } +// //根据list筛选 +//// List listByFilters2 = courseDao.findListByFilters(oc, filters2); +// //去除根据组织和创建人筛选的课程id +// List finalListByFilters = listByFilters; +//// List collect = list.stream() +//// .filter(element -> !finalListByFilters.contains(element)) +//// .filter(element -> !listByFilters1.contains(element)).collect(Collectors.toList()); +//// List courseIds = collect.stream().map(Course::getId).collect(Collectors.toList()); +// //合并 +// List mergedList = Stream.concat(listByFilters.stream(), listByFilters1.stream()) +// // 使用distinct()配合自定义的去重条件 +// .filter(distinctByKey(c -> c.getId())) +// .collect(Collectors.toList()); +//// PageList rs=courseDao.findPage(pageIndex, pageSize, filters, oc); +//// long endTime = System.nanoTime(); +// //log.info("查询出的条数:"+rs.getCount()); +// if(!mergedList.isEmpty()){ +// //去掉未发布的课程 +// mergedList.removeIf(e->{ +// if(!e.getPublished()&&courseIds.contains(e.getId())){ +// return true; +// } +// return false; +// }); +// // +// //将需要隐藏的做标记 +// mergedList.forEach(e->{ +// if(courseIds.contains(e.getId())){ +// e.setIsPermission(false); +// }else { +// e.setIsPermission(true); +// } +// }); +// } +// List paginate = paginate(mergedList, pageIndex, pageSize); +// PageList rs=new PageList<>(); +// rs.setCount(mergedList.size()); +// rs.setList(paginate); +// return rs; +// } + @Override + public PageList findPage(int pageIndex, int pageSize, CourseQueryDto dto) { + List filters2 = createFilters(dto); + filters2.add(FieldFilters.eq("deleted", false)); + //同时查出所有项目内课程 + OrderCondition oc = null; + if (StringUtils.isNotBlank(dto.getOrderField())) { + if (dto.getOrderAsc() || dto.getOrderAsc() == null) { + oc = OrderCondition.asc(dto.getOrderField()); + } else { + oc = OrderCondition.desc(dto.getOrderField()); + } + } else { + oc = OrderCondition.desc("id"); + } + //组织id + List strings = new ArrayList<>(); + if (StringUtil.isNotBlank(dto.getOrgIds())) { + if (dto.getOrgIds().contains(",")) { + String[] split = dto.getOrgIds().split(","); + strings = Arrays.asList(split); + } else { + strings.add(dto.getOrgIds()); + } + } + Set seache = getSeache(dto); + //查出全部的课程 + List listByFilters2 = courseDao.findListByFilters(oc, filters2); + if (TempFilterConfig.Manager_CourseFile_ByOrgIds) { + if (dto.getIsSystemAdmin() == null || !dto.getIsSystemAdmin()) { + List finalStrings = strings; + //去掉未发布的课程 + listByFilters2.removeIf(e -> { + if (!e.getPublished() && seache.contains(e.getId()) && !finalStrings.contains(e.getOrgId()) && !dto.getOrgAid().equals(e.getSysCreateAid())) { + return true; + } + return false; + }); + //将需要隐藏的做标记 + listByFilters2.forEach(e -> { + if (seache.contains(e.getId()) && !finalStrings.contains(e.getOrgId()) && !dto.getOrgAid().equals(e.getSysCreateAid())) { + e.setIsPermission(false); + } else { + e.setIsPermission(true); + } + }); + } + } + List paginate = paginate(listByFilters2, pageIndex, pageSize); + PageList rs = new PageList<>(); + rs.setCount(listByFilters2.size()); + rs.setList(paginate); + return rs; + } - @Override - public List findSimpleList(int number,String currentAid, CourseQueryDto dto) { - List filters = createFilters(dto); - //自动添加过滤已删除 - filters.add(FieldFilters.eq("deleted",false)); - filters.add(FieldFilters.eq("enabled",true)); - //返回的结果 + private Set getSeache(CourseQueryDto dto) { + //需要设置为隐藏的课程id + Set list = new HashSet<>(); + List list1 = getProject(dto); + List list2 = getRouter(dto); +// //有受众权限的课程 + if (dto.getAudiences() != null && !dto.getAudiences().isEmpty()) { + List audiences = getAudiences(dto); + list.addAll(audiences); + } +// //没有受众的课程 + List noAudiences = getNoAudiences(dto); + list.addAll(noAudiences); +// //成长路径的课 + List grow = getGrow(dto); +// //已报名的课 + List enroll = getEnroll(dto); + list.addAll(grow); + list.addAll(enroll); + list.addAll(list1); + list.addAll(list2); + return list; + } - QueryBuilder query=QueryBuilder.from(Course.class).addFilters(filters); + private List getRouter(CourseQueryDto dto) { + String sql = "SELECT DISTINCT\n" + + "rt.course_id\n" + + "FROM\n" + + "boe.student s INNER JOIN boe.router_task rt on s.pid=rt.router_id inner join boe_base.boe_course c on c.id=rt.course_id\n" + + "\n" + + "WHERE\n" + + "\n" + + "s.deleted = 0 \n" + + "and rt.deleted=0\n" + + "and rt.type=1\n" + + "and c.deleted=0\n" + + "AND s.type =2 \n" + + "AND s.student_id = ?1"; + List list = courseTeacherDao.sqlFindList(sql, dto.getOrgAid()); + List list1 = new ArrayList<>(); + for (Object obj : list) { + list1.add(obj.toString()); + } - if(dto.getTopOrder()!=null){ - if(dto.getTopOrder()){ - query.addOrder(OrderCondition.desc("isTop")); - query.addOrder(OrderCondition.desc("topTime")); - } - } - OrderCondition oc=null; - if(StringUtils.isNotBlank(dto.getOrderField())) { - if(dto.getOrderAsc()==null || dto.getOrderAsc()) { - oc=OrderCondition.asc(dto.getOrderField()); - }else { - oc=OrderCondition.desc(dto.getOrderField()); - } - }else { - //oc=OrderCondition.desc("id"); - //默认按发布时间排序 - oc=OrderCondition.desc("publishTime"); - } - query.addOrder(oc); + return list1; + } + + private List getProject(CourseQueryDto dto) { + 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 pt.type=1\n" + + "and c.deleted=0\n" + + "AND s.type =1 \n" + + "AND s.student_id = ?1\n"; + List list = courseTeacherDao.sqlFindList(sql, dto.getOrgAid()); + List list1 = new ArrayList<>(); + for (Object obj : list) { + list1.add(obj.toString()); + } + return list1; + } + + private List getAudiences(CourseQueryDto dto) { + List s = Arrays.asList(dto.getAudiences().split(",")); + String sql = "SELECT DISTINCT\n" + + "\tcc.course_id \n" + + "FROM\n" + + "\t`boe_course_crowd` cc\n" + + "\tINNER JOIN boe_course c ON cc.course_id = c.id \n" + + "WHERE\n" + + "\tcc.group_id IN (?1) \n" + + "\tAND c.deleted =0 "; + List list = courseTeacherDao.sqlFindList(sql, s); + List list1 = new ArrayList<>(); + for (Object obj : list) { + list1.add(obj.toString()); + } + + return list1; + } + + private List getNoAudiences(CourseQueryDto dto) { + String sql = "SELECT\n" + + "\tc.id \n" + + "FROM\n" + + "\tboe_base.boe_course c \n" + + "WHERE\n" + + "\t NOT EXISTS ( SELECT 1 FROM boe_base.boe_course_crowd cc where cc.course_id = c.id ) \n" + + "\tAND c.deleted =0 \n"; + List list = courseDao.sqlFindList(sql); + List list1 = new ArrayList<>(); + for (Object obj : list) { + list1.add(obj.toString()); + } + return list1; + } + + private List getGrow(CourseQueryDto dto) { + String sql = "SELECT DISTINCT\n" + + "\tc.id \n" + + "FROM\n" + + "\tboe.student s\n" + + "\tINNER JOIN boe.grow_task gt ON s.pid = gt.grow_id\n" + + "\tINNER JOIN boe_base.boe_course c ON gt.course_id = c.id \n" + + "WHERE\n" + + "\ts.type = 14 \n" + + "\tAND gt.type = 1 \n" + + "\tAND s.deleted = 0 \n" + + "\tAND gt.deleted = 0 \n" + + "\tAND c.deleted = 0\n" + + "\tAND s.student_id = ?1\n"; + List list = courseTeacherDao.sqlFindList(sql, dto.getOrgAid()); + List list1 = new ArrayList<>(); + for (Object obj : list) { + list1.add(obj.toString()); + } + return list1; + } + + private List getEnroll(CourseQueryDto dto) { + String sql = "SELECT DISTINCT\n" + + "\tsc.course_id \n" + + "FROM\n" + + "\tboe_base.boe_study_course sc\n" + + "\tINNER JOIN boe_base.boe_course c ON sc.course_id = c.id \n" + + "WHERE\n" + + "\tsc.aid = ?1 \n" + + "\tAND c.deleted =0"; + List list = courseTeacherDao.sqlFindList(sql, dto.getOrgAid()); + List list1 = new ArrayList<>(); + for (Object obj : list) { + list1.add(obj.toString()); + } + + return list1; + } + + public static List paginate(List list, int pageNumber, int pageSize) { + if (list == null || list.isEmpty() || pageNumber <= 0 || pageSize <= 0) { + return null; + } + + int fromIndex = (pageNumber - 1) * pageSize; + int toIndex = Math.min(fromIndex + pageSize, list.size()); + + if (fromIndex >= list.size()) { + // 请求的页码超过了最大页数,返回空列表 + return null; + } + + return list.subList(fromIndex, toIndex); + } + + private static Predicate distinctByKey(Function keyExtractor) { + Set seen = ConcurrentHashMap.newKeySet(); + return t -> seen.add(keyExtractor.apply(t)); + } + + @Override + public List findList(CourseQueryDto dto) { + List filters = createFilters(dto); + //自动添加过滤已删除 + filters.add(FieldFilters.eq("deleted", false)); + filters.add(FieldFilters.eq("enabled", true)); + OrderCondition oc = null; + if (StringUtils.isNotBlank(dto.getOrderField())) { + if (dto.getOrderAsc() || dto.getOrderAsc() == null) { + oc = OrderCondition.asc(dto.getOrderField()); + } else { + oc = OrderCondition.desc(dto.getOrderField()); + } + } else { + oc = OrderCondition.desc("sysCreateTime"); + } + List list = courseDao.findListByFilters(oc, filters); + + return list; + } + + + @Override + public PageList findSimplePage(int pageIndex, int pageSize, CourseQueryDto dto) { + List filters = createFilters(dto); + //自动添加过滤已删除 + filters.add(FieldFilters.eq("deleted", false)); + filters.add(FieldFilters.eq("enabled", true)); + + QueryBuilder query = QueryBuilder.from(Course.class).addFilters(filters); + + if (dto.getTopOrder() != null) { + if (dto.getTopOrder()) { + query.addOrder(OrderCondition.desc("isTop")); + query.addOrder(OrderCondition.desc("topTime")); + } + } + OrderCondition oc = null; + if (StringUtils.isNotBlank(dto.getOrderField())) { + if (dto.getOrderAsc() == null || dto.getOrderAsc()) { + oc = OrderCondition.asc(dto.getOrderField()); + } else { + oc = OrderCondition.desc(dto.getOrderField()); + } + } else { + //oc=OrderCondition.desc("id"); + //默认按发布时间排序 + oc = OrderCondition.desc("publishTime"); + } + query.addOrder(oc); // if(dto.getTopOrder()!=null && dto.getTopOrder()){ // query.addOrder(OrderCondition.desc("topTime")); // } - - int num=6; - List courses = this.userHobbyList(currentAid, dto.getOrderField(), dto.getOrderAsc()); - if(courses!=null && !courses.isEmpty()){ - num=6-courses.size(); - //重复的不包括 - List courseIds = courses.stream().map(Course::getId).collect(Collectors.toList()); - query.addFilter(FieldFilters.notIn("id",courseIds)); - } - query.setPageSize(num); - query.addFields("new Course(id,type,name,coverImg,score,studys,comments,shares,praises,favorites,forUsers,value,summary,publishTime,isTop)"); - List rs=courseDao.findList(query.builder()); - if(rs.isEmpty()) { - log.error("未能查询出数据"); - } + + query.setPageIndex(pageIndex); + query.setPageSize(pageSize); + query.addFields("new Course(id,type,name,coverImg,score,studys,comments,shares,praises,favorites,forUsers,value,summary,publishTime,isTop)"); + + PageList rs = courseDao.findPage(query.builder()); + + return rs; + } + + @Override + public List findSimpleList(int number, String currentAid, CourseQueryDto dto) { + List filters = createFilters(dto); + //自动添加过滤已删除 + filters.add(FieldFilters.eq("deleted", false)); + filters.add(FieldFilters.eq("enabled", true)); + //返回的结果 + + QueryBuilder query = QueryBuilder.from(Course.class).addFilters(filters); + + if (dto.getTopOrder() != null) { + if (dto.getTopOrder()) { + query.addOrder(OrderCondition.desc("isTop")); + query.addOrder(OrderCondition.desc("topTime")); + } + } + OrderCondition oc = null; + if (StringUtils.isNotBlank(dto.getOrderField())) { + if (dto.getOrderAsc() == null || dto.getOrderAsc()) { + oc = OrderCondition.asc(dto.getOrderField()); + } else { + oc = OrderCondition.desc(dto.getOrderField()); + } + } else { + //oc=OrderCondition.desc("id"); + //默认按发布时间排序 + oc = OrderCondition.desc("publishTime"); + } + query.addOrder(oc); + +// if(dto.getTopOrder()!=null && dto.getTopOrder()){ +// query.addOrder(OrderCondition.desc("topTime")); +// } + + int num = 6; + List courses = this.userHobbyList(currentAid, dto.getOrderField(), dto.getOrderAsc()); + if (courses != null && !courses.isEmpty()) { + num = 6 - courses.size(); + //重复的不包括 + List courseIds = courses.stream().map(Course::getId).collect(Collectors.toList()); + query.addFilter(FieldFilters.notIn("id", courseIds)); + } + query.setPageSize(num); + query.addFields("new Course(id,type,name,coverImg,score,studys,comments,shares,praises,favorites,forUsers,value,summary,publishTime,isTop)"); + List rs = courseDao.findList(query.builder()); + if (rs.isEmpty()) { + log.error("未能查询出数据"); + } // courses.addAll(rs); - rs.addAll(courses); - return rs; - } + rs.addAll(courses); + return rs; + } - @Override - public List mobileList(int num, String aid,CourseQueryDto dto) { + @Override + public List mobileList(int num, String aid, CourseQueryDto dto) { - List filters = createFilters(dto); - //自动添加过滤已删除 - filters.add(FieldFilters.eq("deleted",false)); - filters.add(FieldFilters.eq("enabled",true)); - //返回的结果 + List filters = createFilters(dto); + //自动添加过滤已删除 + filters.add(FieldFilters.eq("deleted", false)); + filters.add(FieldFilters.eq("enabled", true)); + //返回的结果 - QueryBuilder query=QueryBuilder.from(Course.class).addFilters(filters); + QueryBuilder query = QueryBuilder.from(Course.class).addFilters(filters); - if(dto.getTopOrder()!=null) { - if(dto.getTopOrder()){ - query.addOrder(OrderCondition.desc("isTop")); - query.addOrder(OrderCondition.desc("topTime")); - } - } - OrderCondition oc=null; - if(StringUtils.isNotBlank(dto.getOrderField())) { - if(dto.getOrderAsc()==null || dto.getOrderAsc()) { - oc=OrderCondition.asc(dto.getOrderField()); - }else { - oc=OrderCondition.desc(dto.getOrderField()); - } - }else { - //oc=OrderCondition.desc("id"); - //默认按发布时间排序 - oc=OrderCondition.desc("publishTime"); - } - query.addOrder(oc); + if (dto.getTopOrder() != null) { + if (dto.getTopOrder()) { + query.addOrder(OrderCondition.desc("isTop")); + query.addOrder(OrderCondition.desc("topTime")); + } + } + OrderCondition oc = null; + if (StringUtils.isNotBlank(dto.getOrderField())) { + if (dto.getOrderAsc() == null || dto.getOrderAsc()) { + oc = OrderCondition.asc(dto.getOrderField()); + } else { + oc = OrderCondition.desc(dto.getOrderField()); + } + } else { + //oc=OrderCondition.desc("id"); + //默认按发布时间排序 + oc = OrderCondition.desc("publishTime"); + } + query.addOrder(oc); - List courses = this.userHobbyList(aid, dto.getOrderField(), dto.getOrderAsc()); - if(courses!=null && !courses.isEmpty()){ - num=num-courses.size(); - //重复的不包括 - List courseIds = courses.stream().map(Course::getId).collect(Collectors.toList()); - query.addFilter(FieldFilters.notIn("id",courseIds)); - } - query.setPageSize(num); - query.addFields("new Course(id,type,name,coverImg,score,studys,comments,shares,praises,favorites,forUsers,value,summary,publishTime,isTop,sysType1,sysType2,sysType3)"); - List courseList = courseDao.findList(query.builder()); - courseList.addAll(courses); - return courseList; - } + List courses = this.userHobbyList(aid, dto.getOrderField(), dto.getOrderAsc()); + if (courses != null && !courses.isEmpty()) { + num = num - courses.size(); + //重复的不包括 + List courseIds = courses.stream().map(Course::getId).collect(Collectors.toList()); + query.addFilter(FieldFilters.notIn("id", courseIds)); + } + query.setPageSize(num); + query.addFields("new Course(id,type,name,coverImg,score,studys,comments,shares,praises,favorites,forUsers,value,summary,publishTime,isTop,sysType1,sysType2,sysType3)"); + List courseList = courseDao.findList(query.builder()); + courseList.addAll(courses); + return courseList; + } - @Override - public void save(Course course) { - course.setComments(0); - course.setDeleted(false); - course.setEnabled(true);//是否可用,上下架 - course.setFavorites(0); - course.setIsTop(false); - course.setPraises(0); - course.setPublished(false); - course.setShares(0); - course.setViews(0); - course.setStudyTime(0); - course.setStudys(0); - course.setScore(0f); - course.setTrampleCount(0); - if(course.getSource()==null) { - course.setSource(1);//来源内部 - } - if(course.getVisible()==null) { - course.setVisible(true); - } + @Override + public void save(Course course) { + course.setComments(0); + course.setDeleted(false); + course.setEnabled(true);//是否可用,上下架 + course.setFavorites(0); + course.setIsTop(false); + course.setPraises(0); + course.setPublished(false); + course.setShares(0); + course.setViews(0); + course.setStudyTime(0); + course.setStudys(0); + course.setScore(0f); + course.setTrampleCount(0); + if (course.getSource() == null) { + course.setSource(1);//来源内部 + } + if (course.getVisible() == null) { + course.setVisible(true); + } courseDao.save(course); - - } - - @Override - public void update(Course course, boolean log) { - //更新。 - courseDao.update(course); - - if(StringUtils.isNotBlank(course.getFullTextId())) { - publishUtil.removeByDocId(course.getFullTextId()); - } - - //记录日志 + + } + + @Override + public void update(Course course, boolean log) { + //更新。 + courseDao.update(course); + + if (StringUtils.isNotBlank(course.getFullTextId())) { + publishUtil.removeByDocId(course.getFullTextId()); + } + + //记录日志 // if(log) { // //记录课程记录 // // } - } - - - @Override - public void delete(String id,boolean erasable, String aid, String name, String remark) { - if(!erasable) { - courseDao.setDeleted(id); - courseDao.updateFieldById(id,"name","已删除"+name); - //同时添加发布事件,这里的创建人需要修改为教师 - Course c=courseDao.get(id); - //删除分两种情况,一个是管理员删除,一个是自己删除 ,所以这里的处理移到前端了 - if(c.getFullTextId()!=null) { - publishUtil.removeByDocId(c.getFullTextId()); - } - //只有速有全文检索返回标识的,才算是发布过再删除的,删除消息 - if(StringUtils.isNotBlank(c.getFullTextId())){ - if(eventSender!=null) { - List teachers = courseTeacherDao.findList(FieldFilters.eq("courseId", id)); - if(teachers.size()>0) { - String authorIds=""; - for(CourseTeacher cteacher:teachers) { - if(authorIds.equals("")) { - authorIds+=cteacher.getTeacherId(); - }else { - authorIds+="|"+cteacher.getTeacherId(); - } - } - String txt="管理删除课程"; - eventSender.send(txt,"CourseDelete", "管理删除课程", c.getId(), "1", c.getName(), aid, name,"authors:"+authorIds); - } - }else { - log.error("未配置事件消息发送的实现"); - } - } - }else { - //彻底删除,课件设置为无课程状态 - courseDao.setDeleted(id); - } - //记录删除日志信息 - - } - @Override - public Course get(String id) { - Course c=courseDao.get(id); - return c; - } - - @Override - public Course getAddView(String id) { - Course c=courseDao.get(id); - courseDao.updateFieldById(id,"views", c.getViews()+1); - return c; - } - - @Override - public void save(CourseFullDto full) { - Course c=full.getCourse(); - c.setComments(0); - c.setDeleted(false); - c.setEnabled(true); - c.setErasable(true);//未发布前是可以物理删除的 - c.setFavorites(0); - c.setIsTop(false); - c.setViews(0); - c.setStudys(0); - c.setPraises(0); - c.setTrampleCount(0); + } - - if(c.getPublished()==null) { - c.setPublished(false);// - } - c.setShares(0); - if(c.getStatus()==null) { - c.setStatus(Course.STATUS_NONE); - } - if(c.getScore()==null) { - c.setScore(0f);//默认是5分 - } - courseDao.save(c); - c.setSysVersion(0); - if(full.getTeachers()!=null && !full.getTeachers().isEmpty()) { - for(CourseTeacher ct : full.getTeachers()) { - ct.setCourseId(c.getId()); - courseTeacherDao.save(ct); - } - } - if(full.getCrowds()!=null && !full.getCrowds().isEmpty()) { - for(CourseCrowd cc : full.getCrowds()) { - cc.setCourseId(c.getId()); - courseCrowdDao.save(cc); - } - } - } - /** - * 追加修改日志,共用方法,在其它的修改的地方也可能调用 - * @param old - * @param now - */ - private void appendUpdateLog(StringBuffer josnLog,Course oldCourse,Course newCourse) { - if(!newCourse.getName().equals(oldCourse.getName())) { - josnLog.append("{\"field\":\"name\",\"title\":\"名称\",\"before\":\""+oldCourse.getName()+"\",\"after\":\""+newCourse.getName()+"\" },"); - } - if(newCourse.getSysType1()!=null && !newCourse.getSysType1().equals(oldCourse.getSysType1())){ - josnLog.append("{\"field\":\"name\",\"title\":\"一级内容分类\",\"before\":\""+oldCourse.getSysType1()+"\",\"after\":\""+newCourse.getSysType1()+"\" },"); - } - if(newCourse.getSysType2()!=null && !newCourse.getSysType2().equals(oldCourse.getSysType2()) ){ - josnLog.append("{\"field\":\"name\",\"title\":\"二级内容分类\",\"before\":\""+oldCourse.getSysType2()+"\",\"after\":\""+newCourse.getSysType2()+"\" },"); - } - if(newCourse.getSysType3()!=null && !newCourse.getSysType3().equals(oldCourse.getSysType3())){ - josnLog.append("{\"field\":\"name\",\"title\":\"三级内容分类\",\"before\":\""+oldCourse.getSysType3()+"\",\"after\":\""+newCourse.getSysType3()+"\" },"); - } - if(newCourse.getForUsers()!=null && !newCourse.getForUsers().equals(oldCourse.getForUsers())){ - josnLog.append("{\"field\":\"name\",\"title\":\"目标人群\",\"before\":\""+oldCourse.getForUsers()+"\",\"after\":\""+newCourse.getForUsers()+"\" },"); - } - if(newCourse.getCoverImg()!=null && !newCourse.getCoverImg().equals(oldCourse.getCoverImg())){ - josnLog.append("{\"field\":\"name\",\"title\":\"封面图片\",\"before\":\""+oldCourse.getCoverImg()+"\",\"after\":\""+newCourse.getCoverImg()+"\" },"); - } - if(newCourse.getForScene()!=null && !newCourse.getForScene().equals(oldCourse.getForScene())){ - josnLog.append("{\"field\":\"name\",\"title\":\"应用场景\",\"before\":\""+oldCourse.getForScene()+"\",\"after\":\""+newCourse.getForScene()+"\" },"); - } - if(newCourse.getValue()!=null && !newCourse.getValue().equals(oldCourse.getValue())){ - josnLog.append("{\"field\":\"name\",\"title\":\"课程价值\",\"before\":\""+oldCourse.getValue()+"\",\"after\":\""+newCourse.getValue()+"\" },"); - } - if(!newCourse.getDevice().equals(oldCourse.getDevice())){ - josnLog.append("{\"field\":\"name\",\"title\":\"观看设置\",\"before\":\""+oldCourse.getDevice()+"\",\"after\":\""+newCourse.getDevice()+"\" },"); - } - if(newCourse.getKeywords()!=null && !newCourse.getKeywords().equals(oldCourse.getKeywords())){ - josnLog.append("{\"field\":\"name\",\"title\":\"关键字\",\"before\":\""+oldCourse.getKeywords()+"\",\"after\":\""+newCourse.getKeywords()+"\" },"); - } - if(newCourse.getSource()!=null && !newCourse.getSource().equals(oldCourse.getSource())){ - josnLog.append("{\"field\":\"name\",\"title\":\"来源\",\"before\":\""+oldCourse.getScore()+"\",\"after\":\""+newCourse.getScore()+"\" },"); - } - if(newCourse.getSummary()!=null && !newCourse.getSummary().equals(oldCourse.getSummary())){ - josnLog.append("{\"field\":\"name\",\"title\":\"简介\",\"before\":\""+oldCourse.getSummary()+"\",\"after\":\""+newCourse.getSummary()+"\" },"); - } - } - - @Override - public void update(CourseFullDto full) throws Exception { + @Override + public void delete(String id, boolean erasable, String aid, String name, String remark) { + if (!erasable) { + courseDao.setDeleted(id); + courseDao.updateFieldById(id, "name", "已删除" + name); + //同时添加发布事件,这里的创建人需要修改为教师 + Course c = courseDao.get(id); + //删除分两种情况,一个是管理员删除,一个是自己删除 ,所以这里的处理移到前端了 + if (c.getFullTextId() != null) { + publishUtil.removeByDocId(c.getFullTextId()); + } + //只有速有全文检索返回标识的,才算是发布过再删除的,删除消息 + if (StringUtils.isNotBlank(c.getFullTextId())) { + if (eventSender != null) { + List teachers = courseTeacherDao.findList(FieldFilters.eq("courseId", id)); + if (teachers.size() > 0) { + String authorIds = ""; + for (CourseTeacher cteacher : teachers) { + if (authorIds.equals("")) { + authorIds += cteacher.getTeacherId(); + } else { + authorIds += "|" + cteacher.getTeacherId(); + } + } + String txt = "管理删除课程"; + eventSender.send(txt, "CourseDelete", "管理删除课程", c.getId(), "1", c.getName(), aid, name, "authors:" + authorIds); + } + } else { + log.error("未配置事件消息发送的实现"); + } + } + } else { + //彻底删除,课件设置为无课程状态 + courseDao.setDeleted(id); + } + //记录删除日志信息 - Course c=full.getCourse();//当前的课程信息 - Course nowCourse=courseDao.get(c.getId());//修改之前的课程信息 + } - StringBuffer stringBuffer = new StringBuffer("["); - //追加日志内容 - appendUpdateLog(stringBuffer,nowCourse,c); + @Override + public Course get(String id) { + Course c = courseDao.get(id); + return c; + } - if(stringBuffer.length()>1){ + @Override + public Course getAddView(String id) { + Course c = courseDao.get(id); + courseDao.updateFieldById(id, "views", c.getViews() + 1); + return c; + } - String strJson=stringBuffer.substring(0,stringBuffer.length()-1); - strJson+="]"; - //记录修改日志 - CourseUpdateLog updateLog=new CourseUpdateLog(); - updateLog.setCourseId(c.getId()); - updateLog.setLogData(strJson); - updateLogDao.save(updateLog); - } - if(c.getVisible()==null) { - c.setVisible(true); - } - courseDao.update(c); - c.setSysVersion(courseDao.getVersion(c.getId())); - full.getCourse().setSysVersion(c.getSysVersion()); - - //先清空教师信息, 教师信息如果不一样了,也要加入到日志中 - courseTeacherDao.deleteByField("courseId", c.getId()); - if(full.getTeachers()!=null && !full.getTeachers().isEmpty()) { - for(CourseTeacher ct : full.getTeachers()) { - ct.setCourseId(c.getId()); - courseTeacherDao.saveOrUpdate(ct); - } - } - //先清空受众信息,受众信息如果不一样了,也要加入到日志中 - courseCrowdDao.deleteByField("courseId", c.getId()); - if(full.getCrowds()!=null && !full.getCrowds().isEmpty()) { - for(CourseCrowd cc : full.getCrowds()) { - cc.setCourseId(c.getId()); - courseCrowdDao.saveOrUpdate(cc); - } - } - - //更新后需要删除发布 - if(StringUtils.isNotBlank(c.getFullTextId())) { - publishUtil.removeByDocId(c.getFullTextId()); - - } - - } - - @Override - public void submit(CourseFullDto full) throws Exception { + @Override + public void save(CourseFullDto full) { + Course c = full.getCourse(); + c.setComments(0); + c.setDeleted(false); + c.setEnabled(true); + c.setErasable(true);//未发布前是可以物理删除的 + c.setFavorites(0); + c.setIsTop(false); + c.setViews(0); + c.setStudys(0); + c.setPraises(0); + c.setTrampleCount(0); - Course c=full.getCourse();//当前的课程信息 - if(c.getVisible()==null) { - c.setVisible(true); - } - //提交审核,不再记录修改日志 + + if (c.getPublished() == null) { + c.setPublished(false);// + } + c.setShares(0); + if (c.getStatus() == null) { + c.setStatus(Course.STATUS_NONE); + } + if (c.getScore() == null) { + c.setScore(0f);//默认是5分 + } + courseDao.save(c); + c.setSysVersion(0); + if (full.getTeachers() != null && !full.getTeachers().isEmpty()) { + for (CourseTeacher ct : full.getTeachers()) { + ct.setCourseId(c.getId()); + courseTeacherDao.save(ct); + } + } + if (full.getCrowds() != null && !full.getCrowds().isEmpty()) { + for (CourseCrowd cc : full.getCrowds()) { + cc.setCourseId(c.getId()); + courseCrowdDao.save(cc); + } + } + } + + /** + * 追加修改日志,共用方法,在其它的修改的地方也可能调用 + * + * @param old + * @param now + */ + private void appendUpdateLog(StringBuffer josnLog, Course oldCourse, Course newCourse) { + if (!newCourse.getName().equals(oldCourse.getName())) { + josnLog.append("{\"field\":\"name\",\"title\":\"名称\",\"before\":\"" + oldCourse.getName() + "\",\"after\":\"" + newCourse.getName() + "\" },"); + } + if (newCourse.getSysType1() != null && !newCourse.getSysType1().equals(oldCourse.getSysType1())) { + josnLog.append("{\"field\":\"name\",\"title\":\"一级内容分类\",\"before\":\"" + oldCourse.getSysType1() + "\",\"after\":\"" + newCourse.getSysType1() + "\" },"); + } + if (newCourse.getSysType2() != null && !newCourse.getSysType2().equals(oldCourse.getSysType2())) { + josnLog.append("{\"field\":\"name\",\"title\":\"二级内容分类\",\"before\":\"" + oldCourse.getSysType2() + "\",\"after\":\"" + newCourse.getSysType2() + "\" },"); + } + if (newCourse.getSysType3() != null && !newCourse.getSysType3().equals(oldCourse.getSysType3())) { + josnLog.append("{\"field\":\"name\",\"title\":\"三级内容分类\",\"before\":\"" + oldCourse.getSysType3() + "\",\"after\":\"" + newCourse.getSysType3() + "\" },"); + } + if (newCourse.getForUsers() != null && !newCourse.getForUsers().equals(oldCourse.getForUsers())) { + josnLog.append("{\"field\":\"name\",\"title\":\"目标人群\",\"before\":\"" + oldCourse.getForUsers() + "\",\"after\":\"" + newCourse.getForUsers() + "\" },"); + } + if (newCourse.getCoverImg() != null && !newCourse.getCoverImg().equals(oldCourse.getCoverImg())) { + josnLog.append("{\"field\":\"name\",\"title\":\"封面图片\",\"before\":\"" + oldCourse.getCoverImg() + "\",\"after\":\"" + newCourse.getCoverImg() + "\" },"); + } + if (newCourse.getForScene() != null && !newCourse.getForScene().equals(oldCourse.getForScene())) { + josnLog.append("{\"field\":\"name\",\"title\":\"应用场景\",\"before\":\"" + oldCourse.getForScene() + "\",\"after\":\"" + newCourse.getForScene() + "\" },"); + } + if (newCourse.getValue() != null && !newCourse.getValue().equals(oldCourse.getValue())) { + josnLog.append("{\"field\":\"name\",\"title\":\"课程价值\",\"before\":\"" + oldCourse.getValue() + "\",\"after\":\"" + newCourse.getValue() + "\" },"); + } + if (!newCourse.getDevice().equals(oldCourse.getDevice())) { + josnLog.append("{\"field\":\"name\",\"title\":\"观看设置\",\"before\":\"" + oldCourse.getDevice() + "\",\"after\":\"" + newCourse.getDevice() + "\" },"); + } + if (newCourse.getKeywords() != null && !newCourse.getKeywords().equals(oldCourse.getKeywords())) { + josnLog.append("{\"field\":\"name\",\"title\":\"关键字\",\"before\":\"" + oldCourse.getKeywords() + "\",\"after\":\"" + newCourse.getKeywords() + "\" },"); + } + if (newCourse.getSource() != null && !newCourse.getSource().equals(oldCourse.getSource())) { + josnLog.append("{\"field\":\"name\",\"title\":\"来源\",\"before\":\"" + oldCourse.getScore() + "\",\"after\":\"" + newCourse.getScore() + "\" },"); + } + if (newCourse.getSummary() != null && !newCourse.getSummary().equals(oldCourse.getSummary())) { + josnLog.append("{\"field\":\"name\",\"title\":\"简介\",\"before\":\"" + oldCourse.getSummary() + "\",\"after\":\"" + newCourse.getSummary() + "\" },"); + } + } + + @Override + public void update(CourseFullDto full) throws Exception { + + Course c = full.getCourse();//当前的课程信息 + Course nowCourse = courseDao.get(c.getId());//修改之前的课程信息 + + StringBuffer stringBuffer = new StringBuffer("["); + //追加日志内容 + appendUpdateLog(stringBuffer, nowCourse, c); + + if (stringBuffer.length() > 1) { + + String strJson = stringBuffer.substring(0, stringBuffer.length() - 1); + strJson += "]"; + //记录修改日志 + CourseUpdateLog updateLog = new CourseUpdateLog(); + updateLog.setCourseId(c.getId()); + updateLog.setLogData(strJson); + updateLogDao.save(updateLog); + } + if (c.getVisible() == null) { + c.setVisible(true); + } + courseDao.update(c); + c.setSysVersion(courseDao.getVersion(c.getId())); + full.getCourse().setSysVersion(c.getSysVersion()); + + //先清空教师信息, 教师信息如果不一样了,也要加入到日志中 + courseTeacherDao.deleteByField("courseId", c.getId()); + if (full.getTeachers() != null && !full.getTeachers().isEmpty()) { + for (CourseTeacher ct : full.getTeachers()) { + ct.setCourseId(c.getId()); + courseTeacherDao.saveOrUpdate(ct); + } + } + //先清空受众信息,受众信息如果不一样了,也要加入到日志中 + courseCrowdDao.deleteByField("courseId", c.getId()); + if (full.getCrowds() != null && !full.getCrowds().isEmpty()) { + for (CourseCrowd cc : full.getCrowds()) { + cc.setCourseId(c.getId()); + courseCrowdDao.saveOrUpdate(cc); + } + } + + //更新后需要删除发布 + if (StringUtils.isNotBlank(c.getFullTextId())) { + publishUtil.removeByDocId(c.getFullTextId()); + + } + + } + + @Override + public void submit(CourseFullDto full) throws Exception { + + Course c = full.getCourse();//当前的课程信息 + if (c.getVisible() == null) { + c.setVisible(true); + } + //提交审核,不再记录修改日志 // Course nowCourse=courseDao.get(c.getId());//修改之前的课程信息 // //审核不保存日志了 // StringBuffer stringBuffer = new StringBuffer("["); @@ -940,112 +1023,112 @@ public class CourseServiceImpl implements ICourseService { // updateLogDao.save(updateLog); // } - courseDao.update(c); - c.setSysVersion(courseDao.getVersion(c.getId())); - full.getCourse().setSysVersion(c.getSysVersion()); - - //先清空教师信息, 教师信息如果不一样了,也要加入到日志中 - courseTeacherDao.deleteByField("courseId", c.getId()); - if(full.getTeachers()!=null && !full.getTeachers().isEmpty()) { - for(CourseTeacher ct : full.getTeachers()) { - ct.setCourseId(c.getId()); - courseTeacherDao.saveOrUpdate(ct); - } - } - //先清空受众信息,受众信息如果不一样了,也要加入到日志中 - courseCrowdDao.deleteByField("courseId", c.getId()); - if(full.getCrowds()!=null && !full.getCrowds().isEmpty()) { - for(CourseCrowd cc : full.getCrowds()) { - cc.setCourseId(c.getId()); - courseCrowdDao.saveOrUpdate(cc); - } - } - //保存审核信息 - CourseHRBPAudit hrbpAudit=new CourseHRBPAudit(); - hrbpAudit.setCourseId(c.getId()); - hrbpAudit.setAddTime(LocalDateTime.now()); - hrbpAudit.setAid(full.getAuditUser().getAid()); - hrbpAudit.setAuditRemark(""); - hrbpAudit.setForward(CourseHRBPAudit.FORWARD_NONE); - hrbpAudit.setStatus(CourseHRBPAudit.STATUS_NONE); - courseHRBPAuditDao.save(hrbpAudit); - } - - @Override - public void submitAndPublish(CourseFullDto full,String aid,String aname) throws Exception { + courseDao.update(c); + c.setSysVersion(courseDao.getVersion(c.getId())); + full.getCourse().setSysVersion(c.getSysVersion()); - Course c=full.getCourse();//当前的课程信息 - c.setPublished(true); - c.setPublishTime(LocalDateTime.now()); - courseDao.update(c); - - //先清空教师信息, 教师信息如果不一样了,也要加入到日志中 - courseTeacherDao.deleteByField("courseId", c.getId()); - if(full.getTeachers()!=null && !full.getTeachers().isEmpty()) { - for(CourseTeacher ct : full.getTeachers()) { - ct.setCourseId(c.getId()); - courseTeacherDao.saveOrUpdate(ct); - } - } - //先清空受众信息,受众信息如果不一样了,也要加入到日志中 - courseCrowdDao.deleteByField("courseId", c.getId()); - if(full.getCrowds()!=null && !full.getCrowds().isEmpty()) { - for(CourseCrowd cc : full.getCrowds()) { - cc.setCourseId(c.getId()); - courseCrowdDao.saveOrUpdate(cc); - } - } - //同步发布 - publishUtil.fullTextPublish(c); - //发布事件处理 - if(eventSender!=null) { - List teachers = courseTeacherDao.findList(FieldFilters.eq("courseId", c.getId())); - if(teachers.size()>0) { - String authorIds=""; - for(CourseTeacher cteacher:teachers) { - if(authorIds.equals("")) { - authorIds+=cteacher.getTeacherId(); - }else { - authorIds+="|"+cteacher.getTeacherId(); - } - } - eventSender.send("发布课程","PublishCourse", "发布课程【"+c.getName()+"】", c.getId(), "1", c.getName(), aid,aname,"authors:"+authorIds); - } - - }else { - log.error("未配置事件消息发送的实现"); - } - - } - - @Override - public void submit(CourseHRBPAudit hrbpAudit) throws Exception { - - courseDao.updateMultiFieldById(hrbpAudit.getCourseId(),UpdateBuilder.create("status",Course.STATUS_SUBMIT), - UpdateBuilder.create("published",false),UpdateBuilder.create("publishTime",LocalDateTime.now())); - - //保存审核信息 - hrbpAudit.setAddTime(LocalDateTime.now()); - hrbpAudit.setAuditRemark(""); - hrbpAudit.setForward(CourseHRBPAudit.FORWARD_NONE); - hrbpAudit.setStatus(CourseHRBPAudit.STATUS_NONE); - courseHRBPAuditDao.save(hrbpAudit); + //先清空教师信息, 教师信息如果不一样了,也要加入到日志中 + courseTeacherDao.deleteByField("courseId", c.getId()); + if (full.getTeachers() != null && !full.getTeachers().isEmpty()) { + for (CourseTeacher ct : full.getTeachers()) { + ct.setCourseId(c.getId()); + courseTeacherDao.saveOrUpdate(ct); + } + } + //先清空受众信息,受众信息如果不一样了,也要加入到日志中 + courseCrowdDao.deleteByField("courseId", c.getId()); + if (full.getCrowds() != null && !full.getCrowds().isEmpty()) { + for (CourseCrowd cc : full.getCrowds()) { + cc.setCourseId(c.getId()); + courseCrowdDao.saveOrUpdate(cc); + } + } + //保存审核信息 + CourseHRBPAudit hrbpAudit = new CourseHRBPAudit(); + hrbpAudit.setCourseId(c.getId()); + hrbpAudit.setAddTime(LocalDateTime.now()); + hrbpAudit.setAid(full.getAuditUser().getAid()); + hrbpAudit.setAuditRemark(""); + hrbpAudit.setForward(CourseHRBPAudit.FORWARD_NONE); + hrbpAudit.setStatus(CourseHRBPAudit.STATUS_NONE); + courseHRBPAuditDao.save(hrbpAudit); + } - } + @Override + public void submitAndPublish(CourseFullDto full, String aid, String aname) throws Exception { - /** - * 撤销发布 - */ - @Override - public void update(String id) { - courseDao.updateMultiFieldById(id,UpdateBuilder.create("status",Course.STATUS_SUBMIT), - UpdateBuilder.create("published",false),UpdateBuilder.create("publishTime",LocalDateTime.now())); - } - - /*** - * 发布全文索引 - * @param c - */ + Course c = full.getCourse();//当前的课程信息 + c.setPublished(true); + c.setPublishTime(LocalDateTime.now()); + courseDao.update(c); + + //先清空教师信息, 教师信息如果不一样了,也要加入到日志中 + courseTeacherDao.deleteByField("courseId", c.getId()); + if (full.getTeachers() != null && !full.getTeachers().isEmpty()) { + for (CourseTeacher ct : full.getTeachers()) { + ct.setCourseId(c.getId()); + courseTeacherDao.saveOrUpdate(ct); + } + } + //先清空受众信息,受众信息如果不一样了,也要加入到日志中 + courseCrowdDao.deleteByField("courseId", c.getId()); + if (full.getCrowds() != null && !full.getCrowds().isEmpty()) { + for (CourseCrowd cc : full.getCrowds()) { + cc.setCourseId(c.getId()); + courseCrowdDao.saveOrUpdate(cc); + } + } + //同步发布 + publishUtil.fullTextPublish(c); + //发布事件处理 + if (eventSender != null) { + List teachers = courseTeacherDao.findList(FieldFilters.eq("courseId", c.getId())); + if (teachers.size() > 0) { + String authorIds = ""; + for (CourseTeacher cteacher : teachers) { + if (authorIds.equals("")) { + authorIds += cteacher.getTeacherId(); + } else { + authorIds += "|" + cteacher.getTeacherId(); + } + } + eventSender.send("发布课程", "PublishCourse", "发布课程【" + c.getName() + "】", c.getId(), "1", c.getName(), aid, aname, "authors:" + authorIds); + } + + } else { + log.error("未配置事件消息发送的实现"); + } + + } + + @Override + public void submit(CourseHRBPAudit hrbpAudit) throws Exception { + + courseDao.updateMultiFieldById(hrbpAudit.getCourseId(), UpdateBuilder.create("status", Course.STATUS_SUBMIT), + UpdateBuilder.create("published", false), UpdateBuilder.create("publishTime", LocalDateTime.now())); + + //保存审核信息 + hrbpAudit.setAddTime(LocalDateTime.now()); + hrbpAudit.setAuditRemark(""); + hrbpAudit.setForward(CourseHRBPAudit.FORWARD_NONE); + hrbpAudit.setStatus(CourseHRBPAudit.STATUS_NONE); + courseHRBPAuditDao.save(hrbpAudit); + + } + + /** + * 撤销发布 + */ + @Override + public void update(String id) { + courseDao.updateMultiFieldById(id, UpdateBuilder.create("status", Course.STATUS_SUBMIT), + UpdateBuilder.create("published", false), UpdateBuilder.create("publishTime", LocalDateTime.now())); + } + + /*** + * 发布全文索引 + * @param c + */ // private void fullTextPublish(Course c) { // if(fullTextSearch==null) { // log.error("未实现全文检索的接口:"+ICourseFullTextSearch.class); @@ -1104,12 +1187,11 @@ public class CourseServiceImpl implements ICourseService { // log.error("课程发布全文检索失败",e); // } // } + @Override + public void audit(String auditId, String courseId, Boolean pass, String aid, String name, String remark, boolean publish, Integer from) { - @Override - public void audit(String auditId, String courseId, Boolean pass, String aid, String name, String remark,boolean publish,Integer from) { - - //课程审核,记录审核记录 - LocalDateTime now=LocalDateTime.now(); + //课程审核,记录审核记录 + LocalDateTime now = LocalDateTime.now(); // SysLogAudit la=new SysLogAudit(); // la.setAuditRemark(remark); // la.setObjInfo(name); @@ -1118,773 +1200,769 @@ public class CourseServiceImpl implements ICourseService { // la.setObjId(id); // la.setObjType(1); // logAuditDao.save(la); - - int status=Course.STATUS_AUDIT_FINISH; - if(!pass) { - status=Course.STATUS_AUDIT_NOPASS; - } - - //更新状态,并把转审的信息置为空 - courseDao.updateMultiFieldById(courseId,UpdateBuilder.create("status", status),UpdateBuilder.create("auditAid", null),UpdateBuilder.create("auditInfo", null)); - //更新审核记录状态 - if(from!=null) { - courseHRBPAuditDao.updateMultiFieldById(auditId, - UpdateBuilder.create("status", pass? CourseHRBPAudit.STATUS_PASS:CourseHRBPAudit.STATUS_NOPASS), - UpdateBuilder.create("auditRemark", remark), - UpdateBuilder.create("auditUser", name), - UpdateBuilder.create("auditAid", aid), - UpdateBuilder.create("auditTime", now), - UpdateBuilder.create("forward", from) - ); - }else { - courseHRBPAuditDao.updateMultiFieldById(auditId, - UpdateBuilder.create("status", pass? CourseHRBPAudit.STATUS_PASS:CourseHRBPAudit.STATUS_NOPASS), - UpdateBuilder.create("auditRemark", remark), - UpdateBuilder.create("auditUser", name), - UpdateBuilder.create("auditAid", aid), - UpdateBuilder.create("auditTime", now) - ); - } - - - //审核通过并发布,直接发布课程 - if(pass && publish) { - //设置课程状态已审核完成,这里是管理员的审核 - courseDao.updateMultiFieldById(courseId, - UpdateBuilder.create("published", pass), - UpdateBuilder.create("erasable", false), //设置以后不能物理删除了 - UpdateBuilder.create("publishTime", LocalDateTime.now())); - //发布到全文检索中 - Course c=courseDao.get(courseId); + + int status = Course.STATUS_AUDIT_FINISH; + if (!pass) { + status = Course.STATUS_AUDIT_NOPASS; + } + + //更新状态,并把转审的信息置为空 + courseDao.updateMultiFieldById(courseId, UpdateBuilder.create("status", status), UpdateBuilder.create("auditAid", null), UpdateBuilder.create("auditInfo", null)); + //更新审核记录状态 + if (from != null) { + courseHRBPAuditDao.updateMultiFieldById(auditId, + UpdateBuilder.create("status", pass ? CourseHRBPAudit.STATUS_PASS : CourseHRBPAudit.STATUS_NOPASS), + UpdateBuilder.create("auditRemark", remark), + UpdateBuilder.create("auditUser", name), + UpdateBuilder.create("auditAid", aid), + UpdateBuilder.create("auditTime", now), + UpdateBuilder.create("forward", from) + ); + } else { + courseHRBPAuditDao.updateMultiFieldById(auditId, + UpdateBuilder.create("status", pass ? CourseHRBPAudit.STATUS_PASS : CourseHRBPAudit.STATUS_NOPASS), + UpdateBuilder.create("auditRemark", remark), + UpdateBuilder.create("auditUser", name), + UpdateBuilder.create("auditAid", aid), + UpdateBuilder.create("auditTime", now) + ); + } + + + //审核通过并发布,直接发布课程 + if (pass && publish) { + //设置课程状态已审核完成,这里是管理员的审核 + courseDao.updateMultiFieldById(courseId, + UpdateBuilder.create("published", pass), + UpdateBuilder.create("erasable", false), //设置以后不能物理删除了 + UpdateBuilder.create("publishTime", LocalDateTime.now())); + //发布到全文检索中 + Course c = courseDao.get(courseId); // if(fullTextSearch!=null) { // this.fullTextPublish(c); // } - publishUtil.fullTextPublish(c); - //同时添加发布事件,这里的创建人需要修改为教师 - if(eventSender!=null) { - List teachers = courseTeacherDao.findList(FieldFilters.eq("courseId", courseId)); - if(teachers.size()>0) { - String authorIds=""; - for(CourseTeacher cteacher:teachers) { - if(authorIds.equals("")) { - authorIds+=cteacher.getTeacherId(); - }else { - authorIds+="|"+cteacher.getTeacherId(); - } - } - eventSender.send("发布课程","PublishCourse", "发布课程【"+c.getName()+"】", c.getId(), "1", c.getName(), aid,name,"authors:"+authorIds); - } - - }else { - log.error("未配置事件消息发送的实现"); - } - } - - } + publishUtil.fullTextPublish(c); + //同时添加发布事件,这里的创建人需要修改为教师 + if (eventSender != null) { + List teachers = courseTeacherDao.findList(FieldFilters.eq("courseId", courseId)); + if (teachers.size() > 0) { + String authorIds = ""; + for (CourseTeacher cteacher : teachers) { + if (authorIds.equals("")) { + authorIds += cteacher.getTeacherId(); + } else { + authorIds += "|" + cteacher.getTeacherId(); + } + } + eventSender.send("发布课程", "PublishCourse", "发布课程【" + c.getName() + "】", c.getId(), "1", c.getName(), aid, name, "authors:" + authorIds); + } - @Override - public void publish(String id, boolean pass, String aid, String name, String remark) { - //只是修改发布情况 - if(pass) { - courseDao.updateMultiFieldById(id, - UpdateBuilder.create("published", pass), - UpdateBuilder.create("erasable", false), //设置以后不能物理删除了 - UpdateBuilder.create("publishTime", LocalDateTime.now())); - //发布到全文检索中 - if(fullTextSearch!=null) { - Course c=courseDao.get(id); - //this.fullTextPublish(c); - publishUtil.fullTextPublish(c); - } - }else { - courseDao.updateMultiFieldById(id,UpdateBuilder.create("published", pass)); - if(this.fullTextSearch!=null) { - Object fullId=courseDao.findField("fullTextId", FieldFilters.eq("id", id)); - if(fullId!=null) { - publishUtil.removeByDocId((String)fullId); - } - } - } - - - } - - @Override - public void setTop(String id, boolean top, String aid, String name, String remark) { - if(top) { - courseDao.updateMultiFieldById(id, - UpdateBuilder.create("isTop", top), - UpdateBuilder.create("topTime", LocalDateTime.now())); - }else { - courseDao.updateMultiFieldById(id, - UpdateBuilder.create("isTop", top), - UpdateBuilder.create("topTime", null)); - } - - if(this.fullTextSearch!=null) { - Object fullId=courseDao.findField("fullTextId", FieldFilters.eq("id", id)); - if(fullId!=null) { - publishUtil.updateFieldByDocId((String)fullId, "isTop", top?1:0); - } - } - - } - - @Override - public void setEnabled(String id, boolean enabled, String aid, String name, String remark) { - courseDao.updateMultiFieldById(id, - UpdateBuilder.create("enabled", enabled), - UpdateBuilder.create("enableRemark","【"+name+","+LocalDateTime.now().toString()+"】"+remark)); - - if(this.fullTextSearch!=null) { - if(enabled) { //启用,重新必 - Course c=courseDao.get(id); - //this.fullTextPublish(c); - publishUtil.fullTextPublish(c); - }else { - Object fullId=courseDao.findField("fullTextId", FieldFilters.eq("id", id)); - if(fullId!=null) { - publishUtil.removeByDocId((String)fullId); - } - } - - } - } - /** - * 赋值赞踩数 - * */ - @Override - public void updateTrampleCount(String id,Integer trampleCount) { - courseDao.updateMultiFieldById(id,UpdateBuilder.create("trampleCount", trampleCount)); - } - - - /** - * 赋值点赞数 - * */ - - @Override - public List findTeachersByCourseId(String courseId) { - - return courseTeacherDao.findList(OrderCondition.desc("teacherId"),FieldFilters.eq("courseId", courseId)); - } - - @Override - public List statRanking(int num,Integer type, Integer time) { - - try { - return courseDao.statRanking(num, type, time); - } catch (Exception e) { - //e.printStackTrace(); - log.error("统计课程排名错误",e); - return null; - } - } - - @Override - public List findTeachersByCourseIds(List ids) { - - return courseTeacherDao.findList(OrderCondition.desc("teacherId"),FieldFilters.in("courseId",ids)); - } - - @Override - public List findUpdataLogs(int num, String courseId, String name) { - - List filters = new ArrayList(); - - //自动添加过滤已删除 - filters.add(FieldFilters.eq("courseId", courseId)); - if(StringUtils.isNotBlank(name)) { - filters.add(FieldFilters.eq("sysCreateBy", name)); - } - - QueryBuilder query=QueryBuilder.from(CourseUpdateLog.class).addFilters(filters); - query.setPageSize(num); - query.addOrder(OrderCondition.desc("id")); - //query.addFields("new CourseUpdateLog(id,sysCreateAid,sysCreateBy,sysCreateTime)"); - - List rs=updateLogDao.findList(query.builder()); - return rs; - } - - @Override - public CourseUpdateLog getUpdateLog(String id) { - return updateLogDao.get(id); - } - - @Override - public Map findImages(List ids) { - return courseDao.findMap("id","coverImg", FieldFilters.in("id", ids)); - } - - - - @Override - public List scoreList(int num,int index) { - QueryBuilder builder = QueryBuilder.from(Course.class); - builder.setPageSize(num); - builder.addFilter(FieldFilters.eq("deleted",false)); - builder.addFilter(FieldFilters.eq("status",Course.STATUS_AUDIT_FINISH)); - builder.addFilter(FieldFilters.eq("published", true)); - builder.addFilter(FieldFilters.eq("enabled",true)); - builder.addFilter(FieldFilters.isNull("kid")); - builder.addFilter(FieldFilters.gt("studys",100)); - LocalDateTime parse = LocalDate.parse("2022-01-01", DateTimeFormatter.ofPattern("yyyy-MM-dd")).atStartOfDay(); - builder.addFilter(FieldFilters.gt("publishTime",parse)); - if(index==1){ - builder.addOrder(OrderCondition.desc("studys")); - }else { - builder.addOrder(OrderCondition.desc("score")); - } - - PageList page = courseDao.findPage(builder.builder()); - List list = page.getList(); - List rankingDtos = new ArrayList<>(); - for (Course c:list) { - RankingDto rankingDto = new RankingDto(); - rankingDto.setId(c.getId()); - rankingDto.setName(c.getName()); - rankingDto.setType(c.getType()); - rankingDto.setScore(c.getScore()); - rankingDto.setStudys(c.getStudys()); - rankingDto.setImages(c.getCoverImg()); - rankingDto.setSummary(c.getSummary()); - rankingDto.setFavorites(c.getFavorites()); - rankingDto.setPraises(c.getPraises()); - rankingDto.setShares(c.getShares()); - rankingDto.setComments(c.getComments()); - rankingDto.setViews(c.getViews()); - rankingDto.setPublishTime(c.getPublishTime()); - rankingDtos.add(rankingDto); - } - return rankingDtos; - } - - @Override - public Boolean isRedoName() { - List list = courseDao.getAll(); - List strings = new ArrayList<>(); - for (Course c:list) { - strings.add(c.getName()); - } - long count=strings.stream().distinct().count(); - if(count name = courseDao.findList(FieldFilters.eq("name", courseName), - FieldFilters.ne("id",courseId)); - if(name.size()>0){ - return false; - }else{ - return true; - } - - } - - @Override - public List ids(List ids) { - List courses = courseDao.findList(FieldFilters.in("id", ids)); - return courses; - } - - @Override - public List userHobbyList(String aid,String orderField,Boolean orderAsc) { - List courses = new ArrayList<>(); - if(StringUtil.isNotBlank(aid)){ - String sql="select ref_id from boe_user_hobby where aid='"+aid+"'"; - List list = courseDao.sqlFindList(sql); - //课程id集合 - List strings = new ArrayList<>(); - for (Object o:list) { - strings.add((String) o); - } - if(list.isEmpty()){ - return courses; - } - QueryBuilder builder = QueryBuilder.from(Course.class); - builder.addFilter(FieldFilters.eq("deleted",false)); - builder.addFilter(FieldFilters.eq("enabled",true)); - builder.addFilter(FieldFilters.gt("score",4.0f)); - builder.setPageSize(3); - List iFieldFilters = new ArrayList<>(); - iFieldFilters.add(FieldFilters.in("sysType1",strings)); - iFieldFilters.add(FieldFilters.in("sysType2",strings)); - iFieldFilters.add(FieldFilters.in("sysType3",strings)); - builder.addFilter(FieldFilters.or(iFieldFilters)); - OrderCondition oc=null; - if(StringUtils.isNotBlank(orderField)) { - if(orderAsc==null || orderAsc) { - oc=OrderCondition.asc(orderField); - }else { - oc=OrderCondition.desc(orderField); - } - }else { - //oc=OrderCondition.desc("id"); - //默认按发布时间排序 - oc=OrderCondition.desc("publishTime"); - } - builder.addOrder(oc); - courses=courseDao.findList(builder.builder()); - } - return courses; - - - } - - @Override - public List mobiledelList(Integer num, CourseQueryDto courseQueryDto) { - QueryBuilder builder = QueryBuilder.from(Course.class); - builder.setPageSize(num); - builder.addFilter(FieldFilters.eq("deleted",false)); - builder.addFilter(FieldFilters.eq("enabled",true)); - builder.addFilter(FieldFilters.eq("status",Course.STATUS_AUDIT_FINISH)); - builder.addFilter(FieldFilters.eq("published", true)); - if(courseQueryDto!=null){ - if(StringUtil.isNotBlank(courseQueryDto.getSysType1())){ - builder.addFilter(FieldFilters.eq("sysType1",courseQueryDto.getSysType1())); - } - if(StringUtil.isNotBlank(courseQueryDto.getSysType2())){ - builder.addFilter(FieldFilters.eq("sysType2",courseQueryDto.getSysType2())); - } - if(StringUtil.isNotBlank(courseQueryDto.getSysType3())){ - builder.addFilter(FieldFilters.eq("sysType3",courseQueryDto.getSysType3())); - } - } - //排序规则按学习人数 - builder.addOrder(OrderCondition.desc("studys")); - builder.addFields("new Course(id,type,name,coverImg,score,studys,comments,shares,praises,favorites,forUsers,value,publishTime,isTop,sysType1,sysType2,sysType3)"); - List list = courseDao.findList(builder.builder()); - if(!list.isEmpty()&& list.size() list1 = courseDao.findList(num - list.size(),OrderCondition.desc("studys"), FieldFilters.eq("deleted", false), FieldFilters.eq("enabled", true), FieldFilters.eq("status", Course.STATUS_AUDIT_FINISH), - FieldFilters.eq("published", true)); - list.addAll(list1); - - } - return list; - } - - - - @Override - public int countWaitAudit(String aid) { - //查询待审核的课程 - String hql="Select count(c.id) from "+Course.class.getSimpleName()+" c,"+CourseHRBPAudit.class.getSimpleName()+" a where c.id=a.courseId " ; - hql+="and a.status="+CourseHRBPAudit.STATUS_NONE+" and a.aid=?1"; - int n=courseDao.count(hql, aid); - return n; - } - - @Override - public PageList findAuditPage(int pageIndex, int pageSize, CourseQueryDto dto,String aid,Integer auditStatus){ - - QueryBuilder query=QueryBuilder.from(Course.class.getSimpleName()+" c,"+CourseHRBPAudit.class.getSimpleName()+" a"); - query.setPageIndex(pageIndex); - query.setPageSize(pageSize); - query.addField("c"); - query.addField("a.id"); - query.addField("a.forward"); - query.addFilter(FieldFilters.eqField("c.id", "a.courseId")); - //超级用户 - Map managers=accountService.findIdMapByLoginNames("00004409","110858","10726944"); - if(!managers.containsKey(aid)){ - query.addFilter(FieldFilters.eq("a.aid",aid)); - } - //审核状态 - if(auditStatus!=null) { - if(auditStatus==9) { - query.addFilter(FieldFilters.gt("a.status",CourseHRBPAudit.STATUS_NONE)); - }else { - query.addFilter(FieldFilters.eq("a.status",auditStatus)); - } - - }else { - query.addFilter(FieldFilters.eq("a.status",CourseHRBPAudit.STATUS_NONE)); - } - //query.addFilter(FieldFilters.eq("a.forward",CourseHRBPAudit.FORWARD_NONE)); - - if(StringUtils.isNotBlank(dto.getKeyword())){ - query.addFilter(FieldFilters.like("c.name", dto.getKeyword())); - }else { - if(StringUtils.isNotBlank(dto.getName())){ - query.addFilter(FieldFilters.like("c.name",dto.getName())); - } + } else { + log.error("未配置事件消息发送的实现"); + } } - if(StringUtils.isNotBlank(dto.getSysType3())){ - query.addFilter(FieldFilters.eq("c.sysType3",dto.getSysType3())); - } - if(StringUtils.isNotBlank(dto.getSysType2())){ - query.addFilter(FieldFilters.eq("c.sysType2",dto.getSysType2())); - } - if(StringUtils.isNotBlank(dto.getSysType1())){ - query.addFilter(FieldFilters.eq("c.sysType1",dto.getSysType1())); - } - if(StringUtils.isNotBlank(dto.getCreateUser())){ - query.addFilter(FieldFilters.like("c.sysCreateBy", LikeMatchMode.ANYWHERE,dto.getCreateUser())); - } - - query.addFilter(FieldFilters.eq("c.deleted",false)); - query.addFilter(FieldFilters.eq("c.enabled",true)); - - OrderCondition oc=null; - if(StringUtils.isNotBlank(dto.getOrderField())) { - if(dto.getOrderAsc()||dto.getOrderAsc()==null) { - oc=OrderCondition.asc(dto.getOrderField()); - }else { - oc=OrderCondition.desc(dto.getOrderField()); - } - }else { - oc=OrderCondition.desc("a.addTime"); - } - query.addOrder(oc); - PageList rs=new PageList(); - rs.setList(new ArrayList()); - try { - PageList list=courseDao.findPageFields(query.builder()); - rs.setCount(list.getCount()); - rs.setPageSize(pageSize); - for(Object[] objs : list.getList()) { - Course course=(Course)objs[0]; - course.setAuditId(objs[1].toString()); - course.setAuditForward((Integer)objs[2]); - rs.getList().add(course); - } - - - }catch(Exception e) { - log.error("查询课程审核错误",e); - } - return rs; - } - - @Override - public PageList teacherAuditPage(int pageIndex, int pageSize, CourseQueryDto dto,String aid,Integer auditStatus) { - QueryBuilder query=QueryBuilder.from(Course.class.getSimpleName()+" c,"+CourseHRBPAudit.class.getSimpleName()+" a"); - query.setPageIndex(pageIndex); - query.setPageSize(pageSize); - query.addField("c"); - query.addField("a.id"); - query.addField("a.toInfo"); - query.addFilter(FieldFilters.eqField("c.id", "a.courseId")); - - //审核权限处理 - query.addFilter(FieldFilters.eq("a.toAid",aid)); - - //审核状态 - if(auditStatus!=null) { - if(auditStatus==9) { - query.addFilter(FieldFilters.gt("a.status",CourseHRBPAudit.STATUS_NONE)); - }else { - query.addFilter(FieldFilters.eq("a.status",auditStatus)); - } - }else { - query.addFilter(FieldFilters.eq("a.status",CourseHRBPAudit.STATUS_NONE)); - } - - query.addFilter(FieldFilters.eq("a.forward", CourseHRBPAudit.FORWARD_TEACHER)); - - if(StringUtils.isNotBlank(dto.getKeyword())){ - query.addFilter(FieldFilters.like("c.name", dto.getKeyword())); - }else { - if(StringUtils.isNotBlank(dto.getName())){ - query.addFilter(FieldFilters.like("c.name",dto.getName())); - } + } + + @Override + public void publish(String id, boolean pass, String aid, String name, String remark) { + //只是修改发布情况 + if (pass) { + courseDao.updateMultiFieldById(id, + UpdateBuilder.create("published", pass), + UpdateBuilder.create("erasable", false), //设置以后不能物理删除了 + UpdateBuilder.create("publishTime", LocalDateTime.now())); + //发布到全文检索中 + if (fullTextSearch != null) { + Course c = courseDao.get(id); + //this.fullTextPublish(c); + publishUtil.fullTextPublish(c); + } + } else { + courseDao.updateMultiFieldById(id, UpdateBuilder.create("published", pass)); + if (this.fullTextSearch != null) { + Object fullId = courseDao.findField("fullTextId", FieldFilters.eq("id", id)); + if (fullId != null) { + publishUtil.removeByDocId((String) fullId); + } + } } - if(StringUtils.isNotBlank(dto.getSysType3())){ - query.addFilter(FieldFilters.eq("c.sysType3",dto.getSysType3())); - } - if(StringUtils.isNotBlank(dto.getSysType2())){ - query.addFilter(FieldFilters.eq("c.sysType2",dto.getSysType2())); - } - if(StringUtils.isNotBlank(dto.getSysType1())){ - query.addFilter(FieldFilters.eq("c.sysType1",dto.getSysType1())); - } - if(StringUtils.isNotBlank(dto.getCreateUser())){ - query.addFilter(FieldFilters.like("c.sysCreateBy", LikeMatchMode.ANYWHERE,dto.getCreateUser())); - } - - query.addFilter(FieldFilters.eq("c.deleted",false)); - query.addFilter(FieldFilters.eq("c.enabled",true)); - - OrderCondition oc=null; - if(StringUtils.isNotBlank(dto.getOrderField())) { - if(dto.getOrderAsc()||dto.getOrderAsc()==null) { - oc=OrderCondition.asc(dto.getOrderField()); - }else { - oc=OrderCondition.desc(dto.getOrderField()); - } - }else { - oc=OrderCondition.desc("a.addTime"); - } - query.addOrder(oc); - PageList rs=new PageList(); - rs.setList(new ArrayList()); - try { - PageList list=courseDao.findPageFields(query.builder()); - rs.setCount(list.getCount()); - rs.setPageSize(pageSize); - for(Object[] objs : list.getList()) { - Course course=(Course)objs[0]; - course.setAuditId(objs[1].toString()); - course.setAuditInfo((String)objs[2]); - rs.getList().add(course); - } - - - }catch(Exception e) { - log.error("查询课程审核错误",e); - } - - return rs; - } - - @Override - public List findAuditList(CourseQueryDto dto, String aid) { - QueryBuilder query=QueryBuilder.from(Course.class.getSimpleName()+" c,"+CourseHRBPAudit.class.getSimpleName()+" a"); - query.addField("c"); - query.addFilter(FieldFilters.eqField("c.id", "a.courseId")); - //超级用户 - Map managers=accountService.findIdMapByLoginNames("00004409","110858","10726944"); - if(!managers.containsKey(aid)){ - query.addFilter(FieldFilters.eq("a.aid",aid)); - } - //审核权限处理 - query.addFilter(FieldFilters.eq("a.status",CourseHRBPAudit.STATUS_NONE)); - - if(StringUtils.isNotBlank(dto.getKeyword())){ - query.addFilter(FieldFilters.like("c.name", dto.getKeyword())); - }else { - if(StringUtils.isNotBlank(dto.getName())){ - query.addFilter(FieldFilters.like("c.name",dto.getName())); - } - } - if(StringUtils.isNotBlank(dto.getSysType3())){ - query.addFilter(FieldFilters.eq("c.sysType3",dto.getSysType3())); - } - if(StringUtils.isNotBlank(dto.getSysType2())){ - query.addFilter(FieldFilters.eq("c.sysType2",dto.getSysType2())); - } - if(StringUtils.isNotBlank(dto.getSysType1())){ - query.addFilter(FieldFilters.eq("c.sysType1",dto.getSysType1())); - } - if(StringUtils.isNotBlank(dto.getCreateUser())){ - query.addFilter(FieldFilters.like("c.sysCreateBy", LikeMatchMode.ANYWHERE,dto.getCreateUser())); - } - - query.addFilter(FieldFilters.eq("c.deleted",false)); - query.addFilter(FieldFilters.eq("c.enabled",true)); - - OrderCondition oc=null; - if(StringUtils.isNotBlank(dto.getOrderField())) { - if(dto.getOrderAsc()||dto.getOrderAsc()==null) { - oc=OrderCondition.asc(dto.getOrderField()); - }else { - oc=OrderCondition.desc(dto.getOrderField()); - } - }else { - oc=OrderCondition.desc("a.addTime"); - } - query.addOrder(oc); - - List rs=courseDao.findList(query.builder()); - - return rs; - } - - /** - * 撤销课程审核 - */ - @Override - public void revokeSubmit(String id) { - //courseDao.updateFieldById(id, "status",Course.STATUS_NONE); - courseDao.updateMultiFieldById(id, UpdateBuilder.create("published",false),UpdateBuilder.create("status",Course.STATUS_NONE)); - //如果此课程有未审核的处理就应该主去掉 - courseHRBPAuditDao.deleteByFilter(FieldFilters.eq("courseId", id),FieldFilters.eq("status", CourseHRBPAudit.STATUS_NONE)); - } - - /** - * 返回当前课程名字 - * */ - private String courseName(String id){ - Course course = courseDao.get(id); - return course.getName(); - } - - @Transactional(propagation = Propagation.REQUIRED) - @Override - public String copyCourse(String id,String refId,String refType,String aid,String aname) { - //复制课程,boe_course,boe_course_content,boe_course_homework,boe_course_section,boe_course_teacher,boe_course_exam - // insert info select - List sectionList = courseSectionDao.findList("courseId", id); - if(refId==null) { - refId=""; - } - if(refType==null) { - refType=""; - } - - boolean visible=true; - if(StringUtils.isNotBlank(refId)) { - visible=false; - } - - String newId = IDGenerator.generate(); - String courseName = this.courseName(id); - LocalDateTime time = LocalDateTime.now(); - String mess=null; - if(courseName.length()<96) { - - String sql = "insert into boe_course(id,org_id,copy_id,ref_id,ref_type,visible,sys_create_aid,sys_create_by,sys_create_time,deleted,sys_update_by," + - "sys_update_time,sys_version,comments,cover_img,dead_time,device,enable_remark,enabled," + - "erasable,favorites,for_scene,for_users,is_top,keywords,name,open_object," + - "overview,pass_formula,praises,publish_time,published,res_owner1,res_owner2," + - "res_owner3,score,score_formula,shares,source,study_time,studys,summary," + - "sys_type1,sys_type2,sys_type3,tags,top_time,trample_count,type,value,views," + - "order_study,status)" + - "select '" + newId + "',org_id,'"+id+"','"+refId+"','"+refType+"',"+visible+",'"+aid+"','"+aname+"','" + time + "',0,'"+aname+"'," + - "'" + time + "',1,comments,cover_img,dead_time,device,enable_remark,enabled," + - "erasable,0,for_scene,for_users,0,keywords,'" + courseName + "(1)" + "',open_object," + - "overview,pass_formula,0,publish_time,0,res_owner1,res_owner2," + - "res_owner3,score,score_formula,0,source,study_time,0,summary," + - "sys_type1,sys_type2,sys_type3,tags,top_time,trample_count,type,value,0," + - "order_study,1 from boe_course where id=?1"; - courseDao.sqlUpdate(sql, id); - - //课程章节复制,因为微课是没有章的,所以这里要判断 - - if(sectionList.isEmpty()) { - //查出所有的内容,然后再一个一个复制(因为要复制关联的内容) - List contentIds= courseContentDao.findListField("id",FieldFilters.eq("courseId", id),FieldFilters.eq("deleted", false)); - for(Object obj :contentIds) { - String oldId=(String)obj; - String newContentId=IDGenerator.generate(); - String sqlContent = "insert into boe_course_content(id,sys_create_aid,sys_create_by,sys_create_time," + - "deleted,sys_update_by,sys_update_time,sys_version,content,content_name,content_refid," + - "content_type,course_id,csection_id,duration,sort_index)" + - "select '"+newContentId+"','"+aid+"','"+aname+"','" + time + "'," + - "deleted,'"+aname+"','" + time + "',1,content," + - "content_name,content_refid,content_type,'" + newId + "','',duration,sort_index " + - "from boe_course_content where id=?1"; - courseContentDao.sqlUpdate(sqlContent, oldId); - - //课程作业复制 - String sqlCourseHomeWork = "insert into boe_course_homework(id,sys_create_aid,sys_create_by," + - "sys_create_time,deleted,sys_update_by,sys_update_time,sys_version,content,content_id,course_id,dead_time," + - "file,name,submit_mode)" + - "SELECT UUID_SHORT(),'"+aid+"','"+aname+"','" + time + "'," + - "deleted,'"+aname+"','" + time + "',sys_version,content,'"+newContentId+"','" + newId + "',dead_time," + - "file,name,submit_mode from boe_course_homework where content_id=?1"; - courseHomeWorkDao.sqlUpdate(sqlCourseHomeWork, oldId); - - //课程考试信息复制 - String sqlExam = "insert into boe_course_exam(id,sys_create_aid,sys_create_by," + - "sys_create_time,deleted,sys_update_by,sys_update_time,sys_version,arrange,content_id," + - "course_id,info,paper_content,paper_id,paper_type,pass_line,percent_score,qnum,random_mode," + - "scoring_type,show_analysis,show_answer,test_duration," + - "test_name,times)" + - "select UUID_SHORT(),'"+aid+"','"+aname+"'," + - "'" + time + "',deleted,'"+aname+"','" + time + "'," + - "1,arrange,'"+newContentId+"'," + - "'" + newId + "',info,paper_content,paper_id,paper_type,pass_line,percent_score,qnum," + - "random_mode,scoring_type,show_analysis,show_answer,test_duration," + - "test_name,times from boe_course_exam where content_id=?1"; - courseExamDao.sqlUpdate(sqlExam, oldId); - } - }else { - List contentIdSectionIds= courseContentDao.findKeyValueList("id","csectionId", FieldFilters.eq("courseId", id),FieldFilters.eq("deleted", false)); - for(CourseSection csection : sectionList) { - //生成新的章的id - String newSectionId = IDGenerator.generate(); - String sqlSection = "" + - "insert into boe_course_section(id,course_id,description,name,order_index,parent_id)" + - "SELECT '"+newSectionId+"','" + newId + "',description,name,order_index,parent_id " + - "from boe_course_section where id=?1"; - courseSectionDao.sqlUpdate(sqlSection, csection.getId()); - - //课程内容复制 - for(KeyValue kv : contentIdSectionIds) { - if(!kv.getValue().equals(csection.getId())) { - continue; - } - String newContentId=IDGenerator.generate(); - String sqlContent = "insert into boe_course_content(id,sys_create_aid,sys_create_by,sys_create_time," + - "deleted,sys_update_by,sys_update_time,sys_version,content,content_name,content_refid," + - "content_type,course_id,csection_id,duration,sort_index)" + - "select '"+newContentId+"','"+aid+"','"+aname+"','" + time + "'," + - "deleted,'"+aname+"','" + time + "',sys_version,content," + - "content_name,content_refid,content_type,'" + newId + "','"+newSectionId+"',duration,sort_index " + - "from boe_course_content where id=?1"; - courseContentDao.sqlUpdate(sqlContent,kv.getKey()); - - //课程作业复制 - String sqlCourseHomeWork = "insert into boe_course_homework(id,sys_create_aid,sys_create_by," + - "sys_create_time,deleted,sys_update_by,sys_update_time,sys_version,content,content_id,course_id,dead_time," + - "file,name,submit_mode)" + - "SELECT UUID_SHORT(),'"+aid+"','"+aname+"','" + time + "'," + - "deleted,'"+aname+"','" + time + "',sys_version,content,'"+newContentId+"','" + newId + "',dead_time," + - "file,name,submit_mode from boe_course_homework where content_id=?1 and course_id=?2"; - courseHomeWorkDao.sqlUpdate(sqlCourseHomeWork,kv.getKey(),id); - - //课程考试信息复制 - String sqlExam = "insert into boe_course_exam(id,sys_create_aid,sys_create_by," + - "sys_create_time,deleted,sys_update_by,sys_update_time,sys_version,arrange,content_id," + - "course_id,info,paper_content,paper_id,paper_type,pass_line,percent_score,qnum,random_mode," + - "scoring_type,show_analysis,show_answer,test_duration," + - "test_name,times)" + - "select UUID_SHORT(),'"+aid+"','"+aname+"'," + - "'" + time + "',deleted,'"+aname+"','" + time + "'," + - "1,arrange,'"+newContentId+"'," + - "'" + newId + "',info,paper_content,paper_id,paper_type,pass_line,percent_score,qnum," + - "random_mode,scoring_type,show_analysis,show_answer,test_duration," + - "test_name,times from boe_course_exam where content_id=?1 and course_id=?2"; - courseExamDao.sqlUpdate(sqlExam,kv.getKey(),id); - } - - } - } - - //课程任课教师复制 - String sqlTeacher = "insert into boe_course_teacher(id,sys_create_aid,sys_create_by,sys_create_time," + - "course_id,teacher_id,teacher_name)" + - "SELECT UUID_SHORT(),'"+aid+"','"+aname+"'," + - "'" + time + "','" + newId + "',teacher_id," + - "teacher_name from boe_course_teacher where course_id=?1"; - courseTeacherDao.sqlUpdate(sqlTeacher, id); - - } - else{ - mess="长度超出范围"; - } - return mess; - - } - - @Override - public List findCrowdByCourseId(String courseId) { - - return courseCrowdDao.findList("courseId", courseId); - } - - @Override - public void updateFieldById(String id, String field, Object value) { - courseDao.updateFieldById(id, field, value); - } - - @Override - public List findStudysScoreByIds(List ids) { - - return courseDao.findListByHql("Select new Course(id,studys,score) from Course where id in(?1)",ids); - } + } + + @Override + public void setTop(String id, boolean top, String aid, String name, String remark) { + if (top) { + courseDao.updateMultiFieldById(id, + UpdateBuilder.create("isTop", top), + UpdateBuilder.create("topTime", LocalDateTime.now())); + } else { + courseDao.updateMultiFieldById(id, + UpdateBuilder.create("isTop", top), + UpdateBuilder.create("topTime", null)); + } + + if (this.fullTextSearch != null) { + Object fullId = courseDao.findField("fullTextId", FieldFilters.eq("id", id)); + if (fullId != null) { + publishUtil.updateFieldByDocId((String) fullId, "isTop", top ? 1 : 0); + } + } + + } + + @Override + public void setEnabled(String id, boolean enabled, String aid, String name, String remark) { + courseDao.updateMultiFieldById(id, + UpdateBuilder.create("enabled", enabled), + UpdateBuilder.create("enableRemark", "【" + name + "," + LocalDateTime.now().toString() + "】" + remark)); + + if (this.fullTextSearch != null) { + if (enabled) { //启用,重新必 + Course c = courseDao.get(id); + //this.fullTextPublish(c); + publishUtil.fullTextPublish(c); + } else { + Object fullId = courseDao.findField("fullTextId", FieldFilters.eq("id", id)); + if (fullId != null) { + publishUtil.removeByDocId((String) fullId); + } + } + + } + } + + /** + * 赋值赞踩数 + */ + @Override + public void updateTrampleCount(String id, Integer trampleCount) { + courseDao.updateMultiFieldById(id, UpdateBuilder.create("trampleCount", trampleCount)); + } + + + /** + * 赋值点赞数 + */ + + @Override + public List findTeachersByCourseId(String courseId) { + + return courseTeacherDao.findList(OrderCondition.desc("teacherId"), FieldFilters.eq("courseId", courseId)); + } + + @Override + public List statRanking(int num, Integer type, Integer time) { + + try { + return courseDao.statRanking(num, type, time); + } catch (Exception e) { + //e.printStackTrace(); + log.error("统计课程排名错误", e); + return null; + } + } + + @Override + public List findTeachersByCourseIds(List ids) { + + return courseTeacherDao.findList(OrderCondition.desc("teacherId"), FieldFilters.in("courseId", ids)); + } + + @Override + public List findUpdataLogs(int num, String courseId, String name) { + + List filters = new ArrayList(); + + //自动添加过滤已删除 + filters.add(FieldFilters.eq("courseId", courseId)); + if (StringUtils.isNotBlank(name)) { + filters.add(FieldFilters.eq("sysCreateBy", name)); + } + + QueryBuilder query = QueryBuilder.from(CourseUpdateLog.class).addFilters(filters); + query.setPageSize(num); + query.addOrder(OrderCondition.desc("id")); + //query.addFields("new CourseUpdateLog(id,sysCreateAid,sysCreateBy,sysCreateTime)"); + + List rs = updateLogDao.findList(query.builder()); + return rs; + } + + @Override + public CourseUpdateLog getUpdateLog(String id) { + return updateLogDao.get(id); + } + + @Override + public Map findImages(List ids) { + return courseDao.findMap("id", "coverImg", FieldFilters.in("id", ids)); + } + + + @Override + public List scoreList(int num, int index) { + QueryBuilder builder = QueryBuilder.from(Course.class); + builder.setPageSize(num); + builder.addFilter(FieldFilters.eq("deleted", false)); + builder.addFilter(FieldFilters.eq("status", Course.STATUS_AUDIT_FINISH)); + builder.addFilter(FieldFilters.eq("published", true)); + builder.addFilter(FieldFilters.eq("enabled", true)); + builder.addFilter(FieldFilters.isNull("kid")); + builder.addFilter(FieldFilters.gt("studys", 100)); + LocalDateTime parse = LocalDate.parse("2022-01-01", DateTimeFormatter.ofPattern("yyyy-MM-dd")).atStartOfDay(); + builder.addFilter(FieldFilters.gt("publishTime", parse)); + if (index == 1) { + builder.addOrder(OrderCondition.desc("studys")); + } else { + builder.addOrder(OrderCondition.desc("score")); + } + + PageList page = courseDao.findPage(builder.builder()); + List list = page.getList(); + List rankingDtos = new ArrayList<>(); + for (Course c : list) { + RankingDto rankingDto = new RankingDto(); + rankingDto.setId(c.getId()); + rankingDto.setName(c.getName()); + rankingDto.setType(c.getType()); + rankingDto.setScore(c.getScore()); + rankingDto.setStudys(c.getStudys()); + rankingDto.setImages(c.getCoverImg()); + rankingDto.setSummary(c.getSummary()); + rankingDto.setFavorites(c.getFavorites()); + rankingDto.setPraises(c.getPraises()); + rankingDto.setShares(c.getShares()); + rankingDto.setComments(c.getComments()); + rankingDto.setViews(c.getViews()); + rankingDto.setPublishTime(c.getPublishTime()); + rankingDtos.add(rankingDto); + } + return rankingDtos; + } + + @Override + public Boolean isRedoName() { + List list = courseDao.getAll(); + List strings = new ArrayList<>(); + for (Course c : list) { + strings.add(c.getName()); + } + long count = strings.stream().distinct().count(); + if (count < strings.size()) { + return true; + } else { + return false; + } + + } + + @Override + public Boolean isCourseName(String courseName, String courseId) { + + List name = courseDao.findList(FieldFilters.eq("name", courseName), + FieldFilters.ne("id", courseId)); + if (name.size() > 0) { + return false; + } else { + return true; + } + + } + + @Override + public List ids(List ids) { + List courses = courseDao.findList(FieldFilters.in("id", ids)); + return courses; + } + + @Override + public List userHobbyList(String aid, String orderField, Boolean orderAsc) { + List courses = new ArrayList<>(); + if (StringUtil.isNotBlank(aid)) { + String sql = "select ref_id from boe_user_hobby where aid='" + aid + "'"; + List list = courseDao.sqlFindList(sql); + //课程id集合 + List strings = new ArrayList<>(); + for (Object o : list) { + strings.add((String) o); + } + if (list.isEmpty()) { + return courses; + } + QueryBuilder builder = QueryBuilder.from(Course.class); + builder.addFilter(FieldFilters.eq("deleted", false)); + builder.addFilter(FieldFilters.eq("enabled", true)); + builder.addFilter(FieldFilters.gt("score", 4.0f)); + builder.setPageSize(3); + List iFieldFilters = new ArrayList<>(); + iFieldFilters.add(FieldFilters.in("sysType1", strings)); + iFieldFilters.add(FieldFilters.in("sysType2", strings)); + iFieldFilters.add(FieldFilters.in("sysType3", strings)); + builder.addFilter(FieldFilters.or(iFieldFilters)); + OrderCondition oc = null; + if (StringUtils.isNotBlank(orderField)) { + if (orderAsc == null || orderAsc) { + oc = OrderCondition.asc(orderField); + } else { + oc = OrderCondition.desc(orderField); + } + } else { + //oc=OrderCondition.desc("id"); + //默认按发布时间排序 + oc = OrderCondition.desc("publishTime"); + } + builder.addOrder(oc); + courses = courseDao.findList(builder.builder()); + } + return courses; + + + } + + @Override + public List mobiledelList(Integer num, CourseQueryDto courseQueryDto) { + QueryBuilder builder = QueryBuilder.from(Course.class); + builder.setPageSize(num); + builder.addFilter(FieldFilters.eq("deleted", false)); + builder.addFilter(FieldFilters.eq("enabled", true)); + builder.addFilter(FieldFilters.eq("status", Course.STATUS_AUDIT_FINISH)); + builder.addFilter(FieldFilters.eq("published", true)); + if (courseQueryDto != null) { + if (StringUtil.isNotBlank(courseQueryDto.getSysType1())) { + builder.addFilter(FieldFilters.eq("sysType1", courseQueryDto.getSysType1())); + } + if (StringUtil.isNotBlank(courseQueryDto.getSysType2())) { + builder.addFilter(FieldFilters.eq("sysType2", courseQueryDto.getSysType2())); + } + if (StringUtil.isNotBlank(courseQueryDto.getSysType3())) { + builder.addFilter(FieldFilters.eq("sysType3", courseQueryDto.getSysType3())); + } + } + //排序规则按学习人数 + builder.addOrder(OrderCondition.desc("studys")); + builder.addFields("new Course(id,type,name,coverImg,score,studys,comments,shares,praises,favorites,forUsers,value,publishTime,isTop,sysType1,sysType2,sysType3)"); + List list = courseDao.findList(builder.builder()); + if (!list.isEmpty() && list.size() < num) { + List list1 = courseDao.findList(num - list.size(), OrderCondition.desc("studys"), FieldFilters.eq("deleted", false), FieldFilters.eq("enabled", true), FieldFilters.eq("status", Course.STATUS_AUDIT_FINISH), + FieldFilters.eq("published", true)); + list.addAll(list1); + + } + return list; + } + + + @Override + public int countWaitAudit(String aid) { + //查询待审核的课程 + String hql = "Select count(c.id) from " + Course.class.getSimpleName() + " c," + CourseHRBPAudit.class.getSimpleName() + " a where c.id=a.courseId "; + hql += "and a.status=" + CourseHRBPAudit.STATUS_NONE + " and a.aid=?1"; + int n = courseDao.count(hql, aid); + return n; + } + + @Override + public PageList findAuditPage(int pageIndex, int pageSize, CourseQueryDto dto, String aid, Integer auditStatus) { + + QueryBuilder query = QueryBuilder.from(Course.class.getSimpleName() + " c," + CourseHRBPAudit.class.getSimpleName() + " a"); + query.setPageIndex(pageIndex); + query.setPageSize(pageSize); + query.addField("c"); + query.addField("a.id"); + query.addField("a.forward"); + query.addFilter(FieldFilters.eqField("c.id", "a.courseId")); + //超级用户 + Map managers = accountService.findIdMapByLoginNames("00004409", "110858", "10726944"); + if (!managers.containsKey(aid)) { + query.addFilter(FieldFilters.eq("a.aid", aid)); + } + //审核状态 + if (auditStatus != null) { + if (auditStatus == 9) { + query.addFilter(FieldFilters.gt("a.status", CourseHRBPAudit.STATUS_NONE)); + } else { + query.addFilter(FieldFilters.eq("a.status", auditStatus)); + } + + } else { + query.addFilter(FieldFilters.eq("a.status", CourseHRBPAudit.STATUS_NONE)); + } + //query.addFilter(FieldFilters.eq("a.forward",CourseHRBPAudit.FORWARD_NONE)); + + if (StringUtils.isNotBlank(dto.getKeyword())) { + query.addFilter(FieldFilters.like("c.name", dto.getKeyword())); + } else { + if (StringUtils.isNotBlank(dto.getName())) { + query.addFilter(FieldFilters.like("c.name", dto.getName())); + } + } + if (StringUtils.isNotBlank(dto.getSysType3())) { + query.addFilter(FieldFilters.eq("c.sysType3", dto.getSysType3())); + } + if (StringUtils.isNotBlank(dto.getSysType2())) { + query.addFilter(FieldFilters.eq("c.sysType2", dto.getSysType2())); + } + if (StringUtils.isNotBlank(dto.getSysType1())) { + query.addFilter(FieldFilters.eq("c.sysType1", dto.getSysType1())); + } + if (StringUtils.isNotBlank(dto.getCreateUser())) { + query.addFilter(FieldFilters.like("c.sysCreateBy", LikeMatchMode.ANYWHERE, dto.getCreateUser())); + } + + query.addFilter(FieldFilters.eq("c.deleted", false)); + query.addFilter(FieldFilters.eq("c.enabled", true)); + + OrderCondition oc = null; + if (StringUtils.isNotBlank(dto.getOrderField())) { + if (dto.getOrderAsc() || dto.getOrderAsc() == null) { + oc = OrderCondition.asc(dto.getOrderField()); + } else { + oc = OrderCondition.desc(dto.getOrderField()); + } + } else { + oc = OrderCondition.desc("a.addTime"); + } + query.addOrder(oc); + PageList rs = new PageList(); + rs.setList(new ArrayList()); + try { + PageList list = courseDao.findPageFields(query.builder()); + rs.setCount(list.getCount()); + rs.setPageSize(pageSize); + for (Object[] objs : list.getList()) { + Course course = (Course) objs[0]; + course.setAuditId(objs[1].toString()); + course.setAuditForward((Integer) objs[2]); + rs.getList().add(course); + } + + + } catch (Exception e) { + log.error("查询课程审核错误", e); + } + + return rs; + } + + @Override + public PageList teacherAuditPage(int pageIndex, int pageSize, CourseQueryDto dto, String aid, Integer auditStatus) { + QueryBuilder query = QueryBuilder.from(Course.class.getSimpleName() + " c," + CourseHRBPAudit.class.getSimpleName() + " a"); + query.setPageIndex(pageIndex); + query.setPageSize(pageSize); + query.addField("c"); + query.addField("a.id"); + query.addField("a.toInfo"); + query.addFilter(FieldFilters.eqField("c.id", "a.courseId")); + + //审核权限处理 + query.addFilter(FieldFilters.eq("a.toAid", aid)); + + //审核状态 + if (auditStatus != null) { + if (auditStatus == 9) { + query.addFilter(FieldFilters.gt("a.status", CourseHRBPAudit.STATUS_NONE)); + } else { + query.addFilter(FieldFilters.eq("a.status", auditStatus)); + } + } else { + query.addFilter(FieldFilters.eq("a.status", CourseHRBPAudit.STATUS_NONE)); + } + + query.addFilter(FieldFilters.eq("a.forward", CourseHRBPAudit.FORWARD_TEACHER)); + + if (StringUtils.isNotBlank(dto.getKeyword())) { + query.addFilter(FieldFilters.like("c.name", dto.getKeyword())); + } else { + if (StringUtils.isNotBlank(dto.getName())) { + query.addFilter(FieldFilters.like("c.name", dto.getName())); + } + } + if (StringUtils.isNotBlank(dto.getSysType3())) { + query.addFilter(FieldFilters.eq("c.sysType3", dto.getSysType3())); + } + if (StringUtils.isNotBlank(dto.getSysType2())) { + query.addFilter(FieldFilters.eq("c.sysType2", dto.getSysType2())); + } + if (StringUtils.isNotBlank(dto.getSysType1())) { + query.addFilter(FieldFilters.eq("c.sysType1", dto.getSysType1())); + } + if (StringUtils.isNotBlank(dto.getCreateUser())) { + query.addFilter(FieldFilters.like("c.sysCreateBy", LikeMatchMode.ANYWHERE, dto.getCreateUser())); + } + + query.addFilter(FieldFilters.eq("c.deleted", false)); + query.addFilter(FieldFilters.eq("c.enabled", true)); + + OrderCondition oc = null; + if (StringUtils.isNotBlank(dto.getOrderField())) { + if (dto.getOrderAsc() || dto.getOrderAsc() == null) { + oc = OrderCondition.asc(dto.getOrderField()); + } else { + oc = OrderCondition.desc(dto.getOrderField()); + } + } else { + oc = OrderCondition.desc("a.addTime"); + } + query.addOrder(oc); + PageList rs = new PageList(); + rs.setList(new ArrayList()); + try { + PageList list = courseDao.findPageFields(query.builder()); + rs.setCount(list.getCount()); + rs.setPageSize(pageSize); + for (Object[] objs : list.getList()) { + Course course = (Course) objs[0]; + course.setAuditId(objs[1].toString()); + course.setAuditInfo((String) objs[2]); + rs.getList().add(course); + } + + + } catch (Exception e) { + log.error("查询课程审核错误", e); + } + + return rs; + } + + @Override + public List findAuditList(CourseQueryDto dto, String aid) { + QueryBuilder query = QueryBuilder.from(Course.class.getSimpleName() + " c," + CourseHRBPAudit.class.getSimpleName() + " a"); + query.addField("c"); + query.addFilter(FieldFilters.eqField("c.id", "a.courseId")); + //超级用户 + Map managers = accountService.findIdMapByLoginNames("00004409", "110858", "10726944"); + if (!managers.containsKey(aid)) { + query.addFilter(FieldFilters.eq("a.aid", aid)); + } + //审核权限处理 + query.addFilter(FieldFilters.eq("a.status", CourseHRBPAudit.STATUS_NONE)); + + if (StringUtils.isNotBlank(dto.getKeyword())) { + query.addFilter(FieldFilters.like("c.name", dto.getKeyword())); + } else { + if (StringUtils.isNotBlank(dto.getName())) { + query.addFilter(FieldFilters.like("c.name", dto.getName())); + } + } + if (StringUtils.isNotBlank(dto.getSysType3())) { + query.addFilter(FieldFilters.eq("c.sysType3", dto.getSysType3())); + } + if (StringUtils.isNotBlank(dto.getSysType2())) { + query.addFilter(FieldFilters.eq("c.sysType2", dto.getSysType2())); + } + if (StringUtils.isNotBlank(dto.getSysType1())) { + query.addFilter(FieldFilters.eq("c.sysType1", dto.getSysType1())); + } + if (StringUtils.isNotBlank(dto.getCreateUser())) { + query.addFilter(FieldFilters.like("c.sysCreateBy", LikeMatchMode.ANYWHERE, dto.getCreateUser())); + } + + query.addFilter(FieldFilters.eq("c.deleted", false)); + query.addFilter(FieldFilters.eq("c.enabled", true)); + + OrderCondition oc = null; + if (StringUtils.isNotBlank(dto.getOrderField())) { + if (dto.getOrderAsc() || dto.getOrderAsc() == null) { + oc = OrderCondition.asc(dto.getOrderField()); + } else { + oc = OrderCondition.desc(dto.getOrderField()); + } + } else { + oc = OrderCondition.desc("a.addTime"); + } + query.addOrder(oc); + + List rs = courseDao.findList(query.builder()); + + return rs; + } + + /** + * 撤销课程审核 + */ + @Override + public void revokeSubmit(String id) { + //courseDao.updateFieldById(id, "status",Course.STATUS_NONE); + courseDao.updateMultiFieldById(id, UpdateBuilder.create("published", false), UpdateBuilder.create("status", Course.STATUS_NONE)); + //如果此课程有未审核的处理就应该主去掉 + courseHRBPAuditDao.deleteByFilter(FieldFilters.eq("courseId", id), FieldFilters.eq("status", CourseHRBPAudit.STATUS_NONE)); + } + + /** + * 返回当前课程名字 + */ + private String courseName(String id) { + Course course = courseDao.get(id); + return course.getName(); + } + + @Transactional(propagation = Propagation.REQUIRED) + @Override + public String copyCourse(String id, String refId, String refType, String aid, String aname) { + //复制课程,boe_course,boe_course_content,boe_course_homework,boe_course_section,boe_course_teacher,boe_course_exam + // insert info select + List sectionList = courseSectionDao.findList("courseId", id); + if (refId == null) { + refId = ""; + } + if (refType == null) { + refType = ""; + } + + boolean visible = true; + if (StringUtils.isNotBlank(refId)) { + visible = false; + } + + String newId = IDGenerator.generate(); + String courseName = this.courseName(id); + LocalDateTime time = LocalDateTime.now(); + String mess = null; + if (courseName.length() < 96) { + + String sql = "insert into boe_course(id,org_id,copy_id,ref_id,ref_type,visible,sys_create_aid,sys_create_by,sys_create_time,deleted,sys_update_by," + + "sys_update_time,sys_version,comments,cover_img,dead_time,device,enable_remark,enabled," + + "erasable,favorites,for_scene,for_users,is_top,keywords,name,open_object," + + "overview,pass_formula,praises,publish_time,published,res_owner1,res_owner2," + + "res_owner3,score,score_formula,shares,source,study_time,studys,summary," + + "sys_type1,sys_type2,sys_type3,tags,top_time,trample_count,type,value,views," + + "order_study,status)" + + "select '" + newId + "',org_id,'" + id + "','" + refId + "','" + refType + "'," + visible + ",'" + aid + "','" + aname + "','" + time + "',0,'" + aname + "'," + + "'" + time + "',1,comments,cover_img,dead_time,device,enable_remark,enabled," + + "erasable,0,for_scene,for_users,0,keywords,'" + courseName + "(1)" + "',open_object," + + "overview,pass_formula,0,publish_time,0,res_owner1,res_owner2," + + "res_owner3,score,score_formula,0,source,study_time,0,summary," + + "sys_type1,sys_type2,sys_type3,tags,top_time,trample_count,type,value,0," + + "order_study,1 from boe_course where id=?1"; + courseDao.sqlUpdate(sql, id); + + //课程章节复制,因为微课是没有章的,所以这里要判断 + + if (sectionList.isEmpty()) { + //查出所有的内容,然后再一个一个复制(因为要复制关联的内容) + List contentIds = courseContentDao.findListField("id", FieldFilters.eq("courseId", id), FieldFilters.eq("deleted", false)); + for (Object obj : contentIds) { + String oldId = (String) obj; + String newContentId = IDGenerator.generate(); + String sqlContent = "insert into boe_course_content(id,sys_create_aid,sys_create_by,sys_create_time," + + "deleted,sys_update_by,sys_update_time,sys_version,content,content_name,content_refid," + + "content_type,course_id,csection_id,duration,sort_index)" + + "select '" + newContentId + "','" + aid + "','" + aname + "','" + time + "'," + + "deleted,'" + aname + "','" + time + "',1,content," + + "content_name,content_refid,content_type,'" + newId + "','',duration,sort_index " + + "from boe_course_content where id=?1"; + courseContentDao.sqlUpdate(sqlContent, oldId); + + //课程作业复制 + String sqlCourseHomeWork = "insert into boe_course_homework(id,sys_create_aid,sys_create_by," + + "sys_create_time,deleted,sys_update_by,sys_update_time,sys_version,content,content_id,course_id,dead_time," + + "file,name,submit_mode)" + + "SELECT UUID_SHORT(),'" + aid + "','" + aname + "','" + time + "'," + + "deleted,'" + aname + "','" + time + "',sys_version,content,'" + newContentId + "','" + newId + "',dead_time," + + "file,name,submit_mode from boe_course_homework where content_id=?1"; + courseHomeWorkDao.sqlUpdate(sqlCourseHomeWork, oldId); + + //课程考试信息复制 + String sqlExam = "insert into boe_course_exam(id,sys_create_aid,sys_create_by," + + "sys_create_time,deleted,sys_update_by,sys_update_time,sys_version,arrange,content_id," + + "course_id,info,paper_content,paper_id,paper_type,pass_line,percent_score,qnum,random_mode," + + "scoring_type,show_analysis,show_answer,test_duration," + + "test_name,times)" + + "select UUID_SHORT(),'" + aid + "','" + aname + "'," + + "'" + time + "',deleted,'" + aname + "','" + time + "'," + + "1,arrange,'" + newContentId + "'," + + "'" + newId + "',info,paper_content,paper_id,paper_type,pass_line,percent_score,qnum," + + "random_mode,scoring_type,show_analysis,show_answer,test_duration," + + "test_name,times from boe_course_exam where content_id=?1"; + courseExamDao.sqlUpdate(sqlExam, oldId); + } + } else { + List contentIdSectionIds = courseContentDao.findKeyValueList("id", "csectionId", FieldFilters.eq("courseId", id), FieldFilters.eq("deleted", false)); + for (CourseSection csection : sectionList) { + //生成新的章的id + String newSectionId = IDGenerator.generate(); + String sqlSection = "" + + "insert into boe_course_section(id,course_id,description,name,order_index,parent_id)" + + "SELECT '" + newSectionId + "','" + newId + "',description,name,order_index,parent_id " + + "from boe_course_section where id=?1"; + courseSectionDao.sqlUpdate(sqlSection, csection.getId()); + + //课程内容复制 + for (KeyValue kv : contentIdSectionIds) { + if (!kv.getValue().equals(csection.getId())) { + continue; + } + String newContentId = IDGenerator.generate(); + String sqlContent = "insert into boe_course_content(id,sys_create_aid,sys_create_by,sys_create_time," + + "deleted,sys_update_by,sys_update_time,sys_version,content,content_name,content_refid," + + "content_type,course_id,csection_id,duration,sort_index)" + + "select '" + newContentId + "','" + aid + "','" + aname + "','" + time + "'," + + "deleted,'" + aname + "','" + time + "',sys_version,content," + + "content_name,content_refid,content_type,'" + newId + "','" + newSectionId + "',duration,sort_index " + + "from boe_course_content where id=?1"; + courseContentDao.sqlUpdate(sqlContent, kv.getKey()); + + //课程作业复制 + String sqlCourseHomeWork = "insert into boe_course_homework(id,sys_create_aid,sys_create_by," + + "sys_create_time,deleted,sys_update_by,sys_update_time,sys_version,content,content_id,course_id,dead_time," + + "file,name,submit_mode)" + + "SELECT UUID_SHORT(),'" + aid + "','" + aname + "','" + time + "'," + + "deleted,'" + aname + "','" + time + "',sys_version,content,'" + newContentId + "','" + newId + "',dead_time," + + "file,name,submit_mode from boe_course_homework where content_id=?1 and course_id=?2"; + courseHomeWorkDao.sqlUpdate(sqlCourseHomeWork, kv.getKey(), id); + + //课程考试信息复制 + String sqlExam = "insert into boe_course_exam(id,sys_create_aid,sys_create_by," + + "sys_create_time,deleted,sys_update_by,sys_update_time,sys_version,arrange,content_id," + + "course_id,info,paper_content,paper_id,paper_type,pass_line,percent_score,qnum,random_mode," + + "scoring_type,show_analysis,show_answer,test_duration," + + "test_name,times)" + + "select UUID_SHORT(),'" + aid + "','" + aname + "'," + + "'" + time + "',deleted,'" + aname + "','" + time + "'," + + "1,arrange,'" + newContentId + "'," + + "'" + newId + "',info,paper_content,paper_id,paper_type,pass_line,percent_score,qnum," + + "random_mode,scoring_type,show_analysis,show_answer,test_duration," + + "test_name,times from boe_course_exam where content_id=?1 and course_id=?2"; + courseExamDao.sqlUpdate(sqlExam, kv.getKey(), id); + } + + } + } + + //课程任课教师复制 + String sqlTeacher = "insert into boe_course_teacher(id,sys_create_aid,sys_create_by,sys_create_time," + + "course_id,teacher_id,teacher_name)" + + "SELECT UUID_SHORT(),'" + aid + "','" + aname + "'," + + "'" + time + "','" + newId + "',teacher_id," + + "teacher_name from boe_course_teacher where course_id=?1"; + courseTeacherDao.sqlUpdate(sqlTeacher, id); + + } else { + mess = "长度超出范围"; + } + return mess; + + } + + @Override + public List findCrowdByCourseId(String courseId) { + + return courseCrowdDao.findList("courseId", courseId); + } + + @Override + public void updateFieldById(String id, String field, Object value) { + courseDao.updateFieldById(id, field, value); + } + + @Override + public List findStudysScoreByIds(List ids) { + + return courseDao.findListByHql("Select new Course(id,studys,score) from Course where id in(?1)", ids); + } } From c7a39a1f22f43da83c0c8964e576bbe1812dd3cb Mon Sep 17 00:00:00 2001 From: xiaozhequ <792962424@qq.com> Date: Thu, 4 Jul 2024 09:49:49 +0800 Subject: [PATCH 15/22] =?UTF-8?q?=E6=96=B0=E5=9C=A8=E7=BA=BF=E8=AF=BE?= =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/xboe/data/dto/UserOrgIds.java | 2 ++ .../com/xboe/data/outside/OutSideDataServiceImpl.java | 5 ++++- .../com/xboe/module/course/api/CourseManageApi.java | 1 + .../com/xboe/module/course/dto/CourseQueryDto.java | 3 +++ .../module/course/service/impl/CourseServiceImpl.java | 10 ++++++++-- 5 files changed, 18 insertions(+), 3 deletions(-) diff --git a/servers/boe-server-all/src/main/java/com/xboe/data/dto/UserOrgIds.java b/servers/boe-server-all/src/main/java/com/xboe/data/dto/UserOrgIds.java index 207084c2..78827b50 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/data/dto/UserOrgIds.java +++ b/servers/boe-server-all/src/main/java/com/xboe/data/dto/UserOrgIds.java @@ -17,5 +17,7 @@ public class UserOrgIds { private Map permissions=new HashMap(); private List ids; + //hrbp只读权限 + private List readIds; } diff --git a/servers/boe-server-all/src/main/java/com/xboe/data/outside/OutSideDataServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/data/outside/OutSideDataServiceImpl.java index cbafc01a..989e3442 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/data/outside/OutSideDataServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/data/outside/OutSideDataServiceImpl.java @@ -229,8 +229,10 @@ public class OutSideDataServiceImpl implements IOutSideDataService { public UserOrgIds getOrgIds() { UserOrgIds uids=new UserOrgIds(); List orgIds = new ArrayList<>(); - + List readIds = new ArrayList<>(); + uids.setIds(orgIds); + uids.setReadIds(readIds); String token = TokenProxy.getToken(request); String type="application/json"; String[] headers=new String[] {"token",token,"Content-Type",type}; @@ -282,6 +284,7 @@ public class OutSideDataServiceImpl implements IOutSideDataService { String oid=elements.next().asText(); if(!orgSetIds.contains(oid)) { orgIds.add(oid); + readIds.add(oid); } } } diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/course/api/CourseManageApi.java b/servers/boe-server-all/src/main/java/com/xboe/module/course/api/CourseManageApi.java index f3aa6041..c3a31e73 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/course/api/CourseManageApi.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/course/api/CourseManageApi.java @@ -144,6 +144,7 @@ public class CourseManageApi extends ApiBaseController{ } dto.setOrgAid(aid); dto.setOrgIds(ids); + dto.setReadIds(userOrgIds.getReadIds()); PageList coursePageList = courseService.findPage(pager.getPageIndex(), pager.getPageSize(),dto); return success(coursePageList); }catch(Exception e) { 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 141d7ec6..54aa0d7e 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 @@ -104,6 +104,9 @@ public class CourseQueryDto { * */ private String orgIds; + //hrpb只读 + private List readIds; + /**用户权限的查询*/ private String orgAid; 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 e5190670..c438a180 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 @@ -414,16 +414,21 @@ public class CourseServiceImpl implements ICourseService { if (TempFilterConfig.Manager_CourseFile_ByOrgIds) { if (dto.getIsSystemAdmin() == null || !dto.getIsSystemAdmin()) { List finalStrings = strings; - //去掉未发布的课程 + listByFilters2.removeIf(e -> { + //去掉未发布的课程 if (!e.getPublished() && seache.contains(e.getId()) && !finalStrings.contains(e.getOrgId()) && !dto.getOrgAid().equals(e.getSysCreateAid())) { return true; } + //去掉所有条件都不符合的课程 + if(!seache.contains(e.getId())&&!dto.getReadIds().contains(e.getId())&& !finalStrings.contains(e.getOrgId()) && !dto.getOrgAid().equals(e.getSysCreateAid())){ + return true; + } return false; }); //将需要隐藏的做标记 listByFilters2.forEach(e -> { - if (seache.contains(e.getId()) && !finalStrings.contains(e.getOrgId()) && !dto.getOrgAid().equals(e.getSysCreateAid())) { + if ((seache.contains(e.getId())||dto.getReadIds().contains(e.getId())) && !finalStrings.contains(e.getOrgId()) && !dto.getOrgAid().equals(e.getSysCreateAid())) { e.setIsPermission(false); } else { e.setIsPermission(true); @@ -431,6 +436,7 @@ public class CourseServiceImpl implements ICourseService { }); } } + listByFilters2.sort(Comparator.comparing(Course::getIsPermission).reversed()); List paginate = paginate(listByFilters2, pageIndex, pageSize); PageList rs = new PageList<>(); rs.setCount(listByFilters2.size()); From 20374e274a8854b8c9a6499a889a7473e93a594c Mon Sep 17 00:00:00 2001 From: xiaozhequ <792962424@qq.com> Date: Thu, 4 Jul 2024 10:31:28 +0800 Subject: [PATCH 16/22] =?UTF-8?q?=E6=96=B0=E5=9C=A8=E7=BA=BF=E8=AF=BE?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E4=BF=AE=E5=A4=8Dbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/xboe/module/course/service/impl/CourseServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 c438a180..fbb9c487 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 @@ -434,9 +434,9 @@ public class CourseServiceImpl implements ICourseService { e.setIsPermission(true); } }); + listByFilters2.sort(Comparator.comparing(Course::getIsPermission).reversed()); } } - listByFilters2.sort(Comparator.comparing(Course::getIsPermission).reversed()); List paginate = paginate(listByFilters2, pageIndex, pageSize); PageList rs = new PageList<>(); rs.setCount(listByFilters2.size()); From eb401d8fdf6decc55cd84b0eda5b7a17d0e36a71 Mon Sep 17 00:00:00 2001 From: xiaozhequ <792962424@qq.com> Date: Thu, 4 Jul 2024 10:55:17 +0800 Subject: [PATCH 17/22] =?UTF-8?q?=E6=96=B0=E5=9C=A8=E7=BA=BF=E8=AF=BE?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/xboe/module/course/service/impl/CourseServiceImpl.java | 1 + 1 file changed, 1 insertion(+) 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 fbb9c487..3c0973cd 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 @@ -411,6 +411,7 @@ public class CourseServiceImpl implements ICourseService { Set seache = getSeache(dto); //查出全部的课程 List listByFilters2 = courseDao.findListByFilters(oc, filters2); + listByFilters2.forEach(e->e.setIsPermission(true)); if (TempFilterConfig.Manager_CourseFile_ByOrgIds) { if (dto.getIsSystemAdmin() == null || !dto.getIsSystemAdmin()) { List finalStrings = strings; From 2698061eae321ba38df69ea94f818e973dcf7aae Mon Sep 17 00:00:00 2001 From: xiaozhequ <792962424@qq.com> Date: Thu, 4 Jul 2024 12:32:44 +0800 Subject: [PATCH 18/22] =?UTF-8?q?=E6=9B=B4=E6=94=B9=E5=AE=9E=E4=BD=93?= =?UTF-8?q?=E7=B1=BB=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/xboe/module/course/entity/Course.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 900125a5..cd9fe5f2 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 @@ -371,8 +371,8 @@ public class Course extends BaseEntity { @Column(name = "ref_type",length=32,columnDefinition="varchar(32) comment '反向关联的类型'") private String refType; - - private Boolean isPermission; + @Transient + private Boolean isPermission=true; @Transient private String orgName; From 55717e4dded5baba9f299946d233f32ec21e5e4a Mon Sep 17 00:00:00 2001 From: xiaozhequ <792962424@qq.com> Date: Thu, 4 Jul 2024 12:33:35 +0800 Subject: [PATCH 19/22] =?UTF-8?q?=E5=88=A0=E9=99=A4=E7=AD=9B=E9=80=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/xboe/module/course/service/impl/CourseServiceImpl.java | 1 - 1 file changed, 1 deletion(-) 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 3c0973cd..fbb9c487 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 @@ -411,7 +411,6 @@ public class CourseServiceImpl implements ICourseService { Set seache = getSeache(dto); //查出全部的课程 List listByFilters2 = courseDao.findListByFilters(oc, filters2); - listByFilters2.forEach(e->e.setIsPermission(true)); if (TempFilterConfig.Manager_CourseFile_ByOrgIds) { if (dto.getIsSystemAdmin() == null || !dto.getIsSystemAdmin()) { List finalStrings = strings; From 564bf42464a1bb43b34b8e23ddf6cd93dce36f05 Mon Sep 17 00:00:00 2001 From: xiaozhequ <792962424@qq.com> Date: Thu, 4 Jul 2024 15:06:42 +0800 Subject: [PATCH 20/22] =?UTF-8?q?hrbp=E5=8F=AA=E8=AF=BB=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/xboe/data/outside/OutSideDataServiceImpl.java | 2 +- .../com/xboe/module/course/service/impl/CourseServiceImpl.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/servers/boe-server-all/src/main/java/com/xboe/data/outside/OutSideDataServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/data/outside/OutSideDataServiceImpl.java index 989e3442..08429761 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/data/outside/OutSideDataServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/data/outside/OutSideDataServiceImpl.java @@ -283,7 +283,7 @@ public class OutSideDataServiceImpl implements IOutSideDataService { while (elements.hasNext()){ String oid=elements.next().asText(); if(!orgSetIds.contains(oid)) { - orgIds.add(oid); +// orgIds.add(oid); readIds.add(oid); } } 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 fbb9c487..e5aa9cf7 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 @@ -428,7 +428,7 @@ public class CourseServiceImpl implements ICourseService { }); //将需要隐藏的做标记 listByFilters2.forEach(e -> { - if ((seache.contains(e.getId())||dto.getReadIds().contains(e.getId())) && !finalStrings.contains(e.getOrgId()) && !dto.getOrgAid().equals(e.getSysCreateAid())) { + if ((seache.contains(e.getId())||dto.getReadIds().contains(e.getOrgId())) && !finalStrings.contains(e.getOrgId()) && !dto.getOrgAid().equals(e.getSysCreateAid())) { e.setIsPermission(false); } else { e.setIsPermission(true); From 407c7693bbaab46ae3138248043b2106a602ba43 Mon Sep 17 00:00:00 2001 From: xiaozhequ <792962424@qq.com> Date: Thu, 4 Jul 2024 16:21:48 +0800 Subject: [PATCH 21/22] =?UTF-8?q?=E5=8C=BA=E5=88=86=E6=96=B0=E5=BB=BA?= =?UTF-8?q?=E8=AF=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/course/dto/CourseQueryDto.java | 5 ++ .../service/impl/CourseServiceImpl.java | 50 +++++++++++-------- 2 files changed, 34 insertions(+), 21 deletions(-) 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 54aa0d7e..5829d723 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 @@ -115,6 +115,11 @@ public class CourseQueryDto { */ private Boolean isSystemAdmin; + /** + * 是否是新建在线可 + */ + private Boolean isCreateCourse; + private Boolean visible; private String refId; 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 e5aa9cf7..5cb5c879 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 @@ -414,27 +414,35 @@ public class CourseServiceImpl implements ICourseService { if (TempFilterConfig.Manager_CourseFile_ByOrgIds) { if (dto.getIsSystemAdmin() == null || !dto.getIsSystemAdmin()) { List finalStrings = strings; - - listByFilters2.removeIf(e -> { - //去掉未发布的课程 - if (!e.getPublished() && seache.contains(e.getId()) && !finalStrings.contains(e.getOrgId()) && !dto.getOrgAid().equals(e.getSysCreateAid())) { - return true; - } - //去掉所有条件都不符合的课程 - if(!seache.contains(e.getId())&&!dto.getReadIds().contains(e.getId())&& !finalStrings.contains(e.getOrgId()) && !dto.getOrgAid().equals(e.getSysCreateAid())){ - return true; - } - return false; - }); - //将需要隐藏的做标记 - listByFilters2.forEach(e -> { - if ((seache.contains(e.getId())||dto.getReadIds().contains(e.getOrgId())) && !finalStrings.contains(e.getOrgId()) && !dto.getOrgAid().equals(e.getSysCreateAid())) { - e.setIsPermission(false); - } else { - e.setIsPermission(true); - } - }); - listByFilters2.sort(Comparator.comparing(Course::getIsPermission).reversed()); + if(dto.getIsCreateCourse()){ + listByFilters2.removeIf(e -> { + //去掉未发布的课程 + if (!e.getPublished() && seache.contains(e.getId()) && !finalStrings.contains(e.getOrgId()) && !dto.getOrgAid().equals(e.getSysCreateAid())) { + return true; + } + //去掉所有条件都不符合的课程 + if(!seache.contains(e.getId())&&!dto.getReadIds().contains(e.getId())&& !finalStrings.contains(e.getOrgId()) && !dto.getOrgAid().equals(e.getSysCreateAid())){ + return true; + } + return false; + }); + //将需要隐藏的做标记 + listByFilters2.forEach(e -> { + if ((seache.contains(e.getId())||dto.getReadIds().contains(e.getOrgId())) && !finalStrings.contains(e.getOrgId()) && !dto.getOrgAid().equals(e.getSysCreateAid())) { + e.setIsPermission(false); + } else { + e.setIsPermission(true); + } + }); + listByFilters2.sort(Comparator.comparing(Course::getIsPermission).reversed()); + }else{ + List collect = listByFilters2.stream().filter(e ->dto.getReadIds().contains(e.getOrgId())||dto.getOrgAid().equals(e.getSysCreateAid())||finalStrings.contains(e.getOrgId())).collect(Collectors.toList()); + List paginate = paginate(collect, pageIndex, pageSize); + PageList rs = new PageList<>(); + rs.setCount(collect.size()); + rs.setList(paginate); + return rs; + } } } List paginate = paginate(listByFilters2, pageIndex, pageSize); From 84dd5cb192b65f30ad0b617ca3a76b887edc365e Mon Sep 17 00:00:00 2001 From: xiaozhequ <792962424@qq.com> Date: Fri, 5 Jul 2024 15:22:55 +0800 Subject: [PATCH 22/22] =?UTF-8?q?=E5=9C=A8=E7=BA=BF=E8=AF=BE=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E6=9B=B4=E6=94=B9=E5=BA=93=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../course/service/impl/CourseServiceImpl.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) 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 5cb5c879..a28fbea9 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 @@ -466,10 +466,10 @@ public class CourseServiceImpl implements ICourseService { List noAudiences = getNoAudiences(dto); list.addAll(noAudiences); // //成长路径的课 - List grow = getGrow(dto); +// List grow = getGrow(dto); // //已报名的课 List enroll = getEnroll(dto); - list.addAll(grow); +// list.addAll(grow); list.addAll(enroll); list.addAll(list1); list.addAll(list2); @@ -480,7 +480,7 @@ public class CourseServiceImpl implements ICourseService { String sql = "SELECT DISTINCT\n" + "rt.course_id\n" + "FROM\n" + - "boe.student s INNER JOIN boe.router_task rt on s.pid=rt.router_id inner join boe_base.boe_course c on c.id=rt.course_id\n" + + "boe_new.student s INNER JOIN boe_new.router_task rt on s.pid=rt.router_id inner join boe_base.boe_course c on c.id=rt.course_id\n" + "\n" + "WHERE\n" + "\n" + @@ -503,7 +503,7 @@ public class CourseServiceImpl implements ICourseService { 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" + + "boe_new.student s INNER JOIN boe_new.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" + @@ -526,8 +526,8 @@ public class CourseServiceImpl implements ICourseService { String sql = "SELECT DISTINCT\n" + "\tcc.course_id \n" + "FROM\n" + - "\t`boe_course_crowd` cc\n" + - "\tINNER JOIN boe_course c ON cc.course_id = c.id \n" + + "\t`boe_base.boe_course_crowd` cc\n" + + "\tINNER JOIN boe_base.boe_course c ON cc.course_id = c.id \n" + "WHERE\n" + "\tcc.group_id IN (?1) \n" + "\tAND c.deleted =0 "; @@ -560,8 +560,8 @@ public class CourseServiceImpl implements ICourseService { String sql = "SELECT DISTINCT\n" + "\tc.id \n" + "FROM\n" + - "\tboe.student s\n" + - "\tINNER JOIN boe.grow_task gt ON s.pid = gt.grow_id\n" + + "\tboe_new.student s\n" + + "\tINNER JOIN boe_new.grow_task gt ON s.pid = gt.grow_id\n" + "\tINNER JOIN boe_base.boe_course c ON gt.course_id = c.id \n" + "WHERE\n" + "\ts.type = 14 \n" +