package com.dora.service;

import com.dora.dto.PointsRechargeDto;

import java.util.List;

/**
 * 积分充值服务接口
 */
public interface PointsRechargeService {

    /**
     * 获取所有上架的积分套餐
     *
     * @return 套餐列表
     */
    List<PointsRechargeDto.PackageResponse> getActivePackages();

    /**
     * 获取热门套餐
     *
     * @param limit 数量限制
     * @return 套餐列表
     */
    List<PointsRechargeDto.PackageResponse> getHotPackages(Integer limit);

    /**
     * 根据ID获取套餐详情
     *
     * @param packageId 套餐ID
     * @return 套餐信息
     */
    PointsRechargeDto.PackageResponse getPackageById(Long packageId);

    /**
     * 创建积分充值订单
     *
     * @param userId  用户ID
     * @param request 请求参数
     * @return 订单信息
     */
    PointsRechargeDto.CreateRechargeOrderResponse createRechargeOrder(Long userId, PointsRechargeDto.CreateRechargeOrderRequest request);

    /**
     * 获取用户充值记录
     *
     * @param userId 用户ID
     * @param page   页码
     * @param size   每页数量
     * @return 充值记录列表
     */
    List<PointsRechargeDto.RechargeRecordResponse> getRechargeRecords(Long userId, Integer page, Integer size);

    /**
     * 获取用户充值统计
     *
     * @param userId 用户ID
     * @return 充值统计
     */
    PointsRechargeDto.RechargeStatsResponse getRechargeStats(Long userId);

    /**
     * 处理充值订单支付成功回调
     *
     * @param orderNo 订单号
     */
    void handleRechargePaymentSuccess(String orderNo);
}

