mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/per-boe/java-servers.git
synced 2025-12-09 02:46:50 +08:00
Compare commits
9 Commits
250701-add
...
20250912-t
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
967bf09659 | ||
|
|
3cc653e121 | ||
|
|
300d38f974 | ||
|
|
fa9d80d4a5 | ||
|
|
fb9377d0fa | ||
|
|
2da2112993 | ||
|
|
29a296577d | ||
|
|
d0ed822189 | ||
|
|
06015e90c7 |
@@ -412,8 +412,24 @@ public class CourseFullTextApi extends ApiBaseController{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// 获取课程对应的标签
|
||||
for (CourseFullText c : coursePageList.getList()){
|
||||
String tags = c.getTags();
|
||||
String[] split = tags.split(",",0);
|
||||
List<String> courseTagIds = new ArrayList<>();
|
||||
for (String tagId : split) {
|
||||
courseTagIds.add(tagId);
|
||||
}
|
||||
List<CourseTag> courseTags = courseTagService.getTagsByTagIds(courseTagIds);
|
||||
List<Map<String,Object>> tagList = new ArrayList<>();
|
||||
for (CourseTag courseTag : courseTags) {
|
||||
Map<String,Object> tag = new HashMap<>();
|
||||
tag.put("tagName", courseTag.getTagName());
|
||||
tag.put("id", courseTag.getId());
|
||||
tagList.add(tag);
|
||||
}
|
||||
c.setTagList(tagList);
|
||||
}
|
||||
return success(coursePageList);
|
||||
}catch(Exception e) {
|
||||
log.error("课程全文检索错误",e);
|
||||
|
||||
@@ -99,9 +99,8 @@ public class CourseTagApi extends ApiBaseController {
|
||||
* @return
|
||||
*/
|
||||
@RequestMapping(value="/changeHotStatus",method= RequestMethod.POST)
|
||||
public JsonResponse<Void> changeHotStatus(Long id,Boolean isHot){
|
||||
courseTagService.changeHotStatus(id,isHot);
|
||||
return success(null);
|
||||
public JsonResponse<Boolean> changeHotStatus(Long id,Boolean isHot){
|
||||
return courseTagService.changeHotStatus(id,isHot);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -113,4 +113,12 @@ public class CourseTagRelationDao extends BaseDao<CourseTagRelation> {
|
||||
.collect(Collectors.toList());
|
||||
return new PageList<CourseTagRelationDto>(list,totalresults!=null?totalresults.size():0);
|
||||
}
|
||||
|
||||
public boolean countHotTags() {
|
||||
String sql = "SELECT COUNT(*) FROM boe_course_tag WHERE is_hot = 1";
|
||||
Query query = entityManager.createNativeQuery(sql);
|
||||
Object result = query.getSingleResult();
|
||||
long count = Long.parseLong(result.toString());
|
||||
return count >= 10;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package com.xboe.module.course.dto;
|
||||
|
||||
import com.xboe.module.course.entity.CourseTag;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
@@ -142,5 +141,4 @@ public class CourseQueryDto {
|
||||
private String userId;
|
||||
|
||||
private String tags;
|
||||
|
||||
}
|
||||
|
||||
@@ -343,6 +343,4 @@ public interface ICourseService {
|
||||
|
||||
List<Course> findByIds(List<String> courseIds);
|
||||
void deletedStudyResourceBatchByCourseIdAndType(String courseId,Integer courseType);
|
||||
|
||||
void getPhpCourseData();
|
||||
}
|
||||
|
||||
@@ -2,16 +2,10 @@ package com.xboe.module.course.service;
|
||||
|
||||
import com.xboe.common.OrderCondition;
|
||||
import com.xboe.common.PageList;
|
||||
import com.xboe.core.CurrentUser;
|
||||
import com.xboe.core.JsonResponse;
|
||||
import com.xboe.core.orm.IFieldFilter;
|
||||
import com.xboe.module.article.entity.Article;
|
||||
import com.xboe.module.course.dto.CourseTagQueryDto;
|
||||
import com.xboe.module.course.dto.CourseTagRelationDto;
|
||||
import com.xboe.module.course.entity.CourseTag;
|
||||
import com.xboe.module.course.entity.CourseTagRelation;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -48,11 +42,12 @@ public interface ICourseTagService {
|
||||
|
||||
/**
|
||||
* 修改指定id的课程标签的热点属性
|
||||
*
|
||||
* @param id
|
||||
* @param isHot
|
||||
* @return
|
||||
*/
|
||||
void changeHotStatus(Long id,Boolean isHot);
|
||||
JsonResponse<Boolean> changeHotStatus(Long id, Boolean isHot);
|
||||
|
||||
/**
|
||||
* 解除指定id的课程和某个标签之间的关联关系
|
||||
@@ -89,4 +84,8 @@ public interface ICourseTagService {
|
||||
List<CourseTag> getTagsByIds(String id);
|
||||
|
||||
CourseTag getTagByName(String tagName);
|
||||
|
||||
void bindTag(String id, String tags);
|
||||
|
||||
List<CourseTag> getTagsByTagIds(List<String> courseTagIds);
|
||||
}
|
||||
|
||||
@@ -16,21 +16,12 @@ 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;
|
||||
@@ -63,6 +54,12 @@ 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;
|
||||
@@ -129,6 +126,8 @@ public class CourseServiceImpl implements ICourseService {
|
||||
|
||||
@Resource
|
||||
RestHighLevelClient restHighLevelClient;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 生成过滤条件
|
||||
@@ -494,7 +493,7 @@ public class CourseServiceImpl implements ICourseService {
|
||||
String sql = "SELECT DISTINCT\n" +
|
||||
"rt.course_id\n" +
|
||||
"FROM\n" +
|
||||
"boe_new.student s INNER JOIN boe_new.router_task rt on s.pid=rt.router_id inner join boe_course c on c.id=rt.course_id\n" +
|
||||
"boe.student s INNER JOIN boe.router_task rt on s.pid=rt.router_id inner join boe_course c on c.id=rt.course_id\n" +
|
||||
"\n" +
|
||||
"WHERE\n" +
|
||||
"\n" +
|
||||
@@ -517,7 +516,7 @@ public class CourseServiceImpl implements ICourseService {
|
||||
String sql = "SELECT DISTINCT\n" +
|
||||
"pt.course_id\n" +
|
||||
"FROM\n" +
|
||||
"boe_new.student s INNER JOIN boe_new.project_task pt on s.pid=pt.project_id inner join boe_course c on c.id=pt.course_id\n" +
|
||||
"boe.student s INNER JOIN boe.project_task pt on s.pid=pt.project_id inner join boe_course c on c.id=pt.course_id\n" +
|
||||
"\n" +
|
||||
"WHERE\n" +
|
||||
"\n" +
|
||||
@@ -574,8 +573,8 @@ public class CourseServiceImpl implements ICourseService {
|
||||
String sql = "SELECT DISTINCT\n" +
|
||||
"\tc.id \n" +
|
||||
"FROM\n" +
|
||||
"\tboe_new.student s\n" +
|
||||
"\tINNER JOIN boe_new.grow_task gt ON s.pid = gt.grow_id\n" +
|
||||
"\tboe.student s\n" +
|
||||
"\tINNER JOIN boe.grow_task gt ON s.pid = gt.grow_id\n" +
|
||||
"\tINNER JOIN boe_course c ON gt.course_id = c.id \n" +
|
||||
"WHERE\n" +
|
||||
"\ts.type = 14 \n" +
|
||||
@@ -981,6 +980,7 @@ public class CourseServiceImpl implements ICourseService {
|
||||
|
||||
Course c = full.getCourse();//当前的课程信息
|
||||
Course nowCourse = courseDao.get(c.getId());//修改之前的课程信息
|
||||
|
||||
StringBuffer stringBuffer = new StringBuffer("[");
|
||||
//追加日志内容
|
||||
appendUpdateLog(stringBuffer, nowCourse, c);
|
||||
@@ -998,21 +998,6 @@ 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<CourseTag> 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());
|
||||
@@ -1039,7 +1024,9 @@ public class CourseServiceImpl implements ICourseService {
|
||||
publishUtil.removeByDocId(c.getFullTextId());
|
||||
|
||||
}
|
||||
|
||||
// 添加课程对应的标签
|
||||
String tags = full.getCourse().getTags();
|
||||
courseTagService.bindTag(c.getId(), tags);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -2014,108 +2001,7 @@ 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<Map<String,Object>> result;
|
||||
|
||||
public List<Map<String, Object>> getResult() {
|
||||
return result;
|
||||
}
|
||||
|
||||
public void setResult(List<Map<String, Object>> 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<Map<String,Object>> phpCourseDataList = result.getData().getResult();
|
||||
for (Map<String, Object> phpCourseData : phpCourseDataList){
|
||||
log.info("开始同步数据:"+phpCourseData.get("course_name"));
|
||||
}
|
||||
List<Map<String,Object>> 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");
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.xboe.module.course.service.impl;
|
||||
|
||||
import com.xboe.common.OrderCondition;
|
||||
import com.xboe.common.PageList;
|
||||
import com.xboe.core.JsonResponse;
|
||||
import com.xboe.core.orm.FieldFilters;
|
||||
import com.xboe.core.orm.IFieldFilter;
|
||||
import com.xboe.core.orm.QueryBuilder;
|
||||
@@ -14,7 +15,6 @@ import com.xboe.module.course.entity.Course;
|
||||
import com.xboe.module.course.entity.CourseTag;
|
||||
import com.xboe.module.course.entity.CourseTagRelation;
|
||||
import com.xboe.module.course.entity.CourseTypeTagRelation;
|
||||
import com.xboe.module.course.service.ICourseService;
|
||||
import com.xboe.module.course.service.ICourseTagService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
@@ -40,7 +40,6 @@ public class CourseTagServiceImpl implements ICourseTagService {
|
||||
PublishCourseUtil publishUtil;
|
||||
@Resource
|
||||
private CourseTagRelationDao courseTagRelationDao;
|
||||
|
||||
@Resource
|
||||
private CourseTypeTagRelationDao courseTypeTagRelationDao;
|
||||
@Resource
|
||||
@@ -106,18 +105,32 @@ public class CourseTagServiceImpl implements ICourseTagService {
|
||||
|
||||
/**
|
||||
* 修改指定id的课程标签的热点属性
|
||||
*
|
||||
* @param id
|
||||
* @param isHot
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public void changeHotStatus(Long id, Boolean isHot) {
|
||||
public JsonResponse<Boolean> changeHotStatus(Long id, Boolean isHot) {
|
||||
// 当标签切换为热点标签时才会判断,超过十个热点标签则禁止设置
|
||||
JsonResponse<Boolean> objectJsonResponse = new JsonResponse<>();
|
||||
if (isHot){
|
||||
if (courseTagRelationDao.countHotTags()){
|
||||
objectJsonResponse.setStatus(400);
|
||||
objectJsonResponse.setMessage("超过十个热点标签,无法进行设置");
|
||||
objectJsonResponse.setResult(false);
|
||||
return objectJsonResponse;
|
||||
}
|
||||
}
|
||||
CourseTag courseTag = courseTagDao.findOne(FieldFilters.eq("id", String.valueOf(id)));
|
||||
if (courseTag!=null){
|
||||
courseTag.setIsHot(isHot);
|
||||
courseTag.setLastSetHotTime(isHot?LocalDateTime.now():null);
|
||||
courseTagDao.update(courseTag);
|
||||
}
|
||||
objectJsonResponse.setStatus(200);
|
||||
objectJsonResponse.setMessage("修改成功");
|
||||
return objectJsonResponse;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -197,13 +210,13 @@ public class CourseTagServiceImpl implements ICourseTagService {
|
||||
courseTag.setTagName(tagName);
|
||||
courseTag.setIsPublic(false);
|
||||
courseTag.setIsHot(false);
|
||||
courseTag.setUseCount(1);
|
||||
courseTag.setUseCount(0);
|
||||
courseTagDao.save(courseTag);
|
||||
//新建一条标签和课程的关联关系
|
||||
CourseTagRelation courseTagRelation = new CourseTagRelation();
|
||||
courseTagRelation.setTagId(Long.valueOf(courseTag.getId()));
|
||||
courseTagRelation.setCourseId(courseId);
|
||||
courseTagRelationDao.save(courseTagRelation);
|
||||
// //新建一条标签和课程的关联关系
|
||||
// CourseTagRelation courseTagRelation = new CourseTagRelation();
|
||||
// courseTagRelation.setTagId(Long.valueOf(courseTag.getId()));
|
||||
// courseTagRelation.setCourseId(courseId);
|
||||
// courseTagRelationDao.save(courseTagRelation);
|
||||
}else {//1.2 否则修改标签
|
||||
courseTag=courseTagList.get(0);
|
||||
// 当同一标签被3个及以上课管创建时,默认开启这个标签的公共化
|
||||
@@ -243,6 +256,49 @@ public class CourseTagServiceImpl implements ICourseTagService {
|
||||
return courseTag;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<CourseTag> getTagsByTagIds(List<String> courseTagIds) {
|
||||
List<CourseTag> courseTagList = courseTagDao.findList(FieldFilters.in("id", courseTagIds));
|
||||
return courseTagList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void bindTag(String id, String tags) {
|
||||
// 将tags转换为数组
|
||||
String[] tagIds = tags.split(",");
|
||||
List<Long> tagIdList = new ArrayList<>();
|
||||
for (String tagId : tagIds){
|
||||
tagIdList.add(Long.valueOf(tagId));
|
||||
}
|
||||
for (Long tagId : tagIdList){
|
||||
QueryBuilder courseTagQuery=QueryBuilder.from(CourseTag.class);
|
||||
List<IFieldFilter> courseTagFilters = new ArrayList<>();
|
||||
courseTagFilters.add(FieldFilters.eq("id",tagId.toString()));//精确匹配
|
||||
courseTagQuery.addFilters(courseTagFilters);
|
||||
//修改该标签关联课程数
|
||||
CourseTag courseTag = courseTagDao.findOne(FieldFilters.eq("id", String.valueOf(tagId)));
|
||||
if (courseTag!=null){
|
||||
//更新该标签的关联课程数量
|
||||
courseTag.setUseCount(courseTag.getUseCount()+1);
|
||||
courseTagDao.saveOrUpdate(courseTag);
|
||||
}
|
||||
// 查询课程是否绑定了标签
|
||||
QueryBuilder query=QueryBuilder.from(CourseTagRelation.class);
|
||||
List<IFieldFilter> filters = new ArrayList<>();
|
||||
filters.add(FieldFilters.eq("courseId",Long.valueOf(id)));
|
||||
filters.add(FieldFilters.eq("tagId",Long.valueOf(tagId)));
|
||||
query.addFilters(filters);
|
||||
List<CourseTagRelation> courseTagRelationList = courseTagRelationDao.findList(query.builder());
|
||||
// 如果没有绑定标签,那么就进行绑定
|
||||
if (courseTagRelationList==null || courseTagRelationList.size()==0){
|
||||
CourseTagRelation courseTagRelation = new CourseTagRelation();
|
||||
courseTagRelation.setTagId(Long.valueOf(tagId));
|
||||
courseTagRelation.setCourseId(Long.valueOf(id));
|
||||
courseTagRelationDao.save(courseTagRelation);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public CourseTag getTagByName(String tagName) {
|
||||
CourseTag courseTag = courseTagDao.getTagByName(tagName);
|
||||
|
||||
Reference in New Issue
Block a user