using QYZH.InteractiveMagazine.Models.Dto;
using QYZH.InteractiveMagazine.Models.Dto.Points;
using QYZH.InteractiveMagazine.Models.Entity;
namespace QYZH.InteractiveMagazine.IService;
///
/// 积分服务接口
///
public interface IPointsService : IBaseService
{
// ==================== 带事务版本(独立调用) ====================
///
/// 增加积分(带事务)
///
/// 增加积分参数
/// 增加结果
Task AddPointsAsync(AddPointsInput input);
///
/// 扣除积分(带事务,含余额不足校验)
///
/// 扣除积分参数
/// 扣除结果
Task DeductPointsAsync(DeductPointsInput input);
// ==================== 无事务版本(供外部事务调用) ====================
///
/// 增加积分(无事务,需在外部事务中调用)
///
/// 增加积分参数
/// 增加结果
Task AddPointsInTranAsync(AddPointsInput input);
///
/// 扣除积分(无事务,需在外部事务中调用,含余额不足校验)
///
/// 扣除积分参数
/// 扣除结果
Task DeductPointsInTranAsync(DeductPointsInput input);
// ==================== 查询 ====================
///
/// 查询用户当前积分余额
///
/// 用户Id
/// 当前积分余额
Task GetUserPointsAsync(long userId);
///
/// 获取用户积分概览(当前余额 + 累计收入 + 累计支出)
///
/// 用户Id
/// 积分概览
Task GetPointsSummaryAsync(long userId);
///
/// 分页查询积分流水
///
/// 查询参数
/// 分页流水列表
Task> GetPointsRecordsAsync(PointsRecordQueryInput input);
}