package org.qinan.safetyeval.domain.exception;

/**
 * 业务错误码枚举
 * <p>
 * 规范：模块(2位)-功能(2位)-序号(3位)
 * </p>
 *
 * @author safety-eval
 */
public enum ErrorCode {

    // ---- 部门 ----
    ORG_DEPARTMENT_NOT_FOUND("01-02-001", "部门不存在"),

    // ---- 装备信息 ----
    ORG_EQUIPMENT_NOT_FOUND("01-03-001", "装备信息不存在"),

    // ---- 机构信息 ----
    ORG_INFO_NOT_FOUND("01-04-001", "机构信息不存在"),

    // ---- 人员信息 ----
    ORG_PERSONNEL_NOT_FOUND("01-05-001", "人员信息不存在"),
    ORG_PERSONNEL_ACCOUNT_EXISTS("01-05-002", "账号已存在"),

    // ---- 人员证书 ----
    ORG_PERSONNEL_CERT_NOT_FOUND("01-06-001", "人员证书不存在"),

    // ---- 人员变更记录 ----
    ORG_PERSONNEL_CHANGE_NOT_FOUND("01-07-001", "人员变更记录不存在"),

    // ---- 岗位 ----
    ORG_POSITION_NOT_FOUND("01-08-001", "岗位不存在"),

    // ---- 机构资质证书 ----
    ORG_QUALIFICATION_NOT_FOUND("01-09-001", "机构资质证书不存在"),

    // ---- 人员离职申请 ----
    ORG_RESIGN_APPLY_NOT_FOUND("01-10-001", "人员离职申请不存在"),

    // ---- 资质备案申请 ----
    QUAL_FILING_NOT_FOUND("02-01-001", "资质备案申请不存在"),

    // ---- 备案变更 ----
    QUAL_FILING_CHANGE_NOT_FOUND("02-02-001", "备案变更不存在"),
    STATUS_NOT_APPROVED("02-03-001", "当前状态不允许审核"),

    // ---- 备案变更明细 ----
    QUAL_FILING_CHANGE_DETAIL_NOT_FOUND("02-03-001", "备案变更明细不存在"),

    // ---- 法定代表人承诺书 ----
    QUAL_FILING_COMMITMENT_NOT_FOUND("02-04-001", "法定代表人承诺书不存在"),

    // ---- 备案申请装备 ----
    QUAL_FILING_EQUIPMENT_NOT_FOUND("02-05-001", "备案申请装备不存在"),

    // ---- 备案申请材料 ----
    QUAL_FILING_MATERIAL_NOT_FOUND("02-06-001", "备案申请材料不存在"),

    // ---- 备案申请人员 ----
    QUAL_FILING_PERSONNEL_NOT_FOUND("02-07-001", "备案申请人员不存在"),

    // ---- 备案申请人员证书 ----
    QUAL_FILING_PERSONNEL_CERT_NOT_FOUND("02-08-001", "备案申请人员证书不存在"),

    // ---- 审核专家 ----
    QUAL_FILING_EXPERT_NOT_FOUND("02-09-001", "审核专家不存在"),
    QUAL_FILING_EXPERT_ACCOUNT_EXISTS("02-09-002", "专家账号已存在"),

    QUAL_FILING_STATUS_INVALID("02-01-101", "当前备案状态不允许该操作"),
    QUAL_FILING_MATERIAL_INCOMPLETE("02-01-102", "必填备案材料未上传完整"),
    QUAL_FILING_COMMITMENT_REQUIRED("02-01-103", "请先填写法定代表人承诺书"),
    QUAL_FILING_PERSONNEL_DUPLICATE("02-07-101", "备案人员已存在，请勿重复添加"),
    QUAL_FILING_EQUIPMENT_DUPLICATE("02-05-101", "备案装备已存在，请勿重复添加"),
    QUAL_FILING_CHANGE_NO_DIFF("02-02-101", "备案信息无变更，无需提交"),
    QUAL_FILING_CHANGE_IN_PROGRESS("02-02-102", "存在进行中的备案变更"),

    // ---- 用户 ----
    ACCOUNT_NOT_FOUND("04-01-001", "用户不存在"),
    ACCOUNT_EXISTS("04-01-002", "账号已存在"),

    // ---- 文件存储 ----
    FILE_UPLOAD_FAILED("03-01-001", "文件上传失败"),
    FILE_UPLOAD_EMPTY("03-01-002", "上传文件为空"),
    FILE_NOT_FOUND("03-01-003", "文件不存在"),
    FILE_DELETE_FAILED("03-01-004", "文件删除失败"),
    FILE_DOWNLOAD_FAILED("03-01-005", "文件下载失败"),
    FILE_OSS_OPERATION_FAILED("03-01-006", "OSS操作异常"),
    FILE_URL_GENERATE_FAILED("03-01-007", "文件地址生成失败"),
    FILE_SIZE_EXCEEDED("03-01-008", "文件大小超出限制"),


    /**
     * 短信码不存在
     */
    SMS_SOURCE_CODE_NOT_EXIST("04-01-001", "短信码不存在"),

    // gbs
    GBS_USER_ERROR("04-01-001", "gbs用户未登录"),

    /**
     * 未知错误
     */
    UNKNOWN_ERROR("99-99-999", "系统异常，请稍后重试");

    private final String code;
    private final String message;

    ErrorCode(String code, String message) {
        this.code = code;
        this.message = message;
    }

    public String getCode() {
        return code;
    }

    public String getMessage() {
        return message;
    }
}
