diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/course/service/ICourseService.java b/servers/boe-server-all/src/main/java/com/xboe/module/course/service/ICourseService.java index 76e0d693..47fe360f 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/course/service/ICourseService.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/course/service/ICourseService.java @@ -341,8 +341,5 @@ public interface ICourseService { List mobiledelList(Integer num,CourseQueryDto courseQueryDto); - - - - + List findByIds(List courseIds); } 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 d53dc9f6..c4095a7c 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 @@ -14,6 +14,7 @@ import java.util.stream.Stream; import javax.annotation.Resource; import javax.management.Query; +import cn.hutool.core.collection.CollectionUtil; import com.xboe.api.ThirdApi; import com.xboe.core.orm.*; import com.xboe.school.study.dao.StudyCourseDao; @@ -1568,6 +1569,13 @@ public class CourseServiceImpl implements ICourseService { return list; } + @Override + public List findByIds(List courseIds) { + QueryBuilder query = QueryBuilder.from(Course.class); + query.addFilter(FieldFilters.in("id", courseIds)); + return courseDao.findList(query.builder()); + } + @Override public int countWaitAudit(String aid) { diff --git a/servers/boe-server-all/src/main/java/com/xboe/school/study/api/StudyCourseESApi.java b/servers/boe-server-all/src/main/java/com/xboe/school/study/api/StudyCourseESApi.java index e83a29e3..538115a5 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/school/study/api/StudyCourseESApi.java +++ b/servers/boe-server-all/src/main/java/com/xboe/school/study/api/StudyCourseESApi.java @@ -5,7 +5,13 @@ import java.time.LocalDateTime; import java.time.ZoneOffset; import java.util.ArrayList; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import cn.hutool.core.collection.CollectionUtil; +import com.xboe.module.course.entity.Course; +import com.xboe.module.course.service.ICourseService; +import org.apache.commons.compress.utils.Lists; import cn.hutool.core.collection.CollectionUtil; import com.alibaba.fastjson2.JSON; import com.xboe.core.orm.FieldFilters; @@ -15,6 +21,7 @@ import com.xboe.module.course.dto.RankingDto; import com.xboe.module.course.entity.Course; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -51,8 +58,14 @@ public class StudyCourseESApi extends ApiBaseController{ @Autowired IStudyCourseService service; - @Resource - private CourseDao courseDao; + @Autowired + ICourseService courseService; + + @Value("${xboe.upload.file.http_path}") + private String httpPath; + + @Value("${xboe.image.course.default}") + private String defaultCourseImage; @Resource private PhpOnlineStudyRecordScheduledTasks phpOnlineStudyRecordScheduledTasks; @@ -66,65 +79,61 @@ public class StudyCourseESApi extends ApiBaseController{ try { dto.setAccountId(getCurrent().getAccountId()); PageList rs=search.search(page.getStartRow(),page.getPageSize(), dto); - List list = rs.getList(); - List emptyIds = new ArrayList<>(); - log.info("test data gengxin CourseStudyDto list ==> {}", JSON.toJSONString(list)); - if(CollectionUtil.isNotEmpty(list)){ - log.info("test data gengxin CourseStudyDto isNotEmpty list ==> {}", JSON.toJSONString(list)); - //todo 过滤数据 - for(CourseStudyDto courseStudyDto : list){ - log.info("test data gengxin CourseStudyDto isNotEmpty item ==> {}", JSON.toJSONString(courseStudyDto)); - //在线课 录播课 - if(courseStudyDto.getCourseType() == 20 || courseStudyDto.getCourseType() == 21){ - if(StringUtils.isBlank(courseStudyDto.getCourseImage())){ - emptyIds.add(courseStudyDto.getCourseId()); - } - } - } - //todo 图片空返回结果 - List emptyImgCourseStudyDtos = new ArrayList(); - //在线课查询 - if(CollectionUtil.isNotEmpty(emptyIds)){ - QueryBuilder query = QueryBuilder.from(Course.class); - query.addFields("id","name","type","coverImg"); - //todo 确认下 是否是这个字段 - query.addFilter(FieldFilters.in("id",emptyIds)); - query.addFilter(FieldFilters.eq("enabled",true)); - query.addFilter(FieldFilters.eq("deleted",false)); - List listFields = courseDao.findListFields(query.builder()); - log.info("test data gengxin CourseStudyDto isNotEmpty listFields ==> {}", JSON.toJSONString(listFields)); - if(CollectionUtil.isNotEmpty(listFields)){ - for(Object[] objs : listFields) { - CourseStudyDto CourseStudyDtoResult=new CourseStudyDto(); - CourseStudyDtoResult.setId((String) objs[0]); - CourseStudyDtoResult.setCourseName((String)objs[1]); - CourseStudyDtoResult.setCourseType((Integer) objs[2]); - CourseStudyDtoResult.setCourseImage((String)objs[3]); - emptyImgCourseStudyDtos.add(CourseStudyDtoResult); - } - } - log.info("test data gengxin CourseStudyDto isNotEmpty emptyImgCourseStudyDtos ==> {}", JSON.toJSONString(emptyImgCourseStudyDtos)); + handleCourseImage(rs); - //todo 进行赋值处理 最外层 - emptyImgCourseStudyDtos.forEach(item -> { - list.forEach(subjectItem -> { - if(item.getCourseId().equals(subjectItem.getCourseId())){ - //赋值 - subjectItem.setCourseImage(item.getCourseImage()); - } - }); - }); - log.info("test data gengxin CourseStudyDto isNotEmpty result ==> {}", JSON.toJSONString(list)); - } - } return success(rs); }catch(Exception e) { log.error("查询报名学习ES失败",e); return error("查询失败",e.getMessage()); } } - + + private void handleCourseImage(PageList rs) { + if (rs == null || CollectionUtil.isEmpty(rs.getList())) { + return; + } + + List emptyImageCourseIds = Lists.newArrayList(); + for(CourseStudyDto courseStudyDto : rs.getList()) { + if(StringUtils.isBlank(courseStudyDto.getCourseImage())) { + // 过滤课程类型 + if(courseStudyDto.getCourseType()==10 + || courseStudyDto.getCourseType()==20){ + emptyImageCourseIds.add(courseStudyDto.getCourseId()); + }else{ + log.warn("课程图片为空,课程id为:{},课程类型:{}",courseStudyDto.getCourseId(),courseStudyDto.getCourseType()); + } + } + } + + if(CollectionUtil.isEmpty(emptyImageCourseIds)){ + return; + } + + List courseList = courseService.findByIds(emptyImageCourseIds); + if(CollectionUtil.isNotEmpty(courseList)){ + // courseList转换成map + Map courseMap = courseList.stream().collect(Collectors.toMap(Course::getId, course -> course)); + + // 赋值ES图片 + for(CourseStudyDto courseStudyDto : rs.getList()) { + if(emptyImageCourseIds.contains(courseStudyDto.getCourseId())) { + Course currentCourse = courseMap.get(courseStudyDto.getCourseId()); + if(null!=currentCourse){ + if(StringUtils.isNotBlank(currentCourse.getCoverImg())){ + // 拼接域名 + courseStudyDto.setCourseImage(httpPath + currentCourse.getCoverImg()); + }else{ + // 赋值默认图片 + courseStudyDto.setCourseImage(defaultCourseImage); + } + } + } + } + } + } + @RequestMapping(value="/list-by-ids",method = {RequestMethod.POST}) public JsonResponse> search(@RequestBody List ids){ if(ids.isEmpty()) { diff --git a/servers/boe-server-all/src/main/resources/application-dev.yml b/servers/boe-server-all/src/main/resources/application-dev.yml index 2cc0a45f..ce14272e 100644 --- a/servers/boe-server-all/src/main/resources/application-dev.yml +++ b/servers/boe-server-all/src/main/resources/application-dev.yml @@ -76,6 +76,9 @@ xboe: encryptor: algorithm: PBEWithMD5AndDES iv-generator-classname: org.jasypt.iv.NoIvGenerator + image: + course: + default: http://192.168.0.253/pc/images/bgimg/course.png xxl: job: accessToken: 65ddc683-22f5-83b4-de3a-3c97a0a29af0 diff --git a/servers/boe-server-all/src/main/resources/application-pre.yml b/servers/boe-server-all/src/main/resources/application-pre.yml index b22b6291..f8fa90ce 100644 --- a/servers/boe-server-all/src/main/resources/application-pre.yml +++ b/servers/boe-server-all/src/main/resources/application-pre.yml @@ -108,7 +108,9 @@ xboe: from: boeu_learning@boe.com.cn user: security: - + image: + course: + default: http://10.251.132.75/pc/images/bgimg/course.png jasypt: encryptor: algorithm: PBEWithMD5AndDES diff --git a/servers/boe-server-all/src/main/resources/application-prod.yml b/servers/boe-server-all/src/main/resources/application-prod.yml index 29c738dc..8d6a8177 100644 --- a/servers/boe-server-all/src/main/resources/application-prod.yml +++ b/servers/boe-server-all/src/main/resources/application-prod.yml @@ -74,6 +74,9 @@ xboe: encryptor: algorithm: PBEWithMD5AndDES iv-generator-classname: org.jasypt.iv.NoIvGenerator + image: + course: + default: https://u.boe.com/pc/images/bgimg/course.png xxl: job: accessToken: 65ddc683-22f5-83b4-de3a-3c97a0a29af0 diff --git a/servers/boe-server-all/src/main/resources/application-test.yml b/servers/boe-server-all/src/main/resources/application-test.yml index 11432fe4..756b323d 100644 --- a/servers/boe-server-all/src/main/resources/application-test.yml +++ b/servers/boe-server-all/src/main/resources/application-test.yml @@ -108,7 +108,9 @@ xboe: from: boeu_learning@boe.com.cn user: security: - + image: + course: + default: http://10.251.186.27/pc/images/bgimg/course.png jasypt: encryptor: algorithm: PBEWithMD5AndDES