package co.yixiang.yshop.module.member.service.integralrule.strategy;

import co.yixiang.yshop.module.member.api.integralRule.IntegralRuleDTO;
import co.yixiang.yshop.module.member.enums.BillDetailEnum;

import java.math.BigDecimal;

/**
 * @author pepis
 * @apiNote 积分奖励规则策略
 **/
public interface IntegralRuleStrategy {
    /**
     * 执行
     *
     * @return 积分
     */
    BigDecimal execute(BillDetailEnum type, IntegralRuleDTO rule);

    /**
     * 计算获得积分
     *
     * @param rule /
     * @return /
     */
    BigDecimal calculate(IntegralRuleDTO rule);

    /**
     * 获取积分前置条件 比如今日是否已经获取过
     *
     * @param type /
     * @param rule /
     */
    Boolean beforeExecute(BillDetailEnum type, IntegralRuleDTO rule);
}
