diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/course/dao/CourseTeacherModifyRecordDao.java b/servers/boe-server-all/src/main/java/com/xboe/module/course/dao/CourseTeacherModifyRecordDao.java index 2f26f78e..1c83f571 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/course/dao/CourseTeacherModifyRecordDao.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/course/dao/CourseTeacherModifyRecordDao.java @@ -4,6 +4,7 @@ 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; /** @@ -12,14 +13,15 @@ import org.springframework.stereotype.Repository; @Repository public class CourseTeacherModifyRecordDao extends BaseDao { - public void insertRecord(String type, String requestId, String location, CourseTeacher courseTeacher) { + public void insertRecord(String type, String location, CourseTeacher courseTeacher, String body) { CourseTeacherModifyRecord entity = new CourseTeacherModifyRecord(); - entity.setRequestId(requestId); + 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()); diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/course/entity/CourseTeacherModifyRecord.java b/servers/boe-server-all/src/main/java/com/xboe/module/course/entity/CourseTeacherModifyRecord.java index 649ddaf8..6107d876 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/course/entity/CourseTeacherModifyRecord.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/course/entity/CourseTeacherModifyRecord.java @@ -55,6 +55,11 @@ public class CourseTeacherModifyRecord { */ private String courseId; + /** + * 请求体 + */ + private String body; + /** * 删除标识 */ 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 cdc2fe9b..436caadb 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 @@ -1,40 +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.module.course.dao.*; -import com.xboe.module.course.util.RequestUtil; -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; @@ -43,22 +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.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 @@ -916,7 +899,7 @@ public class CourseServiceImpl implements ICourseService { courseTeacherDao.save(ct); // 增加操作boe_course_teacher表记录 - courseTeacherModifyRecordDao.insertRecord("DELETE", RequestUtil.genRequestId(), "/xboe/m/course/manage/save", ct); + courseTeacherModifyRecordDao.insertRecord("DELETE", "/xboe/m/course/manage/save", ct, JSONUtil.toJsonStr(full)); } } if (full.getCrowds() != null && !full.getCrowds().isEmpty()) { @@ -1000,11 +983,11 @@ public class CourseServiceImpl implements ICourseService { full.getCourse().setSysVersion(c.getSysVersion()); // 增加操作boe_course_teacher表记录 - String requestId = RequestUtil.genRequestId(); + String body = JSONUtil.toJsonStr(full); String location = "/xboe/m/course/manage/save"; List teacherList = courseTeacherDao.findByCourseId(c.getId()); for (CourseTeacher teacher : teacherList) { - courseTeacherModifyRecordDao.insertRecord("DELETE", requestId, location, teacher); + courseTeacherModifyRecordDao.insertRecord("DELETE", location, teacher, body); } //先清空教师信息, 教师信息如果不一样了,也要加入到日志中 @@ -1015,7 +998,7 @@ public class CourseServiceImpl implements ICourseService { courseTeacherDao.saveOrUpdate(ct); // 增加操作boe_course_teacher表记录 - courseTeacherModifyRecordDao.insertRecord("INSERT", requestId, location, ct); + courseTeacherModifyRecordDao.insertRecord("INSERT", location, ct, body); } } //先清空受众信息,受众信息如果不一样了,也要加入到日志中 @@ -1065,11 +1048,11 @@ public class CourseServiceImpl implements ICourseService { full.getCourse().setSysVersion(c.getSysVersion()); // 增加操作boe_course_teacher表记录 - String requestId = RequestUtil.genRequestId(); + String body = JSONUtil.toJsonStr(full); String location = "/xboe/m/course/manage/submit"; List teacherList = courseTeacherDao.findByCourseId(c.getId()); for (CourseTeacher teacher : teacherList) { - courseTeacherModifyRecordDao.insertRecord("DELETE", requestId, location, teacher); + courseTeacherModifyRecordDao.insertRecord("DELETE", location, teacher, body); } //先清空教师信息, 教师信息如果不一样了,也要加入到日志中 @@ -1080,7 +1063,7 @@ public class CourseServiceImpl implements ICourseService { courseTeacherDao.saveOrUpdate(ct); // 增加操作boe_course_teacher表记录 - courseTeacherModifyRecordDao.insertRecord("INSERT", requestId, location, ct); + courseTeacherModifyRecordDao.insertRecord("INSERT", location, ct, body); } } //先清空受众信息,受众信息如果不一样了,也要加入到日志中 @@ -1111,11 +1094,11 @@ public class CourseServiceImpl implements ICourseService { courseDao.update(c); // 增加操作boe_course_teacher表记录 - String requestId = RequestUtil.genRequestId(); + String body = "body=" + JSONUtil.toJsonStr(full) + " aid=[" + aid + "] aname=[" + aname + "]"; String location = "/xboe/m/course/audit/submit-publish"; List teacherList = courseTeacherDao.findByCourseId(c.getId()); for (CourseTeacher teacher : teacherList) { - courseTeacherModifyRecordDao.insertRecord("DELETE", requestId, location, teacher); + courseTeacherModifyRecordDao.insertRecord("DELETE", location, teacher, body); } //先清空教师信息, 教师信息如果不一样了,也要加入到日志中 @@ -1126,7 +1109,7 @@ public class CourseServiceImpl implements ICourseService { courseTeacherDao.saveOrUpdate(ct); // 增加操作boe_course_teacher表记录 - courseTeacherModifyRecordDao.insertRecord("INSERT", requestId, location, ct); + courseTeacherModifyRecordDao.insertRecord("INSERT", location, ct, body); } } //先清空受众信息,受众信息如果不一样了,也要加入到日志中 diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/course/util/RequestIdUtil.java b/servers/boe-server-all/src/main/java/com/xboe/module/course/util/RequestIdUtil.java new file mode 100644 index 00000000..0a13cf61 --- /dev/null +++ b/servers/boe-server-all/src/main/java/com/xboe/module/course/util/RequestIdUtil.java @@ -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; + } + +} diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/course/util/RequestUtil.java b/servers/boe-server-all/src/main/java/com/xboe/module/course/util/RequestUtil.java deleted file mode 100644 index 0b8e9890..00000000 --- a/servers/boe-server-all/src/main/java/com/xboe/module/course/util/RequestUtil.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.xboe.module.course.util; - -import cn.hutool.core.util.HexUtil; -import lombok.NoArgsConstructor; - -import java.security.SecureRandom; - -/** - * @author guo jia - */ -@NoArgsConstructor(access = lombok.AccessLevel.PRIVATE) -public final class RequestUtil { - - private static final SecureRandom RANDOM = new SecureRandom(); - - /** - * 生成请求ID - * - * @return 请求ID - */ - public static String genRequestId() { - byte[] bytes = new byte[8]; - RANDOM.nextBytes(bytes); - return HexUtil.encodeHexStr(bytes); - } - -}