fix: 重新设计依赖,添加多个模块

This commit is contained in:
2025-11-24 23:42:13 +08:00
parent 7a3d3a06ba
commit 050e808ab8
12 changed files with 409 additions and 0 deletions

View File

@@ -0,0 +1,32 @@
package cn.meowrain.aioj.backend.framework.log;
import cn.meowrain.aioj.backend.framework.log.aspect.SysLogAspect;
import cn.meowrain.aioj.backend.framework.log.config.AIOJLogPropertiesConfiguration;
import cn.meowrain.aioj.backend.framework.log.event.SysLogListener;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableAsync;
@EnableAsync
@Configuration(proxyBeanMethods = false)
@EnableConfigurationProperties(AIOJLogPropertiesConfiguration.class)
@ConditionalOnProperty(value = "aioj.log.enabled", matchIfMissing = true)
public class LogAutoConfiguration {
/**
* 创建并返回SysLogListener的Bean实例
*/
@Bean
public SysLogListener sysLogListener(AIOJLogPropertiesConfiguration logProperties, RemoteLogService remoteLogService) {
return new SysLogListener(remoteLogService, logProperties);
}
/**
* 返回切面类实例
* @return {@link SysLogAspect}
*/
@Bean
public SysLogAspect sysLogAspect() {
return new SysLogAspect();
}
}

View File

@@ -0,0 +1,21 @@
package cn.meowrain.aioj.backend.framework.log.config;
import lombok.Getter;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;
@Getter
@Setter
@ConfigurationProperties(AIOJLogPropertiesConfiguration.PREFIX)
public class AIOJLogPropertiesConfiguration {
public static final String PREFIX = "aioj.log";
/**
* 开启日志记录
*/
private boolean enabled = true;
/**
* 请求报文最大存储长度
*/
private Integer maxLength = 20000;
}

View File

@@ -0,0 +1,92 @@
package cn.meowrain.aioj.backend.framework.log.entity;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* 日志对象
*/
@Data
public class SysLog implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 编号
*/
private Long id;
/**
* 日志类型
*/
private String logType;
/**
* 日志标题
*/
private String title;
/**
* 创建者
*/
private String createBy;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 更新时间
*/
private LocalDateTime updateTime;
/**
* 操作IP地址
*/
private String remoteAddr;
/**
* 用户代理
*/
private String userAgent;
/**
* 请求URI
*/
private String requestUri;
/**
* 操作方式
*/
private String method;
/**
* 操作提交的数据
*/
private String params;
/**
* 执行时间
*/
private Long time;
/**
* 异常信息
*/
private String exception;
/**
* 服务ID
*/
private String serviceId;
/**
* 删除标记
*/
private String delFlag;
}

View File

@@ -0,0 +1,33 @@
package cn.meowrain.aioj.backend.framework.log.enums;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
/**
* 日志类型枚举
*/
@Getter
@RequiredArgsConstructor
public enum LogTypeEnum {
/**
* 正常日志类型
*/
NORMAL("0", "正常日志"),
/**
* 错误日志类型
*/
ERROR("9", "错误日志");
/**
* 类型
*/
private final String type;
/**
* 描述
*/
private final String description;
}

View File

@@ -0,0 +1,20 @@
package cn.meowrain.aioj.backend.framework.log.event;
import cn.meowrain.aioj.backend.framework.log.annotation.SysLog;
import org.springframework.context.ApplicationEvent;
import java.io.Serial;
/**
* 系统日志事件类
*/
public class SysLogEvent extends ApplicationEvent {
@Serial
private static final long serialVersionUID = 1L;
/**
* 构造方法根据源SysLog对象创建SysLogEvent
*/
public SysLogEvent(SysLog source) {
super(source);
}
}

View File

@@ -0,0 +1,24 @@
package cn.meowrain.aioj.backend.framework.log.event;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
import java.io.Serializable;
/**
* 系统
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class SysLogEventSource extends SysLogEvent implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 参数重写成object
*/
private Object body;
}

View File

@@ -0,0 +1,36 @@
package cn.meowrain.aioj.backend.framework.log.event;
import cn.meowrain.aioj.backend.framework.log.config.AIOJLogPropertiesConfiguration;
import cn.meowrain.aioj.backend.framework.log.entity.SysLog;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.event.EventListener;
import org.springframework.core.annotation.Order;
import org.springframework.scheduling.annotation.Async;
@RequiredArgsConstructor
public class SysLogListener implements InitializingBean {
private final static ObjectMapper objectMapper = new ObjectMapper();
private final RemoteLogService remoteLogService;
private final AIOJLogPropertiesConfiguration logProperties;
@SneakyThrows
@Async
@Order
@EventListener(SysLogEvent.class)
public void saveLog(SysLogEvent sysLogEvent){
SysLogEventSource source = (SysLogEventSource) sysLogEvent.getSource();
SysLog sysLog = new SysLog();
BeanUtils.copyProperties(source, sysLog);
}
@Override
public void afterPropertiesSet() throws Exception {
}
}

View File

@@ -0,0 +1,18 @@
package cn.meowrain.aioj.backend.framework.log.init;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.env.EnvironmentPostProcessor;
import org.springframework.core.Ordered;
import org.springframework.core.env.ConfigurableEnvironment;
public class ApplicationLoggerInitializer implements EnvironmentPostProcessor, Ordered {
@Override
public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) {
}
@Override
public int getOrder() {
return Ordered.LOWEST_PRECEDENCE;
}
}

View File

@@ -0,0 +1 @@
cn.meowrain.aioj.backend.framework.log.LogAutoConfiguration

View File

@@ -0,0 +1,48 @@
package cn.meowrain.backend.common.mybaits.base;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* 基础实体抽象类,包含通用实体字段
*/
@Getter
@Setter
public class BaseEntity implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 创建者
*/
@Schema(description = "创建人")
@TableField(fill = FieldFill.INSERT)
private String createBy;
/**
* 创建时间
*/
@Schema(description = "创建时间")
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
/**
* 更新者
*/
@Schema(description = "更新人")
@TableField(fill = FieldFill.INSERT_UPDATE)
private String updateBy;
/**
* 更新时间
*/
@Schema(description = "更新时间")
@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updateTime;
}

View File

@@ -0,0 +1 @@
com.pig4cloud.pig.common.mybatis.MybatisAutoConfiguration