package com.dora.mapper;

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

import java.time.LocalDateTime;
import java.util.List;

/**
 * 用户余额变动记录Mapper接口
 */
@Mapper
public interface UserBalanceLogMapper {

    /**
     * 插入余额变动记录
     */
    int insert(UserBalanceLog userBalanceLog);

    /**
     * 根据用户ID查询余额变动记录
     */
    List<UserBalanceLog> selectByUserId(@Param("userId") Long userId,
                                       @Param("offset") int offset,
                                       @Param("limit") int limit);

    /**
     * 根据用户ID统计余额变动记录数量
     */
    Long countByUserId(@Param("userId") Long userId);

    /**
     * 根据用户ID和变动类型查询记录
     */
    List<UserBalanceLog> selectByUserIdAndChangeType(@Param("userId") Long userId,
                                                    @Param("changeType") String changeType,
                                                    @Param("offset") int offset,
                                                    @Param("limit") int limit);

    /**
     * 根据用户ID和变动类型统计记录数量
     */
    Long countByUserIdAndChangeType(@Param("userId") Long userId,
                                   @Param("changeType") String changeType);

    /**
     * 根据用户ID和时间范围查询记录
     */
    List<UserBalanceLog> selectByUserIdAndTimeRange(@Param("userId") Long userId,
                                                   @Param("startTime") LocalDateTime startTime,
                                                   @Param("endTime") LocalDateTime endTime);
} 