Compare commits

...

34 Commits

Author SHA1 Message Date
Caojr
880a9b5cc9 临时注释多余的completeStatus接口调用 2025-10-10 10:09:21 +08:00
Caojr
ab60d845e0 szx-1241 类型转换处理 2025-09-28 20:20:48 +08:00
Caojr
80aaeb8d1d szx-1241 处理异常 2025-09-28 20:16:48 +08:00
Caojr
68fcde11fb szx-1241 处理异常 2025-09-28 20:06:31 +08:00
Caojr
57dc5262fb szx-1241 增加日志 2025-09-28 19:59:07 +08:00
Caojr
62bda8bd58 szx-1241 增加日志 2025-09-28 19:14:56 +08:00
Caojr
8403678d0d szx-1241 增加日志 2025-09-28 18:32:04 +08:00
Caojr
02c0fa13dd szx-1241 冲突处理 2025-09-28 18:16:41 +08:00
Caojr
de96d311c6 szx-1241 测试合并 2025-09-28 18:05:30 +08:00
Caojr
2456820251 szx-1241 修改错误的表名 2025-09-28 17:57:50 +08:00
Caojr
12c07faf2a szx-1241 操作日志优化 2025-09-26 17:37:48 +08:00
Caojr
fea28d8832 szx-1241 添加数据库操作日志插入 2025-09-25 10:43:09 +08:00
670788339
249a8d81a6 JsonFormat 2025-08-28 10:32:53 +08:00
670788339
7abb00772b 显示考试成绩 2025-08-26 14:39:37 +08:00
670788339
04e11f2e71 还原 2025-08-22 14:18:35 +08:00
670788339
2feb149e92 在线课程管理不显示考试成绩 2025-08-22 14:11:34 +08:00
670788339
16fa9cb028 在线课程管理不显示考试成绩 2025-08-22 10:36:14 +08:00
670788339
cac466ba73 修复无考试在线进度 2025-08-19 16:15:34 +08:00
670788339
30d2a0cde2 Merge branch 'master-0720-lyc' into release-20250328-master 2025-07-23 17:04:29 +08:00
670788339
541e542d9b 仅内网只可看 调整 2025-07-23 16:08:59 +08:00
670788339
aa04e16209 仅内网只可看 调整 2025-07-23 16:03:03 +08:00
670788339
57e22492e5 仅内网只可PC看 2025-07-23 15:42:47 +08:00
670788339
1917647a99 仅内网只可PC看 2025-07-21 17:43:18 +08:00
670788339
f5f7ab3bc5 字典调整 2025-07-21 13:27:35 +08:00
670788339
413a2ebc33 字典调整 2025-07-21 09:57:33 +08:00
670788339
22db916abf 仅内网可见-学员端 2025-07-21 09:37:25 +08:00
670788339
8ce284ea7e 仅内网可见-学员端 2025-07-21 09:27:12 +08:00
670788339
c485757061 仅内网可见-学员端 2025-07-21 09:21:58 +08:00
670788339
9a00b41cde 仅内网可见-学员端 2025-07-21 09:17:13 +08:00
670788339
59beaa5b74 仅内网可见-学员端 2025-07-21 09:07:58 +08:00
670788339
9b9e97a8d4 仅内网可见-学员端 2025-07-21 08:44:16 +08:00
670788339
200ec38038 仅内网可见 2025-07-20 17:13:29 +08:00
670788339
7613f30ca7 仅内网可见 2025-07-20 15:22:36 +08:00
670788339
248e0799bd 仅内网可见 2025-07-20 13:48:21 +08:00
12 changed files with 411 additions and 73 deletions

View File

@@ -45,10 +45,7 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Optional;
import java.util.*;
import java.util.concurrent.ForkJoinPool;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
@@ -407,4 +404,20 @@ public class ThirdApi {
.body()).orElseThrow(() -> new RuntimeException("token校验失败"));
log.info("-------delOnLineById = " + resp);
}
//获取字典信息
public List<Dict> getDictItems(CommonSearchVo searcher) {
try {
List<Dict> dictList = dictRemoteClient.getList(searcher);
if(!Objects.isNull(dictList) && dictList.size() > 0){
// List<String> dicts = dictList.stream().map(Dict::getValue).collect(Collectors.toList());
return dictList;
}else {
return null;
}
} catch (Exception e) {
log.error("-------获取字典信息 = " + e.getMessage());
}
return null;
}
}

View File

@@ -2,11 +2,14 @@
import java.io.OutputStream;
import java.util.*;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.boe.feign.api.infrastructure.entity.CommonSearchVo;
import com.boe.feign.api.infrastructure.entity.Dict;
import com.xboe.api.ThirdApi;
import com.xboe.module.course.dto.*;
import org.apache.commons.lang3.StringUtils;
@@ -169,19 +172,48 @@ public class CourseManageApi extends ApiBaseController{
List<CourseSection> sectionlist=sectionService.getByCourseId(id);
List<CourseTeacher> teachers=courseService.findTeachersByCourseId(id);
List<CourseCrowd> crowds=courseService.findCrowdByCourseId(id);
//
CommonSearchVo searcher = new CommonSearchVo();
searcher.setPid(637L);
searcher.setType(1);
List<Dict> dictList = thirdApi.getDictItems(searcher);
boolean isPermission = false;
if(dictList != null && dictList.size() > 0){
List<String> dicts = dictList.stream().map(Dict::getValue).collect(Collectors.toList());
isPermission = dicts.contains(course.getOrgId());
rs.put("dicts",dicts);
}
log.error("-------是否仅内网查看 = " + isPermission);
rs.put("course",course);
rs.put("contents",cclist);
rs.put("sections",sectionlist);
rs.put("teachers",teachers);
rs.put("crowds",crowds);
rs.put("isPermission",isPermission);
return success(rs);
}
@GetMapping("/getDictIds")
public JsonResponse<Map<String,Object>> getDictIds(Long pid,Integer type){
CommonSearchVo searcher = new CommonSearchVo();
if(pid==null || type ==null){
return badRequest("参数错误");
}
Map<String,Object> rs=new HashMap<String,Object>();
searcher.setPid(pid);
searcher.setType(type);
List<Dict> dictList = thirdApi.getDictItems(searcher);
rs.put("dicts",null);
if(dictList != null && dictList.size() > 0){
List<String> dicts = dictList.stream().map(Dict::getValue).collect(Collectors.toList());
rs.put("dicts",dicts);
}
return success(rs);
}
/**
* 管理员审核列表教师的审核不在这里此审核也应该移动CourseAuditApi中去
* @param pager

View File

@@ -1,12 +1,27 @@
package com.xboe.module.course.dao;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Repository;
import com.xboe.core.orm.BaseDao;
import com.xboe.module.course.entity.CourseTeacher;
import java.util.Collections;
import java.util.List;
@Slf4j
@Repository
public class CourseTeacherDao extends BaseDao<CourseTeacher> {
//List<CourseTeacher>
//List<CourseTeacher>
public List<CourseTeacher> findByCourseId(String courseId) {
try {
return sqlFindList("SELECT * FROM boe_course_teacher WHERE course_id = ?1", courseId);
} catch (Exception e) {
log.warn("查询课程教师列表失败", e);
return Collections.emptyList();
}
}
}

View File

@@ -0,0 +1,31 @@
package com.xboe.module.course.dao;
import java.time.LocalDateTime;
import com.xboe.core.orm.BaseDao;
import com.xboe.module.course.entity.CourseTeacher;
import com.xboe.module.course.entity.CourseTeacherModifyRecord;
import com.xboe.module.course.util.RequestIdUtil;
import org.springframework.stereotype.Repository;
/**
* @author guo jia
*/
@Repository
public class CourseTeacherModifyRecordDao extends BaseDao<CourseTeacherModifyRecord> {
public void insertRecord(String type, String location, CourseTeacher courseTeacher, String body) {
CourseTeacherModifyRecord entity = new CourseTeacherModifyRecord();
entity.setRequestId(RequestIdUtil.getCurrentRequestId());
entity.setType(type);
entity.setLocation(location);
entity.setTeacherId(courseTeacher.getTeacherId());
entity.setTeacherName(courseTeacher.getTeacherName());
entity.setCourseId(courseTeacher.getCourseId());
entity.setBody(body);
entity.setDeleted(0);
entity.setCreateTime(LocalDateTime.now());
entity.setUpdateTime(LocalDateTime.now());
save(entity);
}
}

View File

@@ -33,7 +33,10 @@ public class Course extends BaseEntity {
/**所有的设备*/
public static int DEVICE_ALL=3;
/**仅内网*/
public static int DEVICE_INTERNAL=4;
/**未提交,草稿*/
public static final int STATUS_NONE=1;

View File

@@ -0,0 +1,94 @@
package com.xboe.module.course.entity;
import com.xboe.core.SysConstant;
import lombok.Data;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import java.time.LocalDateTime;
/**
* 讲师操作记录表
* 为了监控PngCode-SZX-1241问题临时创建的表
*/
@Data
@Entity
@Table(name = SysConstant.TABLE_PRE + "course_teacher_modify_record")
public class CourseTeacherModifyRecord {
/**
* 主键ID
*/
@Id
@GeneratedValue
private Long id;
/**
* 请求ID
* 同一个请求ID表示删除操作是在一次请求中完成的
*/
private String requestId;
/**
* 操作类型
* INSERT、UPDATE、DELETE
*/
private String type;
/**
* 位置
*/
private String location;
/**
* 讲师账号ID
*/
private String teacherId;
/**
* 讲师姓名
*/
private String teacherName;
/**
* 在线课ID
*/
private String courseId;
/**
* 请求体
*/
private String body;
/**
* 删除标识
*/
private Integer deleted;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 更新时间
*/
private LocalDateTime updateTime;
/**
* 创建人ID
*/
private Long createId;
/**
* 创建人姓名
*/
private String createName;
/**
* 更新人ID
*/
private Long updateId;
}

View File

@@ -1,38 +1,6 @@
package com.xboe.module.course.service.impl;
import java.io.IOException;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.TimeUnit;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.stream.Collectors;
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;
import com.xboe.school.study.entity.StudyCourse;
import org.apache.commons.lang3.StringUtils;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.index.reindex.DeleteByQueryRequest;
import org.hibernate.mapping.IdGenerator;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import cn.hutool.json.JSONUtil;
import com.xboe.TempFilterConfig;
import com.xboe.account.service.IAccountService;
import com.xboe.common.OrderCondition;
@@ -41,31 +9,39 @@ import com.xboe.common.beans.KeyValue;
import com.xboe.common.utils.IDGenerator;
import com.xboe.common.utils.StringUtil;
import com.xboe.core.event.IEventDataSender;
import com.xboe.module.course.dao.CourseContentDao;
import com.xboe.module.course.dao.CourseCrowdDao;
import com.xboe.module.course.dao.CourseDao;
import com.xboe.module.course.dao.CourseExamDao;
import com.xboe.module.course.dao.CourseHRBPAuditDao;
import com.xboe.module.course.dao.CourseHomeWorkDao;
import com.xboe.module.course.dao.CourseSectionDao;
import com.xboe.module.course.dao.CourseTeacherDao;
import com.xboe.module.course.dao.CourseUpdateLogDao;
import com.xboe.core.orm.*;
import com.xboe.module.course.dao.*;
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.entity.*;
import com.xboe.module.course.service.ICourseFullTextSearch;
import com.xboe.module.course.service.ICourseService;
import com.xboe.module.interaction.service.ICourseGradeService;
import com.xboe.system.authority.service.IResDataManagerService;
import com.xboe.system.logs.dao.SysLogAuditDao;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.index.reindex.DeleteByQueryRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.io.IOException;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.stream.Collectors;
@Slf4j
@Service
@@ -125,7 +101,8 @@ public class CourseServiceImpl implements ICourseService {
@Resource
RestHighLevelClient restHighLevelClient;
@Resource
private CourseTeacherModifyRecordDao courseTeacherModifyRecordDao;
/**
* 生成过滤条件
@@ -183,6 +160,8 @@ public class CourseServiceImpl implements ICourseService {
filters.add(FieldFilters.in("device", Course.DEVICE_MOBILE, Course.DEVICE_ALL));
} else if (dto.getDevice() == Course.DEVICE_ALL) {
filters.add(FieldFilters.eq("device", Course.DEVICE_ALL));
}else if (dto.getDevice() == Course.DEVICE_INTERNAL) {
filters.add(FieldFilters.eq("device", Course.DEVICE_INTERNAL));
}
}
@@ -835,6 +814,23 @@ public class CourseServiceImpl implements ICourseService {
@Override
public void delete(String id, boolean erasable, String aid, String name, String remark) {
// 增加操作boe_course_teacher表记录
String body = "courseId=" + id + " aid=" + aid + " name=" + name + " remark=" + remark;
String location = "/xboe/m/course/manage/delete";
List<CourseTeacher> teacherList = courseTeacherDao.findByCourseId(id);
String jsonStr = JSONUtil.toJsonStr(teacherList);
log.info("teacherList:{}", jsonStr);
try {
List<List> list = JSONUtil.toList(jsonStr, List.class);
list.forEach(item -> {
for (Object teacher : item) {
courseTeacherModifyRecordDao.insertRecord("DELETE", location, (CourseTeacher) teacher, body);
}
});
} catch (Exception e) {
log.warn("增加操作boe_course_teacher表记录失败", e);
}
if (!erasable) {
courseDao.setDeleted(id);
courseDao.updateFieldById(id, "name", "已删除" + name);
@@ -918,6 +914,9 @@ public class CourseServiceImpl implements ICourseService {
for (CourseTeacher ct : full.getTeachers()) {
ct.setCourseId(c.getId());
courseTeacherDao.save(ct);
// 增加操作boe_course_teacher表记录
courseTeacherModifyRecordDao.insertRecord("DELETE", "/xboe/m/course/manage/save", ct, JSONUtil.toJsonStr(full));
}
}
if (full.getCrowds() != null && !full.getCrowds().isEmpty()) {
@@ -1000,12 +999,29 @@ public class CourseServiceImpl implements ICourseService {
c.setSysVersion(courseDao.getVersion(c.getId()));
full.getCourse().setSysVersion(c.getSysVersion());
// 增加操作boe_course_teacher表记录
String body = null;
String location = null;
try {
body = JSONUtil.toJsonStr(full);
location = "/xboe/m/course/manage/save";
List<CourseTeacher> teacherList = courseTeacherDao.findByCourseId(c.getId());
for (CourseTeacher teacher : teacherList) {
courseTeacherModifyRecordDao.insertRecord("DELETE", location, teacher, body);
}
} catch (Exception e) {
log.warn("增加操作boe_course_teacher表记录失败", e);
}
//先清空教师信息, 教师信息如果不一样了,也要加入到日志中
courseTeacherDao.deleteByField("courseId", c.getId());
if (full.getTeachers() != null && !full.getTeachers().isEmpty()) {
for (CourseTeacher ct : full.getTeachers()) {
ct.setCourseId(c.getId());
courseTeacherDao.saveOrUpdate(ct);
// 增加操作boe_course_teacher表记录
courseTeacherModifyRecordDao.insertRecord("INSERT", location, ct, body);
}
}
//先清空受众信息,受众信息如果不一样了,也要加入到日志中
@@ -1054,12 +1070,29 @@ public class CourseServiceImpl implements ICourseService {
c.setSysVersion(courseDao.getVersion(c.getId()));
full.getCourse().setSysVersion(c.getSysVersion());
// 增加操作boe_course_teacher表记录
String body = null;
String location = null;
try {
body = JSONUtil.toJsonStr(full);
location = "/xboe/m/course/manage/submit";
List<CourseTeacher> teacherList = courseTeacherDao.findByCourseId(c.getId());
for (CourseTeacher teacher : teacherList) {
courseTeacherModifyRecordDao.insertRecord("DELETE", location, teacher, body);
}
} catch (Exception e) {
log.warn("增加操作boe_course_teacher表记录失败", e);
}
//先清空教师信息, 教师信息如果不一样了,也要加入到日志中
courseTeacherDao.deleteByField("courseId", c.getId());
if (full.getTeachers() != null && !full.getTeachers().isEmpty()) {
for (CourseTeacher ct : full.getTeachers()) {
ct.setCourseId(c.getId());
courseTeacherDao.saveOrUpdate(ct);
// 增加操作boe_course_teacher表记录
courseTeacherModifyRecordDao.insertRecord("INSERT", location, ct, body);
}
}
//先清空受众信息,受众信息如果不一样了,也要加入到日志中
@@ -1089,12 +1122,29 @@ public class CourseServiceImpl implements ICourseService {
c.setPublishTime(LocalDateTime.now());
courseDao.update(c);
// 增加操作boe_course_teacher表记录
String body = null;
String location = null;
try {
body = "body=" + JSONUtil.toJsonStr(full) + " aid=[" + aid + "] aname=[" + aname + "] ";
location = "/xboe/m/course/audit/submit-publish";
List<CourseTeacher> teacherList = courseTeacherDao.findByCourseId(c.getId());
for (CourseTeacher teacher : teacherList) {
courseTeacherModifyRecordDao.insertRecord("DELETE", location, teacher, body);
}
} catch (Exception e) {
log.warn("增加操作boe_course_teacher表记录失败", e);
}
//先清空教师信息, 教师信息如果不一样了,也要加入到日志中
courseTeacherDao.deleteByField("courseId", c.getId());
if (full.getTeachers() != null && !full.getTeachers().isEmpty()) {
for (CourseTeacher ct : full.getTeachers()) {
ct.setCourseId(c.getId());
courseTeacherDao.saveOrUpdate(ct);
// 增加操作boe_course_teacher表记录
courseTeacherModifyRecordDao.insertRecord("INSERT", location, ct, body);
}
}
//先清空受众信息,受众信息如果不一样了,也要加入到日志中

View File

@@ -0,0 +1,50 @@
package com.xboe.module.course.util;
import cn.hutool.core.util.HexUtil;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import java.security.SecureRandom;
/**
* @author guo jia
*/
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class RequestIdUtil {
private static final SecureRandom RANDOM = new SecureRandom();
public static final String REQUEST_ID_KEY = "requestId";
public static String genRequestId() {
byte[] bytes = new byte[8];
RequestIdUtil.RANDOM.nextBytes(bytes);
return HexUtil.encodeHexStr(bytes);
}
public static void genAndSetRequestId() {
setRequestId(genRequestId());
}
public static void setRequestId(String requestId) {
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
if (attributes != null) {
HttpServletRequest request = attributes.getRequest();
request.setAttribute(REQUEST_ID_KEY, requestId);
}
}
public static String getCurrentRequestId() {
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
String requestId = null;
if (attributes != null) {
HttpServletRequest request = attributes.getRequest();
requestId = (String) request.getAttribute(REQUEST_ID_KEY);
}
return requestId;
}
}

View File

@@ -1,5 +1,6 @@
package com.xboe.module.popup.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.xboe.core.SysConstant;
import com.xboe.core.orm.IdEntity;
import lombok.Data;
@@ -24,12 +25,14 @@ public class Popup extends IdEntity {
* 开始时间
* */
@Column(name = "start_time")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime startTime;
/**
* 结束时间
* */
@Column(name = "end_time")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime endTime;

View File

@@ -10,6 +10,8 @@ import java.util.stream.Collectors;
import cn.hutool.core.collection.CollectionUtil;
import com.alibaba.nacos.shaded.com.google.common.util.concurrent.RateLimiter;
import com.boe.feign.api.infrastructure.entity.CommonSearchVo;
import com.boe.feign.api.infrastructure.entity.Dict;
import com.xboe.api.ThirdApi;
import com.xboe.constants.CacheName;
import com.xboe.module.course.vo.TeacherVo;
@@ -233,7 +235,30 @@ public class StudyCourseApi extends ApiBaseController{
rs.put("contents",cclist);
rs.put("sections",sectionlist);
rs.put("teachers",teachers);
// 未选择仅内网时isPermission = false不用区分内外网
boolean isPermission = false;
if(course.getDevice() ==4){
CommonSearchVo searcher = new CommonSearchVo();
searcher.setPid(637L);
searcher.setType(1);
List<Dict> dictList = thirdApi.getDictItems(searcher);
if(dictList != null && dictList.size() > 0){
List<String> dicts = dictList.stream().map(Dict::getValue).collect(Collectors.toList());
// 选择仅内网 并且字典中配置了此课程资源归属,那么只能内网观看 返回 truw
isPermission = dicts.contains(course.getOrgId());
}
}
rs.put("isPermission",isPermission);
CommonSearchVo warn = new CommonSearchVo();
warn.setCode("course_warn");
warn.setType(1);
List<Dict> warns = thirdApi.getDictItems(warn);
if(warns != null && warns.size() > 0){
rs.put("warn",warns.get(0).getValue());
rs.put("warnTitle",warns.get(0).getName());
}
//检查是否已报名
StudyCourse sc=service.findByCourseIdAndAid(cid, aid);
if(pass==true && sc==null) {
@@ -567,8 +592,8 @@ public class StudyCourseApi extends ApiBaseController{
}
try {
studyService.finishVideoStudyItem(itemId, studyId,courseId,cnum,token);
List<StudyCourse> allUserList = thirdApi.getStudyCourseList(studyId ,courseId, token);
log.info("在线课学习记录"+allUserList);
// List<StudyCourse> allUserList = thirdApi.getStudyCourseList(studyId ,courseId, token);
// log.info("在线课学习记录"+allUserList);
return success(true);
}catch(Exception e) {
log.error("记录内容学习完成错误",e);

View File

@@ -10,6 +10,7 @@ import com.xboe.module.course.entity.CourseExam;
import com.xboe.school.study.dao.StudyCourseDao;
import com.xboe.school.study.dao.StudyCourseItemDao;
import com.xboe.school.study.dao.StudyExamDao;
import com.xboe.school.study.entity.StudyCourse;
import com.xboe.school.study.entity.StudyCourseItem;
import com.xboe.school.study.entity.StudyExam;
import com.xboe.school.study.service.IStudyExamService;
@@ -170,15 +171,32 @@ public class StudyExamServiceImpl implements IStudyExamService{
}
builder.addGroupBy("studyId");
List<StudyExam> list1 = dao.findList(builder.builder());
log.info("------------QueryBuilder list1.size = " + list1.size() + ",0 = " + list1.get(0));
for(StudyExam item : list1){
log.info("-----------------CourseId = " + item.getCourseId() + " , StudyId = " + item.getStudyId() + " , StudentId = " + item.getStudentId());
int totalContent = courseContentDao.getCount(item.getCourseId());
log.info("----------准备判断进度-------totalContent = " + totalContent);
scDao.finishCheck1(item.getStudyId(),item.getCourseId(),totalContent);
log.info("----------判断进度完毕----------------------");
if(list1 != null && list1.size() > 0){
log.info("----------StudyExam--QueryBuilder list1.size = " + list1.size() + ",0 = " + list1.get(0));
for(StudyExam item : list1){
log.info("--------------StudyExam---CourseId = " + item.getCourseId() + " , StudyId = " + item.getStudyId() + " , StudentId = " + item.getStudentId());
int totalContent = courseContentDao.getCount(item.getCourseId());
log.info("--------StudyExam--准备判断进度-------totalContent = " + totalContent);
scDao.finishCheck1(item.getStudyId(),item.getCourseId(),totalContent);
log.info("--------StudyExam--判断进度完毕----------------------");
}
}else{
QueryBuilder builder1 = QueryBuilder.from(StudyCourse.class);
if (StringUtils.isEmpty(courseId)){
return;
}
builder1.addFilter(FieldFilters.eq("courseId", courseId));
List<StudyCourse> list2 = scDao.findList(builder1.builder());
log.info("------------StudyCourse list2.size = " + list2.size() + ",0 = " + list2.get(0));
for(StudyCourse item : list2){
log.info("-------------StudyCourse----CourseId = " + item.getCourseId() + " , StudyId = " + item.getId() + " , StudentId = " + item.getAid());
int totalContent = courseContentDao.getCount(item.getCourseId());
log.info("--------StudyCourse--准备判断进度-------totalContent = " + totalContent);
scDao.finishCheck1(item.getId(),item.getCourseId(),totalContent);
log.info("--------StudyCourse--判断进度完毕----------------------");
}
}
} catch (Exception exception) {
exception.printStackTrace();
log.info("------异常----------------------" +exception.getMessage());

View File

@@ -282,11 +282,12 @@ public class StudyServiceImpl implements IStudyService{
return pageList;
}
}
String sql = "select a.id, a.course_id, a.course_name, a.aname, " +
"IFNULL(b.finish_time, '0') as finish_time, IFNULL(b.progress, 0) as progress, IFNULL(b.status, 1) as status " +
"IFNULL(b.finish_time, '0') as finish_time, IFNULL(b.progress, 0) as progress, IFNULL(b.status, 1) as status,b.score " +
"from (select id, course_id, course_name, aname, 0, 1 from boe_study_course where course_id = '" + courseId + "' and aname like '%"+name+"%') a " +
"left join " +
"(select bsc.id, bsc.course_id, bsc.course_name, bsc.aname, item.finish_time, item.progress, item.status " +
"(select bsc.id, bsc.course_id, bsc.course_name, bsc.aname, item.finish_time, item.progress, item.status,MAX(item.score) score " +
"from boe_study_course bsc left join boe_study_course_item item on item.course_id = bsc.course_id and item.study_id = bsc.id " +
"where bsc.course_id = '" + courseId + "' and item.content_id = '" + contentId + "' and item.aname like '%"+name+"%' group by bsc.id) b " +
"on a.course_id = b.course_id and a.id = b.id " +
@@ -315,6 +316,9 @@ public class StudyServiceImpl implements IStudyService{
sc.setProgress(Integer.valueOf(objs[5].toString()));
sc.setStatus(Integer.valueOf(objs[6].toString()));
sc.setAname(objs[3].toString());
if(objs[7] != null){
sc.setScore(Float.valueOf(objs[7].toString()));
}
item.add(sc);
}
log.info("资源完成情况人员"+item);