diff --git a/servers/boe-server-all/src/main/java/com/xboe/school/study/api/StudyCourseApi.java b/servers/boe-server-all/src/main/java/com/xboe/school/study/api/StudyCourseApi.java index 41559d7a..127c49d6 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/school/study/api/StudyCourseApi.java +++ b/servers/boe-server-all/src/main/java/com/xboe/school/study/api/StudyCourseApi.java @@ -6,10 +6,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import com.xboe.common.utils.StringUtil; -import com.xboe.school.study.dto.StudyCourseNameDto; -import com.xboe.school.study.dto.StudyCourseQuery; -import com.xboe.school.study.dto.StudyCouseDto; +import javax.annotation.Resource; + import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; @@ -22,13 +20,27 @@ import org.springframework.web.bind.annotation.RestController; import com.xboe.common.OrderCondition; import com.xboe.common.PageList; import com.xboe.common.Pagination; +import com.xboe.common.utils.StringUtil; import com.xboe.core.CurrentUser; import com.xboe.core.JsonResponse; import com.xboe.core.api.ApiBaseController; +import com.xboe.module.course.entity.Course; +import com.xboe.module.course.entity.CourseContent; +import com.xboe.module.course.entity.CourseCrowd; +import com.xboe.module.course.entity.CourseSection; +import com.xboe.module.course.entity.CourseTeacher; +import com.xboe.module.course.service.ICourseContentService; +import com.xboe.module.course.service.ICourseSectionService; import com.xboe.module.course.service.ICourseService; +import com.xboe.module.course.service.ICourseTeacherService; +import com.xboe.module.teacher.entity.Teacher; +import com.xboe.module.teacher.service.ITeacherService; import com.xboe.school.study.dto.StudyContentDto; +import com.xboe.school.study.dto.StudyCourseNameDto; +import com.xboe.school.study.dto.StudyCourseQuery; import com.xboe.school.study.entity.StudyCourse; import com.xboe.school.study.entity.StudyCourseItem; +import com.xboe.school.study.entity.StudySignup; import com.xboe.school.study.entity.StudyTime; import com.xboe.school.study.service.IStudyCourseService; import com.xboe.school.study.service.IStudyService; @@ -53,6 +65,19 @@ public class StudyCourseApi extends ApiBaseController{ @Autowired ICourseService courseService; + + @Autowired + private ICourseContentService contentService; + + @Autowired + private ICourseSectionService sectionService; + + @Autowired + private ICourseTeacherService courseTeacherService; + + @Autowired + private ITeacherService teacherService; + @Autowired IStudySignupService signupService; @@ -107,6 +132,59 @@ public class StudyCourseApi extends ApiBaseController{ } } + /** + * 学习页面,加载课程的信息,用于替换portal中的detail方法 + * @param id + * @return + */ + @RequestMapping(value="/studyIndex",method = {RequestMethod.GET,RequestMethod.POST}) + public JsonResponse> loadDetail(String id,Boolean addView,Boolean crowd){ + if(StringUtils.isBlank(id)){ + return error("无课程信息"); + } + String aid=getCurrent().getAccountId(); + //StudyCourse sc=service.findByCourseIdAndAid(id, aid); + Map rs=new HashMap(); + Course course=courseService.getAddView(id); + if(course==null || course.getDeleted()){ + return badRequest("课程不存在或已被删除"); + } + rs.put("course",course); + + List courseCrowdList = courseService.findCrowdByCourseId(id); + if(crowd!=null && crowd) { + rs.put("crowds",courseCrowdList); + } + List cclist=contentService.getByCourseId(id); + List sectionlist=sectionService.getByCourseId(id); + List teachers=courseService.findTeachersByCourseId(id); + + //获取教师的介绍信息,因为一门课程 的教师不会太多,所以这里简单直接遍历查询,后续再优化 + for(CourseTeacher ct : teachers) { + Teacher t = teacherService.get(ct.getTeacherId()); + if(t!=null) { + ct.setRemark(t.getDescription()); + } + + } + + + rs.put("contents",cclist); + rs.put("sections",sectionlist); + rs.put("teachers",teachers); + + //检查是否已报名 + StudySignup ss = signupService.getByCidAndAid(id, aid); + if(ss!=null && ss.getStatus()!=null && ss.getStatus()==9) { + rs.put("signup",true); + }else { + rs.put("signup",false); + } + + return success(rs); + } + + // /** // * 检查是否有相应的课程学习 // * @param cid @@ -543,16 +621,16 @@ public class StudyCourseApi extends ApiBaseController{ studyCourseQuery.setAid(this.getCurrent().getAccountId()); } List studyCouseDtos = service.ids(studyCourseQuery); - List ids=new ArrayList(); - for(StudyCourse scourse:studyCouseDtos) { - ids.add(scourse.getCourseId()); - } - Map maps = courseService.findImages(ids); - for(StudyCourse scourse:studyCouseDtos) { - if(maps.containsKey(scourse.getCourseId())) { - scourse.setCourseImage((String)maps.get(scourse.getCourseId())); - } - } +// List ids=new ArrayList(); +// for(StudyCourse scourse:studyCouseDtos) { +// ids.add(scourse.getCourseId()); +// } +// Map maps = courseService.findImages(ids); +// for(StudyCourse scourse:studyCouseDtos) { +// if(maps.containsKey(scourse.getCourseId())) { +// scourse.setCourseImage((String)maps.get(scourse.getCourseId())); +// } +// } return success(studyCouseDtos); } @@ -569,16 +647,16 @@ public class StudyCourseApi extends ApiBaseController{ return badRequest("无关注人"); } List studyCouseDtos = service.followids(studyCourseQuery); - List ids=new ArrayList(); - for(StudyCourse scourse:studyCouseDtos) { - ids.add(scourse.getCourseId()); - } - Map maps = courseService.findImages(ids); - for(StudyCourse scourse:studyCouseDtos) { - if(maps.containsKey(scourse.getCourseId())) { - scourse.setCourseImage((String)maps.get(scourse.getCourseId())); - } - } +// List ids=new ArrayList(); +// for(StudyCourse scourse:studyCouseDtos) { +// ids.add(scourse.getCourseId()); +// } +// Map maps = courseService.findImages(ids); +// for(StudyCourse scourse:studyCouseDtos) { +// if(maps.containsKey(scourse.getCourseId())) { +// scourse.setCourseImage((String)maps.get(scourse.getCourseId())); +// } +// } return success(studyCouseDtos); } diff --git a/servers/boe-server-all/src/main/java/com/xboe/school/study/service/impl/StudyCourseServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/school/study/service/impl/StudyCourseServiceImpl.java index b379dc14..b84f1d49 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/school/study/service/impl/StudyCourseServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/school/study/service/impl/StudyCourseServiceImpl.java @@ -1,6 +1,20 @@ package com.xboe.school.study.service.impl; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import javax.transaction.Transactional; + +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + import com.xboe.common.OrderCondition; import com.xboe.common.PageList; import com.xboe.core.orm.FieldFilters; @@ -10,24 +24,21 @@ import com.xboe.core.orm.UpdateBuilder; import com.xboe.module.course.dao.CourseContentDao; import com.xboe.module.course.dao.CourseDao; import com.xboe.module.course.entity.Course; -import com.xboe.school.study.dao.*; +import com.xboe.school.study.dao.StudyAssessDao; +import com.xboe.school.study.dao.StudyCourseDao; +import com.xboe.school.study.dao.StudyCourseItemDao; +import com.xboe.school.study.dao.StudyExamDao; +import com.xboe.school.study.dao.StudyHomeWorkDao; +import com.xboe.school.study.dao.StudyScoreDao; +import com.xboe.school.study.dao.StudySignupDao; +import com.xboe.school.study.dao.StudyTimeDao; import com.xboe.school.study.dto.StudyCourseNameDto; import com.xboe.school.study.dto.StudyCourseQuery; -import com.xboe.school.study.dto.StudyCouseDto; import com.xboe.school.study.entity.StudyCourse; import com.xboe.school.study.entity.StudyCourseItem; import com.xboe.school.study.service.IStudyCourseService; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import javax.transaction.Transactional; -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; -import java.util.ArrayList; -import java.util.List; +import lombok.extern.slf4j.Slf4j; @Slf4j @Service @@ -272,19 +283,29 @@ public class StudyCourseServiceImpl implements IStudyCourseService{ builder.addFilter(FieldFilters.in("sc.courseId",studyCourseQuery.getIds())); builder.addOrder(OrderCondition.desc("sc.lastTime")); builder.addFields("sc"); -// try { -//// List listFields = studyCourseDao.(builder.builder()); -//// for (Object[] o:listFields) { -//// StudyCouseDto studyCouseDto = new StudyCouseDto(); -//// studyCouseDto.setCourseId((String) o[0]); -//// studyCouseDto.setProgress((Float) o[1]); -//// studyCouseDto.setLastTime((LocalDateTime) o[2]); -//// studyCouseDtos.add(studyCouseDto); -//// } - List list = studyCourseDao.findList(builder.builder()); - - - return list; + builder.addFields("c.score"); + builder.addFields("c.coverImg"); + //List list = studyCourseDao.findList(builder.builder()); + List rs=new ArrayList(); + Set checkSet=new HashSet(); + try { + List list= studyCourseDao.findListFields(builder.builder()); + for(Object[] objs:list) { + StudyCourse sc=(StudyCourse)objs[0]; + if(!checkSet.contains(sc.getCourseId())) { + Float score=(Float)objs[1]; + String img=(String)objs[2]; + sc.setLastScore(score); + sc.setCourseImage(img); + rs.add(sc); + checkSet.add(sc.getCourseId()); + } + } + return rs; + }catch(Exception e){ + log.error("",e); + } + return rs; } @Override @@ -295,6 +316,7 @@ public class StudyCourseServiceImpl implements IStudyCourseService{ @Override public List followids(StudyCourseQuery studyCourseQuery) { + //当前先这样查询,以后要修改,只查询需要的字段,另外 ,需要按课程分组,不然一门课程会查出很多记录出来 QueryBuilder builder = QueryBuilder.from(StudyCourse.class.getSimpleName()+" sc,"+ Course.class.getSimpleName()+" c"); builder.addFilter(FieldFilters.eqField("sc.courseId","c.id")); // builder.addFilter(FieldFilters.eq("c.enabled",true)); @@ -303,8 +325,29 @@ public class StudyCourseServiceImpl implements IStudyCourseService{ builder.addFilter(FieldFilters.in("sc.courseId",studyCourseQuery.getIds())); builder.addOrder(OrderCondition.desc("sc.lastTime")); builder.addFields("sc"); - List list = studyCourseDao.findList(builder.builder()); - return list; + builder.addFields("c.score"); + builder.addFields("c.coverImg"); + //List list = studyCourseDao.findList(builder.builder()); + List rs=new ArrayList(); + Set checkSet=new HashSet(); + try { + List list= studyCourseDao.findListFields(builder.builder()); + for(Object[] objs:list) { + StudyCourse sc=(StudyCourse)objs[0]; + if(!checkSet.contains(sc.getCourseId())) { + Float score=(Float)objs[1]; + String img=(String)objs[2]; + sc.setLastScore(score); + sc.setCourseImage(img); + rs.add(sc); + checkSet.add(sc.getCourseId()); + } + } + return rs; + }catch(Exception e){ + log.error("",e); + } + return rs; } @Override