根据用户id查询所学项目,项目有对应课程
- relation_user_project
- relation_project_course
/**
* 根据token,查询用户拥有课程
*
* @return 结果
* @author
* @date 2023/1/12
*/
@Override
public List<BaseProject> userCourseList() {
Long userId = SecurityUtils.getUserId();
//查出实训项目主键
List<Long> projectIds = relationUserProjectService.selectRelationUserProjectList(new RelationUserProject(userId))
.stream().map(RelationUserProject::getProjectId).collect(Collectors.toList());
//实训项目主键查出课程列表
List<RelationProjectCourse> relationProjectCourses = relationProjectCourseService.selectCourseListByProjectIds(projectIds);
//课程主键
Set<Long> courseIds = relationProjectCourses.stream().map(RelationProjectCourse::getCourseId).collect(Collectors.toSet());
//项目信息
List<BaseProject> baseProjectList = baseProjectMapper.selectBaseProjectByIds(projectIds);
//课程信息
Map<Long, BaseCourse> courseMap = baseCourseMapper.selectBaseCourseListByIds(courseIds)
.stream().collect(Collectors.toMap(BaseCourse::getId, o -> o));
for (BaseProject project : baseProjectList) {
for (RelationProjectCourse relationProjectCours : relationProjectCourses) {
if (relationProjectCours.getProjectId().equals(project.getId())) {
project.getCourses().add(courseMap.get(relationProjectCours.getCourseId()));
}
}
}
return baseProjectList;
}