PublishStatus.java 1.6 KB
package com.aigeo.common.enums;

import lombok.Getter;

/**
 * 发布状态枚举
 * 对应数据库字段:
 * - ai_publishing_records.status
 * - ai_landing_page_versions.status
 * - ai_website_channels.status
 *
 * @author AIGEO Team
 * @since 1.0.0
 */
@Getter
public enum PublishStatus {
    
    /**
     * 已调度 - 任务已安排,等待发布
     */
    SCHEDULED("scheduled", "已调度"),
    
    /**
     * 已发布 - 内容成功发布到目标平台
     */
    PUBLISHED("published", "已发布"),
    
    /**
     * 发布失败 - 发布过程中出现错误
     */
    FAILED("failed", "发布失败"),
    
    /**
     * 草稿 - 内容处于草稿状态
     */
    DRAFT("draft", "草稿");

    /**
     * 数据库存储值
     */
    private final String code;
    
    /**
     * 显示名称
     */
    private final String displayName;

    PublishStatus(String code, String displayName) {
        this.code = code;
        this.displayName = displayName;
    }
    
    /**
     * 根据代码获取枚举
     */
    public static PublishStatus fromCode(String code) {
        for (PublishStatus status : values()) {
            if (status.code.equals(code)) {
                return status;
            }
        }
        throw new IllegalArgumentException("未知的发布状态代码: " + code);
    }
    
    /**
     * 检查是否为最终状态
     */
    public boolean isFinalStatus() {
        return this == PUBLISHED || this == FAILED;
    }
    
    /**
     * 检查是否可以重新发布
     */
    public boolean canRepublish() {
        return this == FAILED || this == DRAFT;
    }
}