/*
 * Copyright (c) 2018-2999 广州市蓝海创新科技有限公司 All rights reserved.
 *
 * https://www.mall4j.com/
 *
 * 未经允许，不可做商业用途！
 *
 * 版权所有，侵权必究！
 */

package com.yami.shop.bean.order;

/**
 * 该接口定义了提交订单事件先后顺序相关的常量，用于明确在不同业务场景（如涉及各种优惠活动等情况）下提交订单时各业务逻辑执行的先后顺序，
 * 方便在订单处理流程中进行统一的规则控制，确保各个环节按照既定顺序依次执行，避免因顺序混乱导致的业务逻辑错误或计算错误等问题。
 *
 * @author LGH
 */
public interface ConfirmOrderOrder {

    /**
     * 定义表示没有任何活动时提交订单各业务逻辑执行顺序的常量，值为0，意味着在这种最简单的情况下，相关业务逻辑按照此默认顺序执行。
     * 当订单不存在满减、优惠券、分销等活动时，各环节处理会参考此顺序进行，例如商品价格计算、运费计算等基础操作的顺序安排。
     */
    int DEFAULT = 0;

    /**
     * 定义表示满减活动参与时提交订单各业务逻辑执行顺序的常量，值为100，该顺序排在 DEFAULT（无活动情况）后面，
     * 意味着当订单涉及满减活动时，满减相关的业务逻辑（如满减金额计算、满减规则校验等）会在没有活动时的基础业务逻辑之后执行，
     * 确保先完成商品原价相关基础计算，再根据满减规则进行相应的优惠计算和调整。
     */
    int DISCOUNT = 100;

    /**
     * 定义表示使用优惠券活动参与时提交订单各业务逻辑执行顺序的常量，值为200，该顺序排在 DISCOUNT（满减活动情况）后面，
     * 说明当订单在已经有满减活动的基础上，若还使用了优惠券，那么优惠券相关的业务逻辑（如优惠券可用校验、优惠金额抵扣等）会在满减业务逻辑之后执行，
     * 以此类推，按照先后顺序依次完成各优惠活动相关的业务处理，保证优惠计算的准确性和合理性。
     */
    int COUPON = 200;

    /**
     * 定义表示涉及分销业务时提交订单各业务逻辑执行顺序的常量，值为300，该顺序排在 COUPON（优惠券活动情况）后面，
     * 即当订单在经过满减、使用优惠券等优惠活动处理后，如果存在分销相关业务逻辑（如分销佣金计算、分销规则判断等），则会在此之后执行，
     * 这样可以在完成价格优惠调整后，再去处理涉及收益分配等方面的分销业务逻辑，使整个订单处理流程更加清晰、有序。
     */
    int DISTRIBUTION = 300;
}