package com.fs.audit.enums;

/**
 * 审核用户类型
 */
public enum AuditUserType {

    COMPANY_USER(0, "客服用户"),   // 默认
    SYS_USER(1, "系统用户");

    private final Integer code;
    private final String desc;

    AuditUserType(Integer code, String desc) {
        this.code = code;
        this.desc = desc;
    }

    public static AuditUserType fromCode(Integer code) {
        if (code == null) {
            return COMPANY_USER; //  默认兜底
        }
        for (AuditUserType type : values()) {
            if (type.code.equals(code)) {
                return type;
            }
        }
        throw new IllegalArgumentException("未知的审核用户类型: " + code);
    }

    /**
     * 工具方法：是否系统用户
     */
    public boolean isSysUser() {
        return this == SYS_USER;
    }

    /**
     * 工具方法：是否企业/客服用户
     */
    public boolean isCompanyUser() {
        return this == COMPANY_USER;
    }


    /**
     * 获取审核用户类型编码
     *
     * <p>
     * 该编码用于：
     * <ul>
     *   <li>数据库字段存储</li>
     *   <li>接口参数传输</li>
     *   <li>审核日志记录</li>
     * </ul>
     * </p>
     *
     * @return 审核用户类型编码
     */
    public Integer getCode() {
        return code;
    }

    /**
     * 获取审核用户类型描述
     *
     * @return 类型描述
     */
    public String getDesc() {
        return desc;
    }

}
