From 7624d94145cd4b137b45077c2728ee3de932767a Mon Sep 17 00:00:00 2001 From: zhuangtianxiang <2913129173@qq.com> Date: Thu, 6 Feb 2025 15:02:55 +0800 Subject: [PATCH] =?UTF-8?q?feat(module):=20=E6=B7=BB=E5=8A=A0=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=E6=97=A5=E5=BF=97=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增操作日志相关实体类、DTO、Mapper、Repository和服务接口 - 实现基本的操作日志记录功能 - 为后续的 SpEL 表达式解析和动态日志内容生成做准备 --- .../operationLog/dto/OperationLogDto.java | 36 +++++++ .../entity/ExpressionRootObject.java | 19 ++++ .../operationLog/entity/OperationLog.java | 95 +++++++++++++++++++ .../entity/OperationLogAnnotation.java | 16 ++++ .../mapper/OperationLogMapper.java | 15 +++ .../repo/OperationLogRepository.java | 7 ++ .../service/OperationLogService.java | 7 ++ .../service/impl/OperationLogServiceImpl.java | 16 ++++ 8 files changed, 211 insertions(+) create mode 100644 src/main/java/com/zsc/edu/gateway/modules/operationLog/dto/OperationLogDto.java create mode 100644 src/main/java/com/zsc/edu/gateway/modules/operationLog/entity/ExpressionRootObject.java create mode 100644 src/main/java/com/zsc/edu/gateway/modules/operationLog/entity/OperationLog.java create mode 100644 src/main/java/com/zsc/edu/gateway/modules/operationLog/entity/OperationLogAnnotation.java create mode 100644 src/main/java/com/zsc/edu/gateway/modules/operationLog/mapper/OperationLogMapper.java create mode 100644 src/main/java/com/zsc/edu/gateway/modules/operationLog/repo/OperationLogRepository.java create mode 100644 src/main/java/com/zsc/edu/gateway/modules/operationLog/service/OperationLogService.java create mode 100644 src/main/java/com/zsc/edu/gateway/modules/operationLog/service/impl/OperationLogServiceImpl.java diff --git a/src/main/java/com/zsc/edu/gateway/modules/operationLog/dto/OperationLogDto.java b/src/main/java/com/zsc/edu/gateway/modules/operationLog/dto/OperationLogDto.java new file mode 100644 index 0000000..80c4d85 --- /dev/null +++ b/src/main/java/com/zsc/edu/gateway/modules/operationLog/dto/OperationLogDto.java @@ -0,0 +1,36 @@ +package com.zsc.edu.gateway.modules.operationLog.dto; + +import com.zsc.edu.gateway.modules.operationLog.entity.OperationLog; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.LocalDateTime; + +/** + * @author zhuang + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class OperationLogDto { + /** + * 模块类型 + */ + private OperationLog.ModelType modelType; + + /** + * 操作类型 + */ + private OperationLog.OperationType operationType; + + /** + * 操作内容 + */ + private String content; + + /** + * 操作时间 + */ + private LocalDateTime makeTime; +} diff --git a/src/main/java/com/zsc/edu/gateway/modules/operationLog/entity/ExpressionRootObject.java b/src/main/java/com/zsc/edu/gateway/modules/operationLog/entity/ExpressionRootObject.java new file mode 100644 index 0000000..1048ed2 --- /dev/null +++ b/src/main/java/com/zsc/edu/gateway/modules/operationLog/entity/ExpressionRootObject.java @@ -0,0 +1,19 @@ +package com.zsc.edu.gateway.modules.operationLog.entity; + +public class ExpressionRootObject { + private final Object object; + private final Object[] args; + + public ExpressionRootObject(Object object, Object[] args) { + this.object = object; + this.args = args; + } + + public Object getObject() { + return object; + } + + public Object[] getArgs() { + return args; + } +} diff --git a/src/main/java/com/zsc/edu/gateway/modules/operationLog/entity/OperationLog.java b/src/main/java/com/zsc/edu/gateway/modules/operationLog/entity/OperationLog.java new file mode 100644 index 0000000..1a06d2d --- /dev/null +++ b/src/main/java/com/zsc/edu/gateway/modules/operationLog/entity/OperationLog.java @@ -0,0 +1,95 @@ +package com.zsc.edu.gateway.modules.operationLog.entity; + +import com.baomidou.mybatisplus.annotation.IEnum; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.zsc.edu.gateway.common.enums.IState; +import lombok.*; + +import java.time.LocalDateTime; + +/** + * @author zhuang + */ +@Setter +@Getter +@NoArgsConstructor +@AllArgsConstructor +@TableName("operation_log") +public class OperationLog { + /** + * 主键 + */ + @TableId(type = IdType.AUTO) + private Long id; + + /** + * 模块类型 + */ + private ModelType modelType; + + /** + * 操作类型 + */ + private OperationType operationType; + + /** + * 操作内容 + */ + private String content; + + /** + * 操作时间 + */ + private LocalDateTime makeTime; + + public enum ModelType implements IEnum, IState { + ATTACHMENT(1, "附件模块"), + IOT(2, "物模型模块"), + MESSAGE(3, "公告消息模块"), + SYSTEM(4, "系统模块"); + + private final Integer value; + private final String name; + + ModelType(int value, String name) { + this.value = value; + this.name = name; + } + + @Override + public Integer getValue() { + return this.value; + } + + @Override + public String toString() { + return this.name; + } + } + + public enum OperationType implements IEnum, IState { + CREATE(1, "添加"), + UPDATE(2, "更新"), + DELETE(3, "删除"); + + private final Integer value; + private final String name; + + OperationType(int value, String name) { + this.value = value; + this.name = name; + } + + @Override + public Integer getValue() { + return this.value; + } + + @Override + public String toString() { + return this.name; + } + } +} diff --git a/src/main/java/com/zsc/edu/gateway/modules/operationLog/entity/OperationLogAnnotation.java b/src/main/java/com/zsc/edu/gateway/modules/operationLog/entity/OperationLogAnnotation.java new file mode 100644 index 0000000..ac0f062 --- /dev/null +++ b/src/main/java/com/zsc/edu/gateway/modules/operationLog/entity/OperationLogAnnotation.java @@ -0,0 +1,16 @@ +package com.zsc.edu.gateway.modules.operationLog.entity; + +import java.lang.annotation.*; + +/** + * @author zhuang + */ +@Target({ElementType.PARAMETER, ElementType.METHOD}) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface OperationLogAnnotation { + /** + * 日志内容,支持SpEL表达式 + */ + String content() default ""; +} diff --git a/src/main/java/com/zsc/edu/gateway/modules/operationLog/mapper/OperationLogMapper.java b/src/main/java/com/zsc/edu/gateway/modules/operationLog/mapper/OperationLogMapper.java new file mode 100644 index 0000000..95850ca --- /dev/null +++ b/src/main/java/com/zsc/edu/gateway/modules/operationLog/mapper/OperationLogMapper.java @@ -0,0 +1,15 @@ +package com.zsc.edu.gateway.modules.operationLog.mapper; + +import com.zsc.edu.gateway.common.mapstruct.BaseMapper; +import com.zsc.edu.gateway.modules.operationLog.dto.OperationLogDto; +import com.zsc.edu.gateway.modules.operationLog.entity.OperationLog; +import org.mapstruct.Mapper; +import org.mapstruct.MappingConstants; +import org.mapstruct.ReportingPolicy; + +/** + * @author zhuang + */ +@Mapper(componentModel = MappingConstants.ComponentModel.SPRING, unmappedTargetPolicy = ReportingPolicy.IGNORE) +public interface OperationLogMapper extends BaseMapper { +} diff --git a/src/main/java/com/zsc/edu/gateway/modules/operationLog/repo/OperationLogRepository.java b/src/main/java/com/zsc/edu/gateway/modules/operationLog/repo/OperationLogRepository.java new file mode 100644 index 0000000..c52d126 --- /dev/null +++ b/src/main/java/com/zsc/edu/gateway/modules/operationLog/repo/OperationLogRepository.java @@ -0,0 +1,7 @@ +package com.zsc.edu.gateway.modules.operationLog.repo; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zsc.edu.gateway.modules.operationLog.entity.OperationLog; + +public interface OperationLogRepository extends BaseMapper { +} diff --git a/src/main/java/com/zsc/edu/gateway/modules/operationLog/service/OperationLogService.java b/src/main/java/com/zsc/edu/gateway/modules/operationLog/service/OperationLogService.java new file mode 100644 index 0000000..40253c4 --- /dev/null +++ b/src/main/java/com/zsc/edu/gateway/modules/operationLog/service/OperationLogService.java @@ -0,0 +1,7 @@ +package com.zsc.edu.gateway.modules.operationLog.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zsc.edu.gateway.modules.operationLog.entity.OperationLog; + +public interface OperationLogService extends IService { +} diff --git a/src/main/java/com/zsc/edu/gateway/modules/operationLog/service/impl/OperationLogServiceImpl.java b/src/main/java/com/zsc/edu/gateway/modules/operationLog/service/impl/OperationLogServiceImpl.java new file mode 100644 index 0000000..5d6f427 --- /dev/null +++ b/src/main/java/com/zsc/edu/gateway/modules/operationLog/service/impl/OperationLogServiceImpl.java @@ -0,0 +1,16 @@ +package com.zsc.edu.gateway.modules.operationLog.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zsc.edu.gateway.modules.operationLog.entity.OperationLog; +import com.zsc.edu.gateway.modules.operationLog.repo.OperationLogRepository; +import com.zsc.edu.gateway.modules.operationLog.service.OperationLogService; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; + +/** + * @author zhuang + */ +@AllArgsConstructor +@Service +public class OperationLogServiceImpl extends ServiceImpl implements OperationLogService { +}