ArticleStatus.java
3.0 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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
// common/enums/ArticleStatus.java
package com.aigeo.common.enums;
/**
* 文章状态枚举
* 定义文章在生成、编辑、发布流程中的各种状态
*
* @author AIGEO Team
* @since 1.0.0
*/
public enum ArticleStatus {
/**
* 草稿状态
*/
DRAFT("草稿"),
/**
* 生成中
*/
GENERATING("生成中"),
/**
* 生成完成,待审核
*/
PENDING_REVIEW("待审核"),
/**
* 审核中
*/
REVIEWING("审核中"),
/**
* 审核通过,待发布
*/
APPROVED("已批准"),
/**
* 已发布
*/
PUBLISHED("已发布"),
/**
* 已撤回
*/
WITHDRAWN("已撤回"),
/**
* 审核拒绝
*/
REJECTED("已拒绝"),
/**
* 已归档
*/
ARCHIVED("已归档");
private final String description;
ArticleStatus(String description) {
this.description = description;
}
public String getDescription() {
return description;
}
/**
* 检查是否可以编辑
*/
public boolean isEditable() {
return this == DRAFT || this == REJECTED;
}
/**
* 检查是否可以提交审核
*/
public boolean canSubmitForReview() {
return this == DRAFT || this == REJECTED;
}
/**
* 检查是否可以发布
*/
public boolean canPublish() {
return this == APPROVED;
}
/**
* 检查是否可以撤回
*/
public boolean canWithdraw() {
return this == PUBLISHED;
}
/**
* 检查是否处于最终状态
*/
public boolean isFinalStatus() {
return this == PUBLISHED || this == ARCHIVED || this == WITHDRAWN;
}
/**
* 检查是否处于处理中状态
*/
public boolean isProcessing() {
return this == GENERATING || this == REVIEWING;
}
/**
* 获取下一个可能的状态列表
*/
public ArticleStatus[] getNextPossibleStatuses() {
switch (this) {
case DRAFT:
return new ArticleStatus[]{GENERATING, PENDING_REVIEW};
case GENERATING:
return new ArticleStatus[]{DRAFT, PENDING_REVIEW, REJECTED};
case PENDING_REVIEW:
return new ArticleStatus[]{REVIEWING};
case REVIEWING:
return new ArticleStatus[]{APPROVED, REJECTED};
case APPROVED:
return new ArticleStatus[]{PUBLISHED, DRAFT};
case PUBLISHED:
return new ArticleStatus[]{WITHDRAWN, ARCHIVED};
case REJECTED:
return new ArticleStatus[]{DRAFT};
case WITHDRAWN:
return new ArticleStatus[]{DRAFT, ARCHIVED};
case ARCHIVED:
return new ArticleStatus[]{};
default:
return new ArticleStatus[]{};
}
}
@Override
public String toString() {
return description;
}
}