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

package com.yami.shop.bean.order;

/**
 * `ShopCartEventOrder`接口用于定义购物车相关事件的先后顺序，在涉及多个购物车相关业务逻辑且这些逻辑存在执行顺序要求的场景下，
 * 通过定义这样的顺序常量，可以清晰地确定各个事件应该按照怎样的顺序依次执行，有助于保证整个购物车业务流程的准确性和稳定性。
 * 例如，在计算购物车商品总价时，可能需要先应用某些优惠活动，不同优惠活动的应用顺序就可以通过这里定义的顺序值来进行规范。
 *
 * @author LGH
 */
public interface ShopCartEventOrder {

    /**
     * 没有任何活动时的顺序，定义了一个默认的顺序值为`0`，表示在没有其他特殊活动影响购物车相关业务逻辑执行顺序的情况下，
     * 对应的操作或者事件应该按照这个基础顺序来执行，可作为一个基准顺序，其他带有特定活动相关的顺序值可以参照它来进行相对顺序的设定。
     */
    int DEFAULT = 0;

    /**
     * 满减活动的组装顺序，排在`DEFAULT`后面，值为`100`，意味着在购物车业务流程中，当涉及满减活动相关的逻辑处理时，
     * 应该在默认顺序（没有活动时的基础顺序）之后执行，通过这样明确的顺序设定，确保满减活动相关的计算、验证等操作在合适的时间点进行，
     * 避免与其他业务逻辑的执行顺序混乱而导致计算错误或者不符合业务预期的情况出现。
     */
    int DISCOUNT = 100;
}