Compare commits

...

47 Commits

Author SHA1 Message Date
nisen
83e71dc5d6 Merge branch 'zcwy0716-llf' into yxmaster 2024-07-29 19:47:41 +08:00
nisen
f5f53557b6 Merge branch 'zcwy0716-llf' into master-0705 2024-07-26 22:21:06 +08:00
nisen
4b4f30b412 Merge branch 'zcwy0716-llf' into master-0705 2024-07-26 22:16:40 +08:00
nisen
6f19ff7b0f Merge branch 'zcwy0716-llf' into master-0705 2024-07-26 22:11:30 +08:00
nisen
f8566d2321 Merge branch 'zcwy0716-llf' into master-0705 2024-07-26 22:06:19 +08:00
nisen
d6102d1ce1 Merge branch 'zcwy0716-llf' into master-0705 2024-07-26 21:52:10 +08:00
nisen
6521464676 Merge branch 'zcwy0716-llf' into master-0705 2024-07-26 21:38:42 +08:00
nisen
b6378b6565 Merge branch 'zcwy0716-llf' into master-0705 2024-07-26 21:20:05 +08:00
nisen
66d7f2a3cf Merge branch 'zcwy0716-llf' into master-0705 2024-07-26 20:53:21 +08:00
nisen
faea4f8b2a Merge branch 'zcwy0716-llf' into master-0705 2024-07-26 20:37:09 +08:00
nisen
c203956bc6 Merge branch 'zcwy0716-llf' into master-0705 2024-07-26 20:25:00 +08:00
nisen
cf4004f073 Merge branch 'zcwy0716-llf' into master-0705 2024-07-26 19:00:39 +08:00
nisen
6bf5ccbcec Merge branch 'zcwy0716-llf' into master-0705 2024-07-26 18:59:20 +08:00
nisen
63867db58e Merge branch 'zcwy0716-llf' into master-0705 2024-07-26 18:45:50 +08:00
nisen
7ef0f976fc Merge branch 'zcwy0716-llf' into master-0705 2024-07-26 18:38:12 +08:00
nisen
5a05ff74b7 Merge branch 'zcwy0716-llf' into master-0705 2024-07-26 18:18:17 +08:00
nisen
a93580c387 Merge branch 'zcwy0716-llf' into master-0705 2024-07-26 18:04:08 +08:00
nisen
78184d3a11 Merge branch 'zcwy0716-llf' into master-0705 2024-07-26 17:31:26 +08:00
nisen
bcb8b59e8a Merge branch 'zcwy0716-llf' into master-0705 2024-07-26 16:50:18 +08:00
nisen
1025f8f716 Merge branch 'zcwy0716-llf' into master-0705 2024-07-18 17:27:52 +08:00
joshen
4c6f15a707 Merge branch 'zcwy-0613-wjw' into 'master-0705'
新在线课逻辑删除库名

See merge request !115
2024-07-05 19:21:27 +08:00
xiaozhequ
488e6c2872 新在线课逻辑删除库名 2024-07-05 19:20:11 +08:00
joshen
e86afad4ef Merge branch 'zcwy-0613-wjw' into 'master-0705'
新在线课逻辑打印日志

See merge request !114
2024-07-05 19:00:59 +08:00
xiaozhequ
3285c639b9 新在线课逻辑打印日志 2024-07-05 18:59:29 +08:00
joshen
db3695019a Merge branch 'zcwy-0613-wjw' into 'master-0705'
Zcwy 0613 wjw

See merge request !113
2024-07-05 17:52:48 +08:00
xiaozhequ
84dd5cb192 在线课逻辑更改库名 2024-07-05 15:22:55 +08:00
xiaozhequ
407c7693bb 区分新建课 2024-07-04 16:21:48 +08:00
xiaozhequ
564bf42464 hrbp只读权限 2024-07-04 15:06:42 +08:00
xiaozhequ
55717e4dde 删除筛选 2024-07-04 12:33:35 +08:00
xiaozhequ
2698061eae 更改实体类字段 2024-07-04 12:32:44 +08:00
xiaozhequ
eb401d8fdf 新在线课逻辑 2024-07-04 10:55:17 +08:00
xiaozhequ
20374e274a 新在线课逻辑修复bug 2024-07-04 10:31:28 +08:00
xiaozhequ
c7a39a1f22 新在线课修复bug 2024-07-04 09:49:49 +08:00
xiaozhequ
7eb578127d 新在线课逻辑优化2 2024-07-03 16:30:19 +08:00
xiaozhequ
f2be349301 新在线课逻辑优化 2024-07-03 12:46:55 +08:00
xiaozhequ
e0037b8814 课程权限优化 2024-07-03 09:57:59 +08:00
xiaozhequ
0b0bd748d9 新在线课逻辑 2024-07-02 09:42:47 +08:00
xiaozhequ
9fd4171107 新在线课逻辑 2024-07-02 08:56:28 +08:00
xiaozhequ
625c41f466 在线可权限bug 2024-06-24 16:00:23 +08:00
xiaozhequ
f950788e08 课程权限学习路径图保持一致 2024-06-24 14:58:13 +08:00
xiaozhequ
a26ceb86d1 学习路径图保持一致 2024-06-24 14:04:53 +08:00
xiaozhequ
a2317d0b59 在线可权限更改逻辑 2024-06-24 13:47:34 +08:00
xiaozhequ
53c38baf22 修复查询失败bug 2024-06-21 15:46:43 +08:00
xiaozhequ
de69ba1c11 在线课权限查询 2024-06-19 15:34:53 +08:00
xiaozhequ
2fcdb6b4b6 代码还原 2024-06-18 15:49:10 +08:00
xiaozhequ
62884bcc15 所有后台人过滤在线课 2024-06-18 14:56:28 +08:00
xiaozhequ
dd0af3cbef 选择在线可时增加数据权限逻辑 2024-06-13 18:11:41 +08:00
6 changed files with 1767 additions and 1436 deletions

View File

@@ -17,5 +17,7 @@ public class UserOrgIds {
private Map<String,Boolean> permissions=new HashMap<String,Boolean>(); private Map<String,Boolean> permissions=new HashMap<String,Boolean>();
private List<String> ids; private List<String> ids;
//hrbp只读权限
private List<String> readIds;
} }

View File

@@ -229,8 +229,10 @@ public class OutSideDataServiceImpl implements IOutSideDataService {
public UserOrgIds getOrgIds() { public UserOrgIds getOrgIds() {
UserOrgIds uids=new UserOrgIds(); UserOrgIds uids=new UserOrgIds();
List<String> orgIds = new ArrayList<>(); List<String> orgIds = new ArrayList<>();
List<String> readIds = new ArrayList<>();
uids.setIds(orgIds); uids.setIds(orgIds);
uids.setReadIds(readIds);
String token = TokenProxy.getToken(request); String token = TokenProxy.getToken(request);
String type="application/json"; String type="application/json";
String[] headers=new String[] {"token",token,"Content-Type",type}; String[] headers=new String[] {"token",token,"Content-Type",type};
@@ -281,7 +283,8 @@ public class OutSideDataServiceImpl implements IOutSideDataService {
while (elements.hasNext()){ while (elements.hasNext()){
String oid=elements.next().asText(); String oid=elements.next().asText();
if(!orgSetIds.contains(oid)) { if(!orgSetIds.contains(oid)) {
orgIds.add(oid); // orgIds.add(oid);
readIds.add(oid);
} }
} }
} }

View File

@@ -1,11 +1,7 @@
package com.xboe.module.course.api; package com.xboe.module.course.api;
import java.io.OutputStream; import java.io.OutputStream;
import java.util.ArrayList; import java.util.*;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
@@ -134,7 +130,6 @@ public class CourseManageApi extends ApiBaseController{
}else { }else {
dto.setIsSystemAdmin(false); dto.setIsSystemAdmin(false);
} }
String ids=""; String ids="";
if(userOrgIds.getIds()!=null && !userOrgIds.getIds().isEmpty()) if(userOrgIds.getIds()!=null && !userOrgIds.getIds().isEmpty())
{ {
@@ -142,12 +137,14 @@ public class CourseManageApi extends ApiBaseController{
} }
//log.info("获取到的用户的组织机构权限ids",ids); //log.info("获取到的用户的组织机构权限ids",ids);
String aid=getCurrent().getAccountId(); String aid=getCurrent().getAccountId();
// String aid="1706272694871445506";
//如果前端查询当前人的,这里去掉 //如果前端查询当前人的,这里去掉
if(StringUtils.isNotBlank(dto.getAid())) { if(StringUtils.isNotBlank(dto.getAid())) {
dto.setAid(null); dto.setAid(null);
} }
dto.setOrgAid(aid); dto.setOrgAid(aid);
dto.setOrgIds(ids); dto.setOrgIds(ids);
dto.setReadIds(userOrgIds.getReadIds());
PageList<Course> coursePageList = courseService.findPage(pager.getPageIndex(), pager.getPageSize(),dto); PageList<Course> coursePageList = courseService.findPage(pager.getPageIndex(), pager.getPageSize(),dto);
return success(coursePageList); return success(coursePageList);
}catch(Exception e) { }catch(Exception e) {

View File

@@ -2,6 +2,8 @@ package com.xboe.module.course.dto;
import lombok.Data; import lombok.Data;
import java.util.List;
/** /**
* 课程查询的条件对象 * 课程查询的条件对象
*/ */
@@ -102,6 +104,9 @@ public class CourseQueryDto {
* */ * */
private String orgIds; private String orgIds;
//hrpb只读
private List<String> readIds;
/**用户权限的查询*/ /**用户权限的查询*/
private String orgAid; private String orgAid;
@@ -110,6 +115,11 @@ public class CourseQueryDto {
*/ */
private Boolean isSystemAdmin; private Boolean isSystemAdmin;
/**
* 是否是新建在线可
*/
private Boolean isCreateCourse;
private Boolean visible; private Boolean visible;
private String refId; private String refId;
@@ -129,4 +139,5 @@ public class CourseQueryDto {
* 登录人id * 登录人id
*/ */
private String userId; private String userId;
} }

View File

@@ -371,6 +371,9 @@ public class Course extends BaseEntity {
@Column(name = "ref_type",length=32,columnDefinition="varchar(32) comment '反向关联的类型'") @Column(name = "ref_type",length=32,columnDefinition="varchar(32) comment '反向关联的类型'")
private String refType; private String refType;
@Transient
private Boolean isPermission=true;
@Transient @Transient
private String orgName; private String orgName;

View File

@@ -3,17 +3,26 @@ package com.xboe.module.course.service.impl;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.ArrayList; import java.util.*;
import java.util.Arrays; import java.util.concurrent.ConcurrentHashMap;
import java.util.List; import java.util.concurrent.TimeUnit;
import java.util.Map; import java.util.function.Function;
import java.util.function.Predicate;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream;
import javax.annotation.Resource; 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.apache.commons.lang3.StringUtils;
import org.hibernate.mapping.IdGenerator; import org.hibernate.mapping.IdGenerator;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@@ -26,11 +35,6 @@ import com.xboe.common.beans.KeyValue;
import com.xboe.common.utils.IDGenerator; import com.xboe.common.utils.IDGenerator;
import com.xboe.common.utils.StringUtil; import com.xboe.common.utils.StringUtil;
import com.xboe.core.event.IEventDataSender; 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.CourseContentDao;
import com.xboe.module.course.dao.CourseCrowdDao; import com.xboe.module.course.dao.CourseCrowdDao;
import com.xboe.module.course.dao.CourseDao; import com.xboe.module.course.dao.CourseDao;
@@ -112,8 +116,11 @@ public class CourseServiceImpl implements ICourseService {
@Autowired(required = false) @Autowired(required = false)
private IEventDataSender eventSender; private IEventDataSender eventSender;
/** /**
* 生成过滤条件 * 生成过滤条件
*
* @param dto * @param dto
* @return * @return
*/ */
@@ -254,36 +261,133 @@ public class CourseServiceImpl implements ICourseService {
return courseDao.findList(query.builder()); return courseDao.findList(query.builder());
} }
// public PageList<Course> findPage(int pageIndex, int pageSize, CourseQueryDto dto) {
// List<IFieldFilter> filters = createFilters(dto);
// List<IFieldFilter> filters1 = createFilters(dto);
// List<IFieldFilter> filters2 = createFilters(dto);
//// String s = redisTemplate.opsForValue().get("course_search");
//// Set<String>list=new HashSet<>();
//// if(s!=null&&!s.isEmpty()){
//// list=Arrays.stream(s.split(",")).collect(Collectors.toSet());
//// }else {
//// Set<String> ss = getSeache(dto);
//// String courseSearch=String.join(",",ss);
//// redisTemplate.opsForValue().set("course_search",courseSearch);
//// //设置过期时间为1分钟
//// redisTemplate.expire("course_search", 1, TimeUnit.MINUTES);
//// }
// Set<String> 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<String> 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");
// }
// List<Course> listByFilters = new ArrayList<>();
// //根据组织筛选
// if(StringUtil.isNotBlank(dto.getOrgIds())){
// listByFilters = courseDao.findListByFilters(oc, filters);
// }
// //根据创建人筛选
// List<Course> listByFilters1;
// if(!list.isEmpty()){
// listByFilters1 = courseDao.findListByFilters(oc, filters1);
// } else {
// listByFilters1 = new ArrayList<>();
// }
// //根据list筛选
//// List<Course> listByFilters2 = courseDao.findListByFilters(oc, filters2);
// //去除根据组织和创建人筛选的课程id
// List<Course> finalListByFilters = listByFilters;
//// List<Course> collect = list.stream()
//// .filter(element -> !finalListByFilters.contains(element))
//// .filter(element -> !listByFilters1.contains(element)).collect(Collectors.toList());
//// List<String> courseIds = collect.stream().map(Course::getId).collect(Collectors.toList());
// //合并
// List<Course> mergedList = Stream.concat(listByFilters.stream(), listByFilters1.stream())
// // 使用distinct()配合自定义的去重条件
// .filter(distinctByKey(c -> c.getId()))
// .collect(Collectors.toList());
//// PageList<Course> 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<Course> paginate = paginate(mergedList, pageIndex, pageSize);
// PageList<Course> rs=new PageList<>();
// rs.setCount(mergedList.size());
// rs.setList(paginate);
// return rs;
// }
@Override @Override
public PageList<Course> findPage(int pageIndex, int pageSize, CourseQueryDto dto) { public PageList<Course> findPage(int pageIndex, int pageSize, CourseQueryDto dto) {
List<IFieldFilter> filters = createFilters(dto); List<IFieldFilter> filters2 = createFilters(dto);
filters2.add(FieldFilters.eq("deleted", false));
//有权限的查询,也同时查询出创建人的数据,在权限上 //同时查出所有项目内课程
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<String> strings = Arrays.asList(split);
filters.add(FieldFilters.or(FieldFilters.in("orgId",strings),FieldFilters.eq("sysCreateAid",dto.getOrgAid())));
}else {
filters.add(FieldFilters.or(FieldFilters.eq("orgId",dto.getOrgIds()),FieldFilters.eq("sysCreateAid",dto.getOrgAid())));
}
}else {
//log.info("【"+dto.getOrgAid()+"】 机构ids没有 只查询自己创建的课程");
//没有机构权限,只能查出自己创建的
filters.add(FieldFilters.eq("sysCreateAid",dto.getOrgAid()));
}
}else {
//log.info("【"+dto.getOrgAid()+"】IsSystemAdmin is true 不过机构过滤,查询全部");
}
}
//自动添加过滤已删除
filters.add(FieldFilters.eq("deleted",false));
OrderCondition oc = null; OrderCondition oc = null;
if (StringUtils.isNotBlank(dto.getOrderField())) { if (StringUtils.isNotBlank(dto.getOrderField())) {
if (dto.getOrderAsc() || dto.getOrderAsc() == null) { if (dto.getOrderAsc() || dto.getOrderAsc() == null) {
@@ -294,11 +398,225 @@ public class CourseServiceImpl implements ICourseService {
} else { } else {
oc = OrderCondition.desc("id"); oc = OrderCondition.desc("id");
} }
//组织id
PageList<Course> rs=courseDao.findPage(pageIndex, pageSize, filters, oc); List<String> strings = new ArrayList<>();
//log.info("查询出的条数:"+rs.getCount()); if (StringUtil.isNotBlank(dto.getOrgIds())) {
if (dto.getOrgIds().contains(",")) {
String[] split = dto.getOrgIds().split(",");
strings = Arrays.asList(split);
} else {
strings.add(dto.getOrgIds());
}
}
Set<String> seache = getSeache(dto);
//查出全部的课程
List<Course> listByFilters2 = courseDao.findListByFilters(oc, filters2);
if (TempFilterConfig.Manager_CourseFile_ByOrgIds) {
if (dto.getIsSystemAdmin() == null || !dto.getIsSystemAdmin()) {
List<String> finalStrings = strings;
log.info("dto为"+dto);
if(dto.getIsCreateCourse()!=null&&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<Course> collect = listByFilters2.stream().filter(e ->dto.getReadIds().contains(e.getOrgId())||dto.getOrgAid().equals(e.getSysCreateAid())||finalStrings.contains(e.getOrgId())).collect(Collectors.toList());
List<Course> paginate = paginate(collect, pageIndex, pageSize);
PageList<Course> rs = new PageList<>();
rs.setCount(collect.size());
rs.setList(paginate);
return rs; return rs;
} }
}
}
List<Course> paginate = paginate(listByFilters2, pageIndex, pageSize);
PageList<Course> rs = new PageList<>();
rs.setCount(listByFilters2.size());
rs.setList(paginate);
return rs;
}
private Set<String> getSeache(CourseQueryDto dto) {
//需要设置为隐藏的课程id
Set<String> list = new HashSet<>();
List<String> list1 = getProject(dto);
List<String> list2 = getRouter(dto);
// //有受众权限的课程
if (dto.getAudiences() != null && !dto.getAudiences().isEmpty()) {
List<String> audiences = getAudiences(dto);
list.addAll(audiences);
}
// //没有受众的课程
List<String> noAudiences = getNoAudiences(dto);
list.addAll(noAudiences);
// //成长路径的课
// List<String> grow = getGrow(dto);
// //已报名的课
List<String> enroll = getEnroll(dto);
// list.addAll(grow);
list.addAll(enroll);
list.addAll(list1);
list.addAll(list2);
return list;
}
private List<String> getRouter(CourseQueryDto dto) {
String sql = "SELECT DISTINCT\n" +
"rt.course_id\n" +
"FROM\n" +
"boe_new.student s INNER JOIN boe_new.router_task rt on s.pid=rt.router_id inner join 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<String> list = courseTeacherDao.sqlFindList(sql, dto.getOrgAid());
List<String> list1 = new ArrayList<>();
for (Object obj : list) {
list1.add(obj.toString());
}
return list1;
}
private List<String> getProject(CourseQueryDto dto) {
String sql = "SELECT DISTINCT\n" +
"pt.course_id\n" +
"FROM\n" +
"boe_new.student s INNER JOIN boe_new.project_task pt on s.pid=pt.project_id inner join 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<Long> list = courseTeacherDao.sqlFindList(sql, dto.getOrgAid());
List<String> list1 = new ArrayList<>();
for (Object obj : list) {
list1.add(obj.toString());
}
return list1;
}
private List<String> getAudiences(CourseQueryDto dto) {
List<String> 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<Long> list = courseTeacherDao.sqlFindList(sql, s);
List<String> list1 = new ArrayList<>();
for (Object obj : list) {
list1.add(obj.toString());
}
return list1;
}
private List<String> getNoAudiences(CourseQueryDto dto) {
String sql = "SELECT\n" +
"\tc.id \n" +
"FROM\n" +
"\tboe_course c \n" +
"WHERE\n" +
"\t NOT EXISTS ( SELECT 1 FROM boe_course_crowd cc where cc.course_id = c.id ) \n" +
"\tAND c.deleted =0 \n";
List<Course> list = courseDao.sqlFindList(sql);
List<String> list1 = new ArrayList<>();
for (Object obj : list) {
list1.add(obj.toString());
}
return list1;
}
private List<String> getGrow(CourseQueryDto dto) {
String sql = "SELECT DISTINCT\n" +
"\tc.id \n" +
"FROM\n" +
"\tboe_new.student s\n" +
"\tINNER JOIN boe_new.grow_task gt ON s.pid = gt.grow_id\n" +
"\tINNER JOIN 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<Long> list = courseTeacherDao.sqlFindList(sql, dto.getOrgAid());
List<String> list1 = new ArrayList<>();
for (Object obj : list) {
list1.add(obj.toString());
}
return list1;
}
private List<String> getEnroll(CourseQueryDto dto) {
String sql = "SELECT DISTINCT\n" +
"\tsc.course_id \n" +
"FROM\n" +
"\tboe_study_course sc\n" +
"\tINNER JOIN boe_course c ON sc.course_id = c.id \n" +
"WHERE\n" +
"\tsc.aid = ?1 \n" +
"\tAND c.deleted =0";
List<Long> list = courseTeacherDao.sqlFindList(sql, dto.getOrgAid());
List<String> list1 = new ArrayList<>();
for (Object obj : list) {
list1.add(obj.toString());
}
return list1;
}
public static <T> List<T> paginate(List<T> list, int pageNumber, int pageSize) {
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 <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) {
Set<Object> seen = ConcurrentHashMap.newKeySet();
return t -> seen.add(keyExtractor.apply(t));
}
@Override @Override
public List<Course> findList(CourseQueryDto dto) { public List<Course> findList(CourseQueryDto dto) {
@@ -543,6 +861,7 @@ public class CourseServiceImpl implements ICourseService {
//记录删除日志信息 //记录删除日志信息
} }
@Override @Override
public Course get(String id) { public Course get(String id) {
Course c = courseDao.get(id); Course c = courseDao.get(id);
@@ -599,6 +918,7 @@ public class CourseServiceImpl implements ICourseService {
/** /**
* 追加修改日志,共用方法,在其它的修改的地方也可能调用 * 追加修改日志,共用方法,在其它的修改的地方也可能调用
*
* @param old * @param old
* @param now * @param now
*/ */
@@ -882,7 +1202,6 @@ public class CourseServiceImpl implements ICourseService {
// log.error("课程发布全文检索失败",e); // log.error("课程发布全文检索失败",e);
// } // }
// } // }
@Override @Override
public void audit(String auditId, String courseId, Boolean pass, String aid, String name, String remark, boolean publish, Integer from) { public void audit(String auditId, String courseId, Boolean pass, String aid, String name, String remark, boolean publish, Integer from) {
@@ -1028,9 +1347,10 @@ public class CourseServiceImpl implements ICourseService {
} }
} }
/** /**
* 赋值赞踩数 * 赋值赞踩数
* */ */
@Override @Override
public void updateTrampleCount(String id, Integer trampleCount) { public void updateTrampleCount(String id, Integer trampleCount) {
courseDao.updateMultiFieldById(id, UpdateBuilder.create("trampleCount", trampleCount)); courseDao.updateMultiFieldById(id, UpdateBuilder.create("trampleCount", trampleCount));
@@ -1039,7 +1359,7 @@ public class CourseServiceImpl implements ICourseService {
/** /**
* 赋值点赞数 * 赋值点赞数
* */ */
@Override @Override
public List<CourseTeacher> findTeachersByCourseId(String courseId) { public List<CourseTeacher> findTeachersByCourseId(String courseId) {
@@ -1096,7 +1416,6 @@ public class CourseServiceImpl implements ICourseService {
} }
@Override @Override
public List<RankingDto> scoreList(int num, int index) { public List<RankingDto> scoreList(int num, int index) {
QueryBuilder builder = QueryBuilder.from(Course.class); QueryBuilder builder = QueryBuilder.from(Course.class);
@@ -1250,7 +1569,6 @@ public class CourseServiceImpl implements ICourseService {
} }
@Override @Override
public int countWaitAudit(String aid) { public int countWaitAudit(String aid) {
//查询待审核的课程 //查询待审核的课程
@@ -1490,7 +1808,7 @@ public class CourseServiceImpl implements ICourseService {
/** /**
* 返回当前课程名字 * 返回当前课程名字
* */ */
private String courseName(String id) { private String courseName(String id) {
Course course = courseDao.get(id); Course course = courseDao.get(id);
return course.getName(); return course.getName();
@@ -1637,8 +1955,7 @@ public class CourseServiceImpl implements ICourseService {
"teacher_name from boe_course_teacher where course_id=?1"; "teacher_name from boe_course_teacher where course_id=?1";
courseTeacherDao.sqlUpdate(sqlTeacher, id); courseTeacherDao.sqlUpdate(sqlTeacher, id);
} } else {
else{
mess = "长度超出范围"; mess = "长度超出范围";
} }
return mess; return mess;
@@ -1663,6 +1980,4 @@ public class CourseServiceImpl implements ICourseService {
} }
} }