From 90c044dba4f5cbcd6deea254b3e496fd8e73ebe6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?yang=E5=BA=B71999?= <1175164221@qq.com> Date: Fri, 1 Mar 2024 12:51:28 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A6=96=E9=A1=B5=E6=90=9C=E7=B4=A2=EF=BC=8C?= =?UTF-8?q?=E9=9D=A2=E6=8E=88=E8=AF=BE=E5=A4=9A=E8=AE=B2=E5=B8=88=E7=9B=B8?= =?UTF-8?q?=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/course/api/CourseFullTextApi.java | 128 +++++++++++++++++- 1 file changed, 121 insertions(+), 7 deletions(-) diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/course/api/CourseFullTextApi.java b/servers/boe-server-all/src/main/java/com/xboe/module/course/api/CourseFullTextApi.java index 1b649c5c..e583a15e 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/course/api/CourseFullTextApi.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/course/api/CourseFullTextApi.java @@ -1,19 +1,22 @@ package com.xboe.module.course.api; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Objects; +import java.util.*; +import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Opt; +import com.fasterxml.jackson.core.JsonProcessingException; import com.xboe.api.ThirdApi; import com.xboe.data.dto.UserData; import com.xboe.data.outside.IOutSideDataService; +import com.xboe.module.course.vo.TeacherVo; import com.xboe.school.study.entity.StudyCourse; import com.xboe.school.study.service.IStudyCourseService; import com.xboe.system.organization.service.IOrganizationService; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -68,6 +71,8 @@ public class CourseFullTextApi extends ApiBaseController{ @Autowired IOutSideDataService outsideDataService; + @Autowired + StringRedisTemplate redisTemplate; /** * 课程的初始化 @@ -217,8 +222,7 @@ public class CourseFullTextApi extends ApiBaseController{ * @return */ @PostMapping("/search") - public JsonResponse> search(Pagination pager, CourseQueryDto dto, Integer minDuration, Integer maxDuration, HttpServletRequest request){ - + public JsonResponse> search(Pagination pager, CourseQueryDto dto, Integer minDuration, Integer maxDuration, HttpServletRequest request) throws JsonProcessingException { //获取例外人员id List userId = thirdApi.getUserId(); log.info("获取例外人员id userId = " + userId ); @@ -226,6 +230,13 @@ public class CourseFullTextApi extends ApiBaseController{ // String userIds="132,123"; //获取没报名课程的id String token = request.getHeader("Xboe-Access-Token"); + Listlist = new ArrayList<>(); + list.add("123"); + List teacherInfo = thirdApi.getTeacherInfo(list, token); + List teacherCode = thirdApi.getTeacherInfoByCode(list, token); + log.info("测试根据id获取到的教师信息="+teacherInfo); + log.info("测试根据Code获取到的教师信息="+teacherCode); + // if (StringUtils.isEmpty(token)) { token = request.getHeader("token"); } @@ -317,6 +328,41 @@ public class CourseFullTextApi extends ApiBaseController{ clist=courseService.findStudysScoreByIds(cids); } List teachers = courseService.findTeachersByCourseIds(ids); + //教师id + List teacherIds =new ArrayList<>(); + for(CourseFullText course :coursePageList.getList()) { + for (CourseTeacher ct : teachers) { + if (ct.getCourseId().equals(course.getId())) { + teacherIds.add(ct.getTeacherId()); + } + } + } + + //为面授课的时候 + if (teachers.size() == 0) { + for (CourseFullText courseFullText : coursePageList.getList()) { + List singleTeacherNameList = Arrays.asList(courseFullText.getTeacher().split(",")); + List singleTeacherCodeList = Arrays.asList(courseFullText.getTeacherCode().split(",")); + log.info("课程name="+courseFullText.getName()); + for (int i=0;i coursePageList) { + log.info("获取教师信息通过工号 "); + List teacherCoeds = new ArrayList<>(); + for (CourseFullText courseFullText : coursePageList.getList()) { + teacherCoeds.add(courseFullText.getTeacherCode()); + } + if(!teacherCoeds.isEmpty()) { + List teacherInfoByCode = thirdApi.getTeacherInfoByCode(teacherCoeds, token); + if(teacherInfoByCode.size()!=0){ + for (TeacherVo teacherVo : teacherInfoByCode) { + redisTemplate.opsForValue().set(teacherVo.getTeacherCode(), teacherVo.getStatus()); + //设置过期时间为1天 + redisTemplate.expire(teacherVo.getTeacherCode(), 24 * 60 * 60, TimeUnit.SECONDS); + } + } + + } + } + + private void getTeacherInfo(String token, List teacherIds) { + List teacherInfo = thirdApi.getTeacherInfo(teacherIds, token); +// log.info("根据教师id查询教师信息 teacherInfo = " + teacherInfo); +// log.info("根据教师id查询教师信息 teacherInfo.size = " + teacherInfo.size()); + if(teacherInfo== null){ + log.info("根据教师id查询教师信息 teacherInfo = " + teacherInfo); + }else { + //将teacherInfo中的teacherId作为key和status作为value存到redis中 + for (TeacherVo teacherVo : teacherInfo) { + //teacherVo.getTeacherId()存到redis中 + redisTemplate.opsForValue().set(teacherVo.getTeacherId(), teacherVo.getStatus()); + //设置过期时间为1天 + redisTemplate.expire(teacherVo.getTeacherId(), 24 * 60 * 60, TimeUnit.SECONDS); + } + } + + } + + private void syncTeacherStatusToRedis(String token, PageList coursePageList) { + List allTeacherCodeList = Opt.ofEmptyAble(coursePageList.getList()).stream().flatMap(Collection::stream) + .flatMap(courseFullText -> { + return Arrays.asList(courseFullText.getTeacherCode().split(",")).stream(); + }).collect(Collectors.toList()); + log.info("同步教师状态到redis allTeacherCodeList = " + allTeacherCodeList); + //用户中心接口,根据工号获取人员信息 + List TeacherVoList = thirdApi.getTeacherInfoByCode(allTeacherCodeList, token); + log.info("同步教师状态到redis TeacherVoList = " + TeacherVoList); + if (CollectionUtil.isNotEmpty(TeacherVoList)) { + for (TeacherVo teacherVo : TeacherVoList) { + redisTemplate.opsForValue().set(teacherVo.getTeacherCode(), teacherVo.getStatus()); + //设置过期时间为1天 + redisTemplate.expire(teacherVo.getTeacherCode(), 24 * 60 * 60, TimeUnit.SECONDS); + } + } + } + }