package com.jeesharp.business.modules.member.api;

import com.jeesharp.business.modules.member.api.dto.MemberPointsBizOrderDTO;

/**
 * 各业态向会员积分域提供订单摘要的 SPI；商城、年卡等模块各自实现。
 *
 * @author jeesharp
 * @since 2026-06-24
 */
public interface MemberPointsBizOrderProvider {

    /**
     * 支持的业务场景编码，须与 {@code PayRecordBizSceneEnum} 一致。
     */
    String bizScene();

    /**
     * 按业务订单主键加载摘要；不存在返回 {@code null}。
     */
    MemberPointsBizOrderDTO loadBizOrder(String bizOrderId);

    /**
     * 是否允许参与订单消费送积分（如已退款、实付为 0 等）。
     */
    default boolean isEligibleForPoints(MemberPointsBizOrderDTO order) {
        return order != null
                && order.getCashPayAmount() != null
                && order.getCashPayAmount().signum() > 0
                && order.getBuyerMemberId() != null
                && !order.getBuyerMemberId().isBlank()
                && !order.isRefunded();
    }
}
