diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/course/dao/CourseTeacherDao.java b/servers/boe-server-all/src/main/java/com/xboe/module/course/dao/CourseTeacherDao.java index 87410030..61e0bf4e 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/course/dao/CourseTeacherDao.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/course/dao/CourseTeacherDao.java @@ -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 { - //List + //List + + public List findByCourseId(String courseId) { + return sqlFindList("SELECT * FROM boe_teacher WHERE course_id = ?1", courseId); + } + } 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 new file mode 100644 index 00000000..2f26f78e --- /dev/null +++ b/servers/boe-server-all/src/main/java/com/xboe/module/course/dao/CourseTeacherModifyRecordDao.java @@ -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 { + + 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); + } + +} 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 new file mode 100644 index 00000000..649ddaf8 --- /dev/null +++ b/servers/boe-server-all/src/main/java/com/xboe/module/course/entity/CourseTeacherModifyRecord.java @@ -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; +} 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 49552e49..cdc2fe9b 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 @@ -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 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 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 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); } } //先清空受众信息,受众信息如果不一样了,也要加入到日志中 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 new file mode 100644 index 00000000..0b8e9890 --- /dev/null +++ b/servers/boe-server-all/src/main/java/com/xboe/module/course/util/RequestUtil.java @@ -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); + } + +}