This commit is contained in:
daihh
2022-10-22 18:44:51 +08:00
5 changed files with 75 additions and 11 deletions

View File

@@ -6,6 +6,7 @@ import java.util.stream.Collectors;
import com.xboe.core.CurrentUser;
import com.xboe.module.interaction.dto.*;
import com.xboe.school.study.service.IStudyCourseService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -39,6 +40,9 @@ public class FavoritesApi extends ApiBaseController {
@Autowired
ICourseTeacherService ctService;
@Autowired
IStudyCourseService studyCourseService;
/**
* 此处的查询需要再讨论一下,因为有不同的内容,前端呈现的也不一样
*
@@ -112,12 +116,12 @@ public class FavoritesApi extends ApiBaseController {
public JsonResponse<PageList<FavoriteDto>> findCoursePage(Pagination pager, Favorites favorites, Integer type, String keyword) {
String aid = this.getCurrent().getAccountId();
PageList<FavoriteDto> coursePage = service.findCoursePage(pager.getPageIndex(), pager.getPageSize(), favorites, type, keyword,aid);
Set<String> cids = new HashSet<String>();
for(FavoriteDto dto : coursePage.getList()) {
if(!cids.contains(dto.getObjId())) {
cids.add(dto.getObjId());
}
}
// Set<String> cids = new HashSet<String>();
// for(FavoriteDto dto : coursePage.getList()) {
// if(!cids.contains(dto.getObjId())) {
// cids.add(dto.getObjId());
// }
// }
// if(cids.size()>0) {
//// List<CourseTeacherDto> teachers = ctService.queryTeacher(cids);
//// for(FavoriteDto fdto : coursePage.getList()){
@@ -128,7 +132,19 @@ public class FavoritesApi extends ApiBaseController {
//// }
//// }
// }
List<String> courseIds = coursePage.getList().stream().map(FavoriteDto::getObjId).collect(Collectors.toList());
List<Object[]> progress = studyCourseService.progress(aid, courseIds);
if(!coursePage.getList().isEmpty() && !progress.isEmpty()) {
for (FavoriteDto dto : coursePage.getList()) {
for (Object[] o : progress) {
if (dto.getObjId().equals(o[0])) {
dto.setProgress((Float) o[1]);
}
}
}
}
return success(coursePage);
}
@@ -206,6 +222,20 @@ public class FavoritesApi extends ApiBaseController {
public JsonResponse<PageList<FavoriteTotalDto>> queryAll(Pagination pager,String keyword){
String aid = this.getCurrent().getAccountId();
PageList<FavoriteTotalDto> favoriteTotalDtoPageList = service.queryAll(pager.getPageIndex(), pager.getPageSize(), aid, keyword);
List<String> courseIds = favoriteTotalDtoPageList.getList().stream().filter(favoriteTotalDto -> favoriteTotalDto.getType() == 1).
map(FavoriteTotalDto::getId).collect(Collectors.toList());
List<Object[]> progress = studyCourseService.progress(aid, courseIds);
if(!favoriteTotalDtoPageList.getList().isEmpty() && !progress.isEmpty()) {
for (FavoriteTotalDto dto : favoriteTotalDtoPageList.getList()) {
for (Object[] o : progress) {
if (dto.getId().equals(o[0])) {
dto.setProgress((Float) o[1]);
}
}
}
}
return success(favoriteTotalDtoPageList);
}

View File

@@ -65,5 +65,10 @@ public class FavoriteDto {
/**针对于问题是否已解决*/
private Boolean isResolve;
/**
* 学习进度
* */
private Float progress;
}

View File

@@ -81,6 +81,11 @@ public class FavoriteTotalDto {
* */
private Integer breCommend;
/**
* 学习进度
* */
private Float progress;
public FavoriteTotalDto() {
}

View File

@@ -74,4 +74,9 @@ public interface IStudyCourseService {
* */
List<StudyCourse> followids(StudyCourseQuery studyCourseQuery);
/**
* 查询课程最新学习记录的进度
* */
List<Object[]> progress(String aid,List<String> courseIds);
}

View File

@@ -266,8 +266,8 @@ public class StudyCourseServiceImpl implements IStudyCourseService{
// List<StudyCouseDto> studyCouseDtos = new ArrayList<>();
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));
builder.addFilter(FieldFilters.eq("c.deleted",false));
// builder.addFilter(FieldFilters.eq("c.enabled",true));
// builder.addFilter(FieldFilters.eq("c.deleted",false));
builder.addFilter(FieldFilters.eq("sc.aid",studyCourseQuery.getAid()));
builder.addFilter(FieldFilters.in("sc.courseId",studyCourseQuery.getIds()));
builder.addOrder(OrderCondition.desc("sc.lastTime"));
@@ -297,8 +297,8 @@ public class StudyCourseServiceImpl implements IStudyCourseService{
public List<StudyCourse> 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));
builder.addFilter(FieldFilters.eq("c.deleted",false));
// builder.addFilter(FieldFilters.eq("c.enabled",true));
// builder.addFilter(FieldFilters.eq("c.deleted",false));
builder.addFilter(FieldFilters.in("sc.aid",studyCourseQuery.getAids()));
builder.addFilter(FieldFilters.in("sc.courseId",studyCourseQuery.getIds()));
builder.addOrder(OrderCondition.desc("sc.lastTime"));
@@ -307,6 +307,25 @@ public class StudyCourseServiceImpl implements IStudyCourseService{
return list;
}
@Override
public List<Object[]> progress(String aid, List<String> courseIds) {
List<Object> floats = new ArrayList<>();
QueryBuilder builder = QueryBuilder.from(StudyCourse.class);
builder.addFilter(FieldFilters.eq("aid",aid));
builder.addFilter(FieldFilters.in("courseId",courseIds));
builder.addOrder(OrderCondition.desc("lastTime"));
// builder.setPageSize(1);
// builder.addGroupBy("aid");
builder.addFields("courseId","progress");
try {
List<Object[]> listFields = studyCourseDao.findListFields(builder.builder());
return listFields;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
public StudyCourse has(String courseId, String aid) {
List<StudyCourse> list=studyCourseDao.findList(1,OrderCondition.desc("id"),FieldFilters.eq("courseId", courseId),FieldFilters.eq("aid", aid));