Skip to content

Commit 0f7a506

Browse files
committed
feature: 增加实体基类,开启字段自动填充
1 parent cb8207c commit 0f7a506

File tree

11 files changed

+122
-255
lines changed

11 files changed

+122
-255
lines changed

backend/services/data-management-service/src/main/java/com/dataengine/datamanagement/domain/model/dataset/Dataset.java

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package com.dataengine.datamanagement.domain.model.dataset;
22

33
import com.baomidou.mybatisplus.annotation.TableField;
4-
import com.baomidou.mybatisplus.annotation.TableId;
54
import com.baomidou.mybatisplus.annotation.TableName;
5+
import com.dataengine.common.domain.model.base.BaseEntity;
66
import lombok.Getter;
77
import lombok.Setter;
88

@@ -18,38 +18,23 @@
1818
@Getter
1919
@Setter
2020
@TableName(value = "t_dm_datasets", autoResultMap = true)
21-
public class Dataset {
22-
@TableId
23-
private String id;
21+
public class Dataset extends BaseEntity<String> {
2422
private String name;
2523
private String description;
26-
// DB: dataset_type
2724
private String datasetType;
28-
2925
private String category;
30-
31-
// DB: path
3226
private String path;
33-
// DB: format
3427
private String format;
3528
private String schemaInfo;
36-
37-
// DB: size_bytes
3829
private Long sizeBytes = 0L;
3930
private Long fileCount = 0L;
4031
private Long recordCount = 0L;
4132
private Integer retentionDays = 0;
42-
4333
private String metadata;
44-
4534
private String status; // DRAFT/ACTIVE/ARCHIVED/PROCESSING
4635
private Boolean isPublic = false;
4736
private Boolean isFeatured = false;
4837
private Long version = 0L;
49-
private LocalDateTime createdAt;
50-
private LocalDateTime updatedAt;
51-
private String createdBy;
52-
private String updatedBy;
5338

5439
// 聚合内的便捷集合(非持久化关联,由应用服务填充)
5540
@TableField(exist = false)

backend/services/data-management-service/src/main/java/com/dataengine/datamanagement/interfaces/rest/DatasetTypeController.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,13 @@ private DatasetTypeResponse createDatasetType(String code, String name, String d
4444
}
4545

4646
private String getIconForType(String typeCode) {
47-
switch (typeCode) {
48-
case "IMAGE": return "🖼️";
49-
case "TEXT": return "📄";
50-
case "AUDIO": return "🎵";
51-
case "VIDEO": return "🎬";
52-
case "MULTIMODAL": return "📊";
53-
default: return "📁";
54-
}
47+
return switch (typeCode) {
48+
case "IMAGE" -> "🖼️";
49+
case "TEXT" -> "📄";
50+
case "AUDIO" -> "🎵";
51+
case "VIDEO" -> "🎬";
52+
case "MULTIMODAL" -> "📊";
53+
default -> "📁";
54+
};
5555
}
5656
}

backend/shared/domain-common/src/main/java/com/dataengine/common/domain/AggregateRoot.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,25 @@
11
package com.dataengine.common.domain;
22

3-
import java.time.LocalDateTime;
4-
import java.util.Objects;
3+
import com.dataengine.common.domain.model.base.BaseEntity;
54

65
/**
76
* DDD聚合根基类
87
*/
9-
public abstract class AggregateRoot<ID> extends Entity<ID> {
10-
8+
public abstract class AggregateRoot<ID> extends BaseEntity<ID> {
9+
1110
protected AggregateRoot() {
1211
super();
1312
}
14-
13+
1514
protected AggregateRoot(ID id) {
1615
super(id);
1716
}
18-
17+
1918
/**
2019
* 获取聚合版本号(用于乐观锁)
2120
*/
2221
public abstract Long getVersion();
23-
22+
2423
/**
2524
* 设置聚合版本号
2625
*/

backend/shared/domain-common/src/main/java/com/dataengine/common/domain/Entity.java

Lines changed: 0 additions & 68 deletions
This file was deleted.
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package com.dataengine.common.domain.model.base;
2+
3+
import com.baomidou.mybatisplus.annotation.FieldFill;
4+
import com.baomidou.mybatisplus.annotation.IdType;
5+
import com.baomidou.mybatisplus.annotation.TableField;
6+
import com.baomidou.mybatisplus.annotation.TableId;
7+
import lombok.Getter;
8+
import lombok.NoArgsConstructor;
9+
import lombok.Setter;
10+
11+
import java.io.Serial;
12+
import java.io.Serializable;
13+
import java.time.LocalDateTime;
14+
15+
/**
16+
* 实体基类
17+
*
18+
* @param <ID> 实体ID类型
19+
*/
20+
@Getter
21+
@Setter
22+
@NoArgsConstructor
23+
public abstract class BaseEntity<ID> implements Serializable {
24+
@Serial
25+
private static final long serialVersionUID = 1L;
26+
27+
@TableId(type = IdType.ASSIGN_ID)
28+
protected ID id;
29+
30+
@TableField(fill = FieldFill.INSERT)
31+
protected LocalDateTime createdAt;
32+
33+
@TableField(fill = FieldFill.INSERT_UPDATE)
34+
protected LocalDateTime updatedAt;
35+
36+
@TableField(fill = FieldFill.INSERT)
37+
protected String createdBy;
38+
39+
@TableField(fill = FieldFill.INSERT_UPDATE)
40+
protected String updatedBy;
41+
42+
public BaseEntity(ID id) {
43+
super();
44+
this.id = id;
45+
}
46+
}
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
package com.dataengine.common.infrastructure.config;
2+
3+
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
4+
import lombok.extern.slf4j.Slf4j;
5+
import org.apache.ibatis.reflection.MetaObject;
6+
import org.springframework.context.annotation.Configuration;
7+
8+
import java.time.LocalDateTime;
9+
10+
/**
11+
* 持久化实体元数据对象处理器
12+
*
13+
* @author dallas
14+
* @since 2025-10-17
15+
*/
16+
@Slf4j
17+
@Configuration
18+
public class EntityMetaObjectHandler implements MetaObjectHandler {
19+
@Override
20+
public void insertFill(MetaObject metaObject) {
21+
log.debug("Starting insert fill...");
22+
23+
// 创建时间填充
24+
this.strictInsertFill(metaObject, "createdAt", LocalDateTime.class, LocalDateTime.now());
25+
// 更新时间填充
26+
this.strictInsertFill(metaObject, "updatedAt", LocalDateTime.class, LocalDateTime.now());
27+
// 创建人填充(需要从安全上下文获取当前用户)
28+
String currentUser = getCurrentUser();
29+
this.strictInsertFill(metaObject, "createdBy", String.class, currentUser);
30+
// 更新人填充
31+
this.strictInsertFill(metaObject, "updatedBy", String.class, currentUser);
32+
}
33+
34+
@Override
35+
public void updateFill(MetaObject metaObject) {
36+
log.debug("Starting update fill...");
37+
// 更新时间填充
38+
this.strictUpdateFill(metaObject, "updatedAt", LocalDateTime.class, LocalDateTime.now());
39+
// 更新人填充
40+
this.strictUpdateFill(metaObject, "updatedBy", String.class, getCurrentUser());
41+
}
42+
43+
/**
44+
* 获取当前用户(需要根据你的安全框架实现)
45+
*/
46+
private String getCurrentUser() {
47+
// todo 这里需要根据你的安全框架实现,例如Spring Security、Shiro等
48+
// 示例:返回默认用户或从SecurityContext获取
49+
try {
50+
// 如果是Spring Security
51+
// return SecurityContextHolder.getContext().getAuthentication().getName();
52+
53+
// 临时返回默认值,请根据实际情况修改
54+
return "system";
55+
} catch (Exception e) {
56+
log.error("Error getting current user", e);
57+
return "unknown";
58+
}
59+
}
60+
}

backend/shared/domain-common/src/main/java/com/dataengine/shared/domain/AggregateRoot.java

Lines changed: 0 additions & 33 deletions
This file was deleted.

backend/shared/domain-common/src/main/java/com/dataengine/shared/domain/DomainEvent.java

Lines changed: 0 additions & 40 deletions
This file was deleted.

backend/shared/domain-common/src/main/java/com/dataengine/shared/domain/DomainEventPublisher.java

Lines changed: 0 additions & 33 deletions
This file was deleted.

0 commit comments

Comments
 (0)