package com.ruoyi.member.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.member.domain.MemberPoints;

import java.util.List;

/**
 * 博主积分变动明细Service接口
 *
 * @author pqz
 * @date 2025-03-17
 */
public interface IMemberPointsService extends IService<MemberPoints> {

    /**
     * 分页查询积分变动明细
     *
     * @param userId 用户id
     * @param page   分页参数
     * @return com.baomidou.mybatisplus.core.metadata.IPage<com.ruoyi.member.domain.MemberPoints>
     * @author PQZ
     * @date 15:24 2025/3/29
     **/
    IPage<MemberPoints> queryListPage(Long userId, Page<MemberPoints> page);

    /**
     * 新增积分变动记录
     *
     * @param memberPoints {@link MemberPoints}
     * @author PQZ
     * @date 15:29 2025/3/29
     **/
    void savePoints(MemberPoints memberPoints);

    /**
     * 获取积分
     *
     * @param userId 用户id
     * @return java.lang.Integer
     * @author PQZ
     * @date 16:11 2025/3/31
     **/
    double getBloggerBalance(Long userId);

    /**
     * 积分提现
     * @author PQZ
     * @date 17:14 2025/4/28
     * @param memberPoints {@link MemberPoints}
    **/
    void payout(MemberPoints memberPoints) throws Exception;

    /**
     * 支付成功回调
     * @author PQZ
     * @date 17:29 2025/4/28
     * @param orderNo 订单编号
     * @type  type    回调状态(success:成功，其他为失败)
    **/
    void payoutCallback(String orderNo,String type);

    /**
     * 查询当前登录用户在途订单
     * @author PQZ
     * @date 14:32 2025/4/29
     * @param userId 用户id
     * @return java.util.List<com.ruoyi.member.domain.MemberPoints>
    **/
    List<MemberPoints> getOnWayOrder(Long userId);
}
