# RateTypeEnum.java

    package cloud.wconnect.rateshop.cons.rateshop;

    import lombok.AllArgsConstructor;
    import lombok.Getter;

    import java.util.Arrays;
    import java.util.List;
    import java.util.Optional;

    /**
     * 房价类型枚举类
     *
     * @author lichen
     * @date 2024/5/13
     */
    @Getter
    @AllArgsConstructor
    public enum RateTypeEnum {

        /**
         * 早鸟价。早鸟价缓存前缀为空是因为缓存中有历史数据，为了兼容历史数据，空表示早鸟价
         */
        EARLY_BIRD_RATE(1, "latest_rate_", "rate-shop.rate-type.early-bird-rate"),

        /**
         * BAR房价
         */
        BEST_AVAILABLE_RATE(2, "latest_bar_rate_", "rate-shop.rate-type.best-available-rate");

        /**
         * 房价类型
         */
        private int rateType;

        /**
         * 表名前缀
         */
        private String tableNamePrefix;

        /**
         * 国际化code
         */
        private String i18nCode;

        /**
         * 获取表名
         *
         * @param year 年份
         * @return java.util.List<java.lang.String>
         * @author lichen
         * @date 2024/5/14
         */
        public static List<String> getTableNames(String year) {
            return Arrays.stream(RateTypeEnum.values()).map(item -> item.getTableNamePrefix() + year).toList();
        }

        /**
         * 获取国际化code
         *
         * @param rateType 房价类型
         * @return java.lang.String
         * @author lichen
         * @date 2024/5/15
         */
        public static String getI18nCode(int rateType) {
            Optional<RateTypeEnum> optional = Arrays.stream(RateTypeEnum.values()).filter(item -> rateType == item.getRateType()).findFirst();
            return optional.isPresent() ? optional.get().getI18nCode() : "";
        }

    }