package com.zm.order.tool.server.stream.enums;

import com.zm.order.enums.OrderSubType;
import com.zm.order.tool.server.enums.BizTypeEnum;

/**
 * 订单子类型映射
 *
 * <p>
 *
 * </p>
 *
 * @author nianchang
 * @date 2023/03/10 5:17 下午
 */
public enum OrderSubTypeMapping {

    /**
     * 烘焙多人点餐订单
     */
    BAKERY_MULTIPLE_USER(BizTypeEnum.BAKING.getType(), 3, OrderSubType.MULTIPLE_USER.getType()),

    /**
     * 餐饮多人点餐订单
     */
    CATERING_MULTIPLE_USER(BizTypeEnum.CATERING.getType(), 1, OrderSubType.MULTIPLE_USER.getType()),

    /**
     * 烘焙拼单
     */
    BAKERY_COLLECTIVE_BUYING(BizTypeEnum.BAKING.getType(), 4, OrderSubType.COLLECTIVE_BUYING.getType()),

    /**
     * 餐饮拼单
     */
    CATERING_COLLECTIVE_BUYING(BizTypeEnum.CATERING.getType(), 2, OrderSubType.COLLECTIVE_BUYING.getType()),

    /**
     * 烘焙预约单
     */
    BAKERY_RESERVATION(BizTypeEnum.BAKING.getType(), 10, OrderSubType.RESERVATION.getType()),

    /**
     * 餐饮预约单
     */
    CATERING_RESERVATION(BizTypeEnum.CATERING.getType(), 3, OrderSubType.RESERVATION.getType()),

    /**
     * 餐饮接龙
     *
     * 烘焙没有这个订单子类型
     */
    CATERING_CHAIN(BizTypeEnum.CATERING.getType(), 5, OrderSubType.CHAIN.getType()),

    /**
     * 烘焙拼团
     */
    BAKERY_GROUP_BUYING(BizTypeEnum.BAKING.getType(), 1, OrderSubType.GROUP_BUYING.getType()),

    /**
     * 餐饮拼团
     */
    CATERING_GROUP_BUYING(BizTypeEnum.CATERING.getType(), 6, OrderSubType.GROUP_BUYING.getType()),


    /**
     * 烘焙预售
     */
    BAKERY_PRE_SELL(BizTypeEnum.BAKING.getType(), 2, OrderSubType.PRE_SELL.getType()),

    /**
     * 烘焙蛋糕预定
     */
    BAKERY_CAKE_PRE(BizTypeEnum.BAKING.getType(), 7, OrderSubType.CAKE_PRE.getType()),

    /**
     * 烘焙代售
     */
    BAKERY_PROXY_SELL(BizTypeEnum.BAKING.getType(), 9, OrderSubType.PROXY_SELL.getType()),

    /**
     * 烘焙砍价
     */
    BAKERY_BARGAIN(BizTypeEnum.BAKING.getType(), 6, OrderSubType.BARGAIN.getType()),


    ;
    /**
     * 业务类型
     *
     * {@link BizTypeEnum}
     */
    private Integer bizType;

    /**
     * 旧枚举值
     */
    private Integer oldCode;

    /**
     * 新枚举值
     */
    private Integer newCode;

    public Integer getBizType() {
        return bizType;
    }

    public Integer getOldCode() {
        return oldCode;
    }

    public Integer getNewCode() {
        return newCode;
    }

    OrderSubTypeMapping(Integer bizType, Integer oldCode, Integer newCode) {
        this.bizType = bizType;
        this.oldCode = oldCode;
        this.newCode = newCode;
    }
}
