package com.dora.mapper;

import com.dora.entity.PointsConsumptionLog;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface PointsConsumptionLogMapper {
    /**
     * 插入积分消费记录
     */
    int insert(PointsConsumptionLog log);
    
    /**
     * 查询用户的积分消费记录（分页）
     */
    List<PointsConsumptionLog> selectByUserId(
            @Param("userId") Long userId, 
            @Param("offset") int offset, 
            @Param("limit") int limit);
    
    /**
     * 统计用户的积分消费记录总数
     */
    Long countByUserId(@Param("userId") Long userId);
    
    /**
     * 根据类型查询用户的积分消费记录（分页）
     */
    List<PointsConsumptionLog> selectByUserIdAndType(
            @Param("userId") Long userId,
            @Param("changeType") String changeType,
            @Param("offset") int offset,
            @Param("limit") int limit);
    
    /**
     * 查询用户的有效消费记录（排除已退款的消费）
     */
    List<PointsConsumptionLog> selectEffectiveConsumeByUserId(
            @Param("userId") Long userId,
            @Param("offset") int offset,
            @Param("limit") int limit);
    
    /**
     * 统计用户的有效消费记录总数（排除已退款的消费）
     */
    Long countEffectiveConsumeByUserId(@Param("userId") Long userId);
}
