package com.dora.service;

import com.dora.entity.FanPromotionCommission;
import com.dora.entity.Order;

import java.math.BigDecimal;
import java.util.List;

/**
 * 推广分成服务接口
 * 负责处理推广分成的创建、结算和查询
 */
public interface PromotionCommissionService {

    /**
     * 处理订单的推广分成（实时创建并结算）
     * @param order 已支付的订单
     * @return 创建的推广分成记录，如果没有推广关系则返回null
     */
    FanPromotionCommission processOrderPromotionCommission(Order order);

    /**
     * 建立用户推广关系
     * @param fanUserId 粉丝用户ID
     * @param inviteCode 推广码
     * @return 是否建立成功
     */
    boolean establishPromotionRelationship(Long fanUserId, String inviteCode);

    /**
     * 检查并更新推广人等级
     * @param promoterId 推广人ID
     * @return 是否有等级变化
     */
    boolean checkAndUpdatePromoterLevel(Long promoterId);

    /**
     * 获取用户的推广收益详情
     * @param userId 用户ID
     * @return 推广收益详情
     */
    List<FanPromotionCommission> getUserPromotionCommissions(Long userId);

    /**
     * 计算推广分成金额
     * @param orderAmount 订单金额
     * @param commissionRate 提成比例
     * @return 分成金额
     */
    BigDecimal calculateCommissionAmount(BigDecimal orderAmount, BigDecimal commissionRate);

    /**
     * 验证推广分成的合法性
     * @param order 订单
     * @param promoterId 推广人ID
     * @return 是否合法
     */
    boolean validatePromotionCommission(Order order, Long promoterId);
}
