LandingPageAsset.java
3.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
// landingpage/entity/LandingPageAsset.java
package com.aigeo.landingpage.entity;
import jakarta.persistence.*;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.hibernate.annotations.CreationTimestamp;
import org.hibernate.annotations.UpdateTimestamp;
import java.time.LocalDateTime;
import com.aigeo.common.enums.AssetType;
/**
* 落地页资源实体类
* 对应数据库表:ai_landing_page_assets
*
* 存储落地页相关的资源文件信息,包括:
* - 关联的项目和资源类型
* - 上传文件的关联信息
* - 相关数据的JSON存储
*
* @author AIGEO Team
* @since 1.0.0
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "ai_landing_page_assets", indexes = {
@Index(name = "idx_landing_assets_project", columnList = "project_id"),
@Index(name = "idx_landing_assets_type", columnList = "asset_type"),
@Index(name = "idx_landing_assets_file", columnList = "uploaded_file_id")
})
public class LandingPageAsset {
/**
* 主键ID
*/
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", nullable = false, updatable = false)
private Integer id;
/**
* 关联的落地页项目ID
*/
@NotNull(message = "项目ID不能为空")
@Column(name = "project_id", nullable = false)
private Integer projectId;
/**
* 资源类型(如:image, video, document等)
*/
@Enumerated(EnumType.STRING)
@Column(name = "asset_type", nullable = false, length = 20)
private AssetType assetType;
/**
* 关联的上传文件ID
*/
@NotNull(message = "上传文件ID不能为空")
@Column(name = "uploaded_file_id", nullable = false)
private Integer uploadedFileId;
/**
* 相关数据(JSON格式存储额外信息)
*/
@Column(name = "related_data", columnDefinition = "JSON")
private String relatedData;
/**
* 创建时间
*/
@CreationTimestamp
@Column(name = "created_at", updatable = false)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createdAt;
/**
* 更新时间
*/
@UpdateTimestamp
@Column(name = "updated_at")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime updatedAt;
/**
* 检查是否为图片资源
*/
public boolean isImage() {
return AssetType.IMAGE.equals(assetType);
}
/**
* 检查是否为视频资源
*/
public boolean isVideo() {
return AssetType.VIDEO.equals(assetType);
}
/**
* 检查是否为文档资源
*/
public boolean isDocument() {
return AssetType.DOCUMENT.equals(assetType);
}
/**
* 检查是否有相关数据
*/
public boolean hasRelatedData() {
return relatedData != null && !relatedData.trim().isEmpty();
}
/**
* 获取资源的描述信息
*/
public String getAssetDescription() {
return String.format("%s资源 (文件ID: %d)", assetType.toString(), uploadedFileId);
}
}