注:该功能在pamirs-core 4.3.27 / 4.7.8.12以上版本可用
-
在模块依赖里新增
DataAuditModule.MODULE_MODULE
模块依赖。@Module( name = DemoModule.MODULE_NAME, dependencies = { CommonModule.MODULE_MODULE, DataAuditModule.MODULE_MODULE }, displayName = "****", version = "1.0.0" )
-
继承
OperationBody
模型,设置需要在操作日志中显示的字段,并重写clone方法,设置自定义字段值。用于在计入日志处传递参数。public class MyOperationBody extends OperationBody { public MyOperationBody(String operationModel, String operationName) { super(operationModel, operationName); } private String itemNames; public String getItemNames() { return itemNames; } public void setItemNames(String itemNames) { this.itemNames = itemNames; } @Override public OperationBody clone() { //设置自定义字段值 MyOperationBody body = OperationBody.transfer(this, new MyOperationBody(this.getOperationModel(), this.getOperationName())); body.setItemNames(this.getItemNames()); return body; } }
-
继承
OperationLog
模型,新增需要在操作日志中显示的字段。用于界面展示该自定义字段。@Model.model(MyOperationLog.MODEL_MODEL) @Model(displayName = "自定义操作日志", labelFields = {"itemNames"}) public class MyOperationLog extends OperationLog { public static final String MODEL_MODEL = "operation.MyOperationLog"; @Field(displayName = "新增日志字段") @Field.String private String itemNames; }
-
定义一个常量
public interface OperationLogConstants { String MY_SCOPE = "MY_SCOPE"; }
-
在计入日志处,构造出
MyOperationBody
对象,向该对象中设置自定义日志字段。构造OperationLogBuilder
对象并设置scope
的值,用于跳转自定义服务实现。MyOperationBody body = new MyOperationBody(CustomerCompanyUserProxy.MODEL_MODEL, CustomerCompanyUserProxyDataAudit.UPDATE); body.setItemNames("新增日志字段"); OperationLogBuilder builder = OperationLogBuilder.newInstance(body); //设置一个scope,用于跳转自定义服务实现.OperationLogConstants.MY_SCOPE是常量,请自行定义 builder.setScope(OperationLogConstants.MY_SCOPE); //记录日志 builder.record(data.queryByPk(), data);
-
实现
OperationLogService
接口,加上@SPI.Service()
注解,并设置常量,一般为类名。定义scope(注意:保持和计入日志处传入的scope值一致),用于计入日志处找到该自定义服务实现。根据逻辑重写父类中方法,便可以扩展操作日志,实现自定义记录了。@Slf4j @Service @SPI.Service("myOperationLogServiceImpl") public class MyOperationLogServiceImpl< T extends D > extends OperationLogServiceImpl< T > implements OperationLogService< T >{ //定义scope,用于计入日志处找到该自定义服务实现 private static final String[] MY_SCOPE = new String[]{OperationLogConstants.MY_SCOPE}; @Override public String[] scopes() { return MY_SCOPE; } //此方法用于创建操作日志 @Override protected OperationLog createOperationLog(OperationBody body, OperationLogConfig config) { MyOperationBody body1 = (MyOperationBody) body; return new MyOperationLog().setItemNames(body1.getItemNames()) .setLogConfig(config) .setModel(body.getOperationModel()) .setOperationName(body.getOperationName()) .setRemark(body.getRemark()) .setBusinessId(body.getBusinessId()) .setBusinessCode(body.getBusinessCode()) .setBusinessName(body.getBusinessName()) .setPartnerId(body.getPartnerId()) .setPartnerCode(body.getPartnerCode()) .setExtId(body.getExtId()) .setExtName(body.getExtName()) .setOperatorId(ObjectHelper.getOrDefault(body.getOperatorId(), PamirsSession.getUserId())) .setOperatorName(ObjectHelper.getOrDefault(body.getOperatorName(), PamirsSession.getUserName())); } }
Oinone社区 作者:yexiu原创文章,如若转载,请注明出处:https://doc.oinone.top/backend/14174.html
访问Oinone官网:https://www.oinone.top获取数式Oinone低代码应用平台体验