KeywordStatus.java
2.5 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
package com.aigeo.common.enums;
import lombok.Getter;
/**
* 关键词状态枚举
* 对应数据库字段:ai_keywords.status
*
* 关键词在内容生成流程中的状态:
* - PENDING: 待处理,新添加的关键词
* - PLANNED: 已计划,已安排进入内容生成计划
* - GENERATED: 已生成,基于该关键词生成了内容
* - PUBLISHED: 已发布,内容已发布到目标平台
*
* @author AIGEO Team
* @since 1.0.0
*/
@Getter
public enum KeywordStatus {
/**
* 待处理 - 关键词已添加,等待处理
*/
PENDING("pending", "待处理"),
/**
* 已计划 - 关键词已安排进入生成计划
*/
PLANNED("planned", "已计划"),
/**
* 已生成 - 基于该关键词生成了内容
*/
GENERATED("generated", "已生成"),
/**
* 已发布 - 内容已发布到目标平台
*/
PUBLISHED("published", "已发布");
/**
* 数据库存储值
*/
private final String code;
/**
* 显示名称
*/
private final String displayName;
KeywordStatus(String code, String displayName) {
this.code = code;
this.displayName = displayName;
}
/**
* 根据代码获取枚举
*/
public static KeywordStatus fromCode(String code) {
for (KeywordStatus status : values()) {
if (status.code.equals(code)) {
return status;
}
}
throw new IllegalArgumentException("未知的关键词状态代码: " + code);
}
/**
* 检查是否为最终状态
*/
public boolean isFinalStatus() {
return this == GENERATED || this == PUBLISHED;
}
/**
* 检查是否可以编辑
*/
public boolean isEditable() {
return this == PENDING || this == PLANNED;
}
/**
* 检查是否可以删除
*/
public boolean isDeletable() {
return this == PENDING;
}
/**
* 检查是否可以生成内容
*/
public boolean canGenerateContent() {
return this == PLANNED || this == PENDING;
}
/**
* 获取下一个状态
*/
public KeywordStatus getNextStatus() {
switch (this) {
case PENDING:
return PLANNED;
case PLANNED:
return GENERATED;
case GENERATED:
return PUBLISHED;
default:
return this;
}
}
}