szx-1241 操作日志优化

This commit is contained in:
Caojr
2025-09-26 17:37:48 +08:00
parent fea28d8832
commit 12c07faf2a
5 changed files with 94 additions and 81 deletions

View File

@@ -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<CourseTeacherModifyRecord> {
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());

View File

@@ -55,6 +55,11 @@ public class CourseTeacherModifyRecord {
*/
private String courseId;
/**
* 请求体
*/
private String body;
/**
* 删除标识
*/

View File

@@ -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<CourseTeacher> 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<CourseTeacher> 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<CourseTeacher> 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);
}
}
//先清空受众信息,受众信息如果不一样了,也要加入到日志中

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,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);
}
}