From 41649aa32d1a5175e0f247591666eb818485eb93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=8D=93=E7=85=9C?= <2210102150@qq.com> Date: Wed, 20 Aug 2025 17:22:08 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=AE=A1=E7=90=86=E7=AB=AF?= =?UTF-8?q?=E5=9C=A8=E7=BA=BF=E8=AF=BE=E7=A8=8B=E6=B7=BB=E5=8A=A0=E6=A0=87?= =?UTF-8?q?=E7=AD=BE=E6=B2=A1=E6=9C=89=E4=BC=A0=E9=80=92=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/CourseServiceImpl.java | 138 ++++++++++++++++-- 1 file changed, 128 insertions(+), 10 deletions(-) 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 6e7e311b..2d81cf41 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 @@ -16,11 +16,21 @@ import javax.annotation.Resource; import javax.management.Query; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.http.HttpRequest; +import cn.hutool.http.HttpResponse; +import cn.hutool.http.HttpUtil; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson2.JSON; import com.xboe.api.ThirdApi; import com.xboe.core.orm.*; +import com.xboe.module.course.dto.CourseTagRelationDto; +import com.xboe.module.course.entity.*; +import com.xboe.module.course.service.ICourseTagService; import com.xboe.school.study.dao.StudyCourseDao; import com.xboe.school.study.entity.StudyCourse; import org.apache.commons.lang3.StringUtils; +import org.apache.http.client.HttpClient; import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.index.query.BoolQueryBuilder; @@ -53,12 +63,6 @@ import com.xboe.module.course.dao.CourseUpdateLogDao; import com.xboe.module.course.dto.CourseFullDto; import com.xboe.module.course.dto.CourseQueryDto; import com.xboe.module.course.dto.RankingDto; -import com.xboe.module.course.entity.Course; -import com.xboe.module.course.entity.CourseCrowd; -import com.xboe.module.course.entity.CourseHRBPAudit; -import com.xboe.module.course.entity.CourseSection; -import com.xboe.module.course.entity.CourseTeacher; -import com.xboe.module.course.entity.CourseUpdateLog; import com.xboe.module.course.service.ICourseFullTextSearch; import com.xboe.module.course.service.ICourseService; import com.xboe.module.interaction.service.ICourseGradeService; @@ -98,7 +102,8 @@ public class CourseServiceImpl implements ICourseService { @Resource private CourseHRBPAuditDao courseHRBPAuditDao; - + @Resource + private ICourseTagService courseTagService; @Resource private SysLogAuditDao logAuditDao;//审核日志记录 @@ -124,8 +129,6 @@ public class CourseServiceImpl implements ICourseService { @Resource RestHighLevelClient restHighLevelClient; - - /** * 生成过滤条件 @@ -978,7 +981,6 @@ public class CourseServiceImpl implements ICourseService { Course c = full.getCourse();//当前的课程信息 Course nowCourse = courseDao.get(c.getId());//修改之前的课程信息 - StringBuffer stringBuffer = new StringBuffer("["); //追加日志内容 appendUpdateLog(stringBuffer, nowCourse, c); @@ -996,6 +998,21 @@ public class CourseServiceImpl implements ICourseService { if (c.getVisible() == null) { c.setVisible(true); } + if (c.getTags() != null && !c.getTags().isEmpty()){ + CourseTagRelationDto courseTagRelationDto = new CourseTagRelationDto(); + courseTagRelationDto.setCourseId(c.getId()); + courseTagRelationDto.setSysType1(c.getSysType1()); + courseTagRelationDto.setSysType2(c.getSysType2()); + courseTagRelationDto.setSysType3(c.getSysType3()); + String tags = c.getTags(); + List tagList = courseTagService.getTagsByIds(tags); + if (ObjectUtil.isNotEmpty(tagList)){ + for (CourseTag tag : tagList) { + courseTagRelationDto.setTagName(tag.getTagName()); + courseTagService.createTag(courseTagRelationDto); + } + } + } courseDao.update(c); c.setSysVersion(courseDao.getVersion(c.getId())); full.getCourse().setSysVersion(c.getSysVersion()); @@ -1997,7 +2014,108 @@ public class CourseServiceImpl implements ICourseService { return courseDao.findListByHql("Select new Course(id,studys,score) from Course where id in(?1)", ids); } + private class Result{ + private Boolean success; + private Data data; + private class Data{ + private List> result; + public List> getResult() { + return result; + } + + public void setResult(List> result) { + this.result = result; + } + } + + public void setData(Data data) { + this.data = data; + } + + public Boolean getSuccess() { + return success; + } + + public void setSuccess(Boolean success) { + this.success = success; + } + + public Data getData() { + return data; + } + } + + @Override + public void getPhpCourseData() { + HttpRequest request = HttpUtil.createGet("https://u.boe.com/api/b1/new-employee/course-list"); + HttpResponse response = request.execute(); + String body = response.body(); + Result result = JSON.parseObject(body,Result.class); + log.info("php课程数据获取成功"); + List> phpCourseDataList = result.getData().getResult(); + for (Map phpCourseData : phpCourseDataList){ + log.info("开始同步数据:"+phpCourseData.get("course_name")); + } + List> phpStudyCourseList = null; + // 查询数据库中是否存在php课程数据 + for (int i = 0; i < phpCourseDataList.size(); i++) { + // 查询php的课程数据在数据库中是否已经存在 + String phpCourseName = (String) phpCourseDataList.get(i).get("course_name"); + Boolean exist = isCourseName(phpCourseName,""); + if (!exist){ + log.info(phpCourseName+"不存在,开始同步"); + Course newCourse = new Course(); + // 设置学习人数 + int studys = Integer.parseInt(phpCourseDataList.get(i).get("learned_number").toString()); + newCourse.setStudys(studys); + // 设置系统版本 + int version = Integer.parseInt(phpCourseDataList.get(i).get("version").toString()); + newCourse.setSysVersion(version); + // 设置电脑端还是手机端可见 + int pcDevice = Integer.parseInt(phpCourseDataList.get(i).get("is_display_pc").toString()); + int mobileDevice = Integer.parseInt(phpCourseDataList.get(i).get("is_display_mobile").toString()); + if (pcDevice == 1 && mobileDevice == 1){ + newCourse.setDevice(3); + } else if (pcDevice == 0 && mobileDevice == 1) { + newCourse.setDevice(2); + }else if(pcDevice == 1 && mobileDevice == 0){ + newCourse.setDevice(1); + } + // 判断是否按照顺序学习 + int orderStudy = Integer.parseInt(phpCourseDataList.get(i).get("mod_type").toString()); + newCourse.setOrderStudy(orderStudy == 1 ? true : false); + // 设置课程简介 + String summary = (String) phpCourseDataList.get(i).get("course_desc_nohtml"); + newCourse.setSummary(summary); + // 设置课程类型 + int courseType = Integer.parseInt(phpCourseDataList.get(i).get("course_type").toString()); + newCourse.setType(courseType == 0 ? 20 : 30); + // 设置学习时长 + int courseTime = Integer.parseInt(phpCourseDataList.get(i).get("course_period").toString()); + newCourse.setStudyTime(courseTime); + // 设置课程封面 + newCourse.setCoverImg("https://u.boe.com/pc/images/bgimg/course.png"); + newCourse.setName(phpCourseName); + newCourse.setStatus(5); + newCourse.setComments(0); + newCourse.setDeleted(false); + newCourse.setEnabled(true); + newCourse.setFavorites(0); + newCourse.setIsTop(false); + newCourse.setViews(0); + newCourse.setPraises(0); + newCourse.setTrampleCount(0); + newCourse.setShares(0); + newCourse.setScore(0f); + + courseDao.save(newCourse); + }else { + log.info(phpCourseName+"存在"); + } + } + + } @Override public void deletedStudyResourceBatchByCourseIdAndType(String courseId, Integer courseType) { DeleteByQueryRequest request = new DeleteByQueryRequest("new_study_resource");