实体增加 mac

This commit is contained in:
cheney 2026-05-19 16:06:04 +08:00
parent 4f346371af
commit d1134fe40f
6 changed files with 58 additions and 7 deletions

View File

@ -1,9 +1,19 @@
package com.cisd.tms; package com.cisd.tms;
import com.cisd.tms.common.crypto.config.ConfigCryptoCli; import com.cisd.tms.common.crypto.config.ConfigCryptoCli;
import org.springframework.boot.context.properties.ConfigurationPropertiesScan; import com.cisd.tms.modules.log.dto.OperationAuditCommand;
import com.cisd.tms.modules.log.enums.ActionType;
import com.cisd.tms.modules.log.enums.AuthLevel;
import com.cisd.tms.modules.log.enums.ModuleCode;
import com.cisd.tms.modules.log.enums.OperationResult;
import com.cisd.tms.modules.log.enums.OperatorRoleCode;
import com.cisd.tms.modules.log.service.OperationAuditService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.ConfigurationPropertiesScan;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication @SpringBootApplication
@ -11,6 +21,8 @@ import org.springframework.scheduling.annotation.EnableScheduling;
@EnableScheduling @EnableScheduling
public class TmsApplication { public class TmsApplication {
private static final Logger log = LoggerFactory.getLogger(TmsApplication.class);
public static void main(String[] args) { public static void main(String[] args) {
if (ConfigCryptoCli.shouldHandle(args)) { if (ConfigCryptoCli.shouldHandle(args)) {
int exitCode = ConfigCryptoCli.run(args, System.in, System.out, System.err); int exitCode = ConfigCryptoCli.run(args, System.in, System.out, System.err);
@ -19,6 +31,19 @@ public class TmsApplication {
} }
return; return;
} }
SpringApplication.run(TmsApplication.class, args); ConfigurableApplicationContext context = SpringApplication.run(TmsApplication.class, args);
log.error("=== 临时测试:调用 OperationAuditService record 方法 ===");
OperationAuditService auditService = context.getBean(OperationAuditService.class);
OperationAuditCommand command = new OperationAuditCommand()
.setOperatorRoleCode(OperatorRoleCode.SUPER_ADMIN)
.setOperatorAuthLevel(AuthLevel.FULL)
.setModuleCode(ModuleCode.SYSTEM)
.setActionType(ActionType.EXECUTE)
.setRemoteIp("127.0.0.1")
.setOperationResult(OperationResult.SUCCESS)
.setSummary("系统启动测试 - OperationAuditService 功能验证");
auditService.record(command, false);
log.error("=== 临时测试完成:审计日志已记录 ===");
} }
} }

View File

@ -2,20 +2,38 @@ package com.cisd.tms.infrastructure.persistence.mybatis;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import com.cisd.tms.modules.datamac.helper.Sm3MacCalculator;
import org.apache.ibatis.reflection.MetaObject; import org.apache.ibatis.reflection.MetaObject;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@Component @Component
@Primary
public class CommonMetaObjectHandler implements MetaObjectHandler { public class CommonMetaObjectHandler implements MetaObjectHandler {
@Override @Override
public void insertFill(MetaObject metaObject) { public void insertFill(MetaObject metaObject) {
if ( metaObject.hasSetter("createTime") ) {
this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now()); this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now());
}
if ( metaObject.hasSetter("updateTime") ) {
this.strictInsertFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now()); this.strictInsertFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now());
} }
// 插入时直接基于当前实体对象计算 MAC
if (metaObject.hasSetter("mac")) {
Object entity = metaObject.getOriginalObject();
String mac = Sm3MacCalculator.calculateForEntity(entity);
this.strictInsertFill(metaObject, "mac", String.class, mac);
}
}
@Override @Override
public void updateFill(MetaObject metaObject) { public void updateFill(MetaObject metaObject) {
if ( metaObject.hasSetter("updateTime") ) {
this.strictUpdateFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now()); this.strictUpdateFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now());
} }
} }
}

View File

@ -1,5 +1,7 @@
package com.cisd.tms.modules.cert.entity; package com.cisd.tms.modules.cert.entity;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.cisd.tms.infrastructure.persistence.entity.BaseEntity; import com.cisd.tms.infrastructure.persistence.entity.BaseEntity;
import lombok.Data; import lombok.Data;
@ -26,4 +28,8 @@ public class KeyEntity extends BaseEntity {
private String allowIps; private String allowIps;
private String signData; private String signData;
private String createBy; private String createBy;
// 标记此字段在插入和更新时都需要自动填充
@TableField(fill = FieldFill.INSERT_UPDATE)
private String mac;
} }

View File

@ -1,6 +1,7 @@
package com.cisd.tms.modules.log.entity; package com.cisd.tms.modules.log.entity;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.cisd.tms.modules.datamac.entity.DataMacEntity; import com.cisd.tms.modules.datamac.entity.DataMacEntity;

View File

@ -63,7 +63,7 @@ public class OperationAuditService {
.setAuditStatus(AuditStatus.PENDING); .setAuditStatus(AuditStatus.PENDING);
//todo 后续测试签名 //todo 后续测试签名
auditSigner.signEntity(entity); // auditSigner.signEntity(entity);
operationAuditLogRepository.add(entity); operationAuditLogRepository.add(entity);

View File

@ -708,4 +708,5 @@ INSERT IGNORE INTO tms_master_key_activate (
) VALUES (1, true, true); ) VALUES (1, true, true);
ALTER TABLE TMS.tms_auth_audit_log ADD mac varchar(100) NULL COMMENT '完整性校验值'; ALTER TABLE TMS.tms_operation_audit_log ADD mac varchar(100) NULL COMMENT '完整性校验值';
ALTER TABLE TMS.tms_key_entity ADD mac varchar(100) NULL COMMENT '完整性校验值';