package com.zhentao.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zhentao.entity.PointsDetail;

/**
 * 积分管理Service
 *
 * @author zhentao
 * @since 2025-12-10
 */
public interface PointsManageService {

    /**
     * 根据规则名称为红娘添加积分
     *
     * @param makerId 红娘ID
     * @param ruleName 规则名称
     * @param reason 额外原因
     * @return 是否成功
     */
    boolean addPointsByRuleName(Integer makerId, String ruleName, String reason);

    /**
     * 根据规则类型为红娘添加积分
     *
     * @param makerId 红娘ID
     * @param ruleType 规则类型：1-签到 2-上传线索 3-撮合成功 4-完成培训 5-活动奖励
     * @param reason 额外原因
     * @return 是否成功
     */
    boolean addPointsByRuleType(Integer makerId, Integer ruleType, String reason);

    /**
     * 直接为红娘添加指定数量的积分
     *
     * @param makerId 红娘ID
     * @param points 积分数值
     * @param reason 原因
     * @return 是否成功
     */
    boolean addPoints(Integer makerId, Integer points, String reason);

    /**
     * 从红娘扣除积分
     *
     * @param makerId 红娘ID
     * @param points 积分数值
     * @param reason 原因
     * @return 是否成功
     */
    boolean deductPoints(Integer makerId, Integer points, String reason);

    /**
     * 获取红娘积分余额
     *
     * @param makerId 红娘ID
     * @return 积分余额
     */
    Integer getPointsBalance(Integer makerId);

    /**
     * 获取红娘积分明细
     *
     * @param makerId 红娘ID
     * @param page 页码
     * @param pageSize 每页数量
     * @return 积分明细列表
     */
    Page<PointsDetail> getPointsDetail(Integer makerId, Integer page, Integer pageSize);
}