szx-1241 添加数据库操作日志插入

This commit is contained in:
Caojr
2025-09-25 10:43:09 +08:00
parent 249a8d81a6
commit fea28d8832
5 changed files with 191 additions and 11 deletions

View File

@@ -5,8 +5,15 @@ import org.springframework.stereotype.Repository;
import com.xboe.core.orm.BaseDao;
import com.xboe.module.course.entity.CourseTeacher;
import java.util.List;
@Repository
public class CourseTeacherDao extends BaseDao<CourseTeacher> {
//List<CourseTeacher>
//List<CourseTeacher>
public List<CourseTeacher> findByCourseId(String courseId) {
return sqlFindList("SELECT * FROM boe_teacher WHERE course_id = ?1", courseId);
}
}

View File

@@ -0,0 +1,29 @@
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 org.springframework.stereotype.Repository;
/**
* @author guo jia
*/
@Repository
public class CourseTeacherModifyRecordDao extends BaseDao<CourseTeacherModifyRecord> {
public void insertRecord(String type, String requestId, String location, CourseTeacher courseTeacher) {
CourseTeacherModifyRecord entity = new CourseTeacherModifyRecord();
entity.setRequestId(requestId);
entity.setType(type);
entity.setLocation(location);
entity.setTeacherId(courseTeacher.getTeacherId());
entity.setTeacherName(courseTeacher.getTeacherName());
entity.setCourseId(courseTeacher.getCourseId());
entity.setDeleted(0);
entity.setCreateTime(LocalDateTime.now());
entity.setUpdateTime(LocalDateTime.now());
save(entity);
}
}

View File

@@ -0,0 +1,87 @@
package com.xboe.module.course.entity;
import com.xboe.core.SysConstant;
import lombok.Data;
import javax.persistence.Entity;
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
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 Integer deleted;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 更新时间
*/
private LocalDateTime updateTime;
/**
* 创建人ID
*/
private Long createId;
/**
* 创建人姓名
*/
private String createName;
/**
* 更新人ID
*/
private Long updateId;
}

View File

@@ -18,6 +18,8 @@ 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;
@@ -41,15 +43,6 @@ 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.module.course.dto.CourseFullDto;
import com.xboe.module.course.dto.CourseQueryDto;
import com.xboe.module.course.dto.RankingDto;
@@ -125,7 +118,8 @@ public class CourseServiceImpl implements ICourseService {
@Resource
RestHighLevelClient restHighLevelClient;
@Resource
private CourseTeacherModifyRecordDao courseTeacherModifyRecordDao;
/**
* 生成过滤条件
@@ -920,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", RequestUtil.genRequestId(), "/xboe/m/course/manage/save", ct);
}
}
if (full.getCrowds() != null && !full.getCrowds().isEmpty()) {
@@ -1002,12 +999,23 @@ public class CourseServiceImpl implements ICourseService {
c.setSysVersion(courseDao.getVersion(c.getId()));
full.getCourse().setSysVersion(c.getSysVersion());
// 增加操作boe_course_teacher表记录
String requestId = RequestUtil.genRequestId();
String location = "/xboe/m/course/manage/save";
List<CourseTeacher> teacherList = courseTeacherDao.findByCourseId(c.getId());
for (CourseTeacher teacher : teacherList) {
courseTeacherModifyRecordDao.insertRecord("DELETE", requestId, location, teacher);
}
//先清空教师信息, 教师信息如果不一样了,也要加入到日志中
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", requestId, location, ct);
}
}
//先清空受众信息,受众信息如果不一样了,也要加入到日志中
@@ -1056,12 +1064,23 @@ public class CourseServiceImpl implements ICourseService {
c.setSysVersion(courseDao.getVersion(c.getId()));
full.getCourse().setSysVersion(c.getSysVersion());
// 增加操作boe_course_teacher表记录
String requestId = RequestUtil.genRequestId();
String location = "/xboe/m/course/manage/submit";
List<CourseTeacher> teacherList = courseTeacherDao.findByCourseId(c.getId());
for (CourseTeacher teacher : teacherList) {
courseTeacherModifyRecordDao.insertRecord("DELETE", requestId, location, teacher);
}
//先清空教师信息, 教师信息如果不一样了,也要加入到日志中
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", requestId, location, ct);
}
}
//先清空受众信息,受众信息如果不一样了,也要加入到日志中
@@ -1091,12 +1110,23 @@ public class CourseServiceImpl implements ICourseService {
c.setPublishTime(LocalDateTime.now());
courseDao.update(c);
// 增加操作boe_course_teacher表记录
String requestId = RequestUtil.genRequestId();
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);
}
//先清空教师信息, 教师信息如果不一样了,也要加入到日志中
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", requestId, location, ct);
}
}
//先清空受众信息,受众信息如果不一样了,也要加入到日志中

View File

@@ -0,0 +1,27 @@
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);
}
}