package com.red.circle.wallet.infra.database.rds.service;

import com.red.circle.framework.mybatis.service.BaseService;
import com.red.circle.wallet.infra.database.rds.entity.WalletGoldAssetRecord;
import java.util.List;

/**
 * 用户金币资产流水 服务.
 *
 * @author pengliang on 2023/7/3
 */
public interface WalletGoldAssetRecordService extends BaseService<WalletGoldAssetRecord> {

  /**
   * 记录是否存在(最近：3天).
   */
  boolean existsRecent(Long id);

  /**
   * 事件，记录是否存在(最近：3天).
   */
  boolean existsRecentEventId(String eventId);

  /**
   * 获取本月指定数量资产记录.
   */
  List<WalletGoldAssetRecord> listThisMonth(String sysOrigin, Long userId, Integer type, Long lastId,
      Integer size);

  /**
   * 获取上个月最近 lastDay 天, 最新记录(从每月结尾-lastDay).
   */
  List<WalletGoldAssetRecord> listLastMonthEnd(String sysOrigin, Long userId, Integer size,
      int lastDay);

  /**
   * 删除指定分片上的， 指定条数记录.
   */
  void deleteShardingData(Integer shardingMonth, Integer limit);

  /**
   * 整理表空间.
   */
  void executeOptimizeTable(Integer shardingMonth);

  /**
   * 是否存在数据.
   */
  boolean existsData(Integer shardingMonth);

  /**
   * 查询用户最新的VIP赠送记录.
   *
   * @param userId 用户ID
   * @param limit 查询数量限制
   * @return VIP赠送记录列表
   */
  List<WalletGoldAssetRecord> listLatestVipGiveawayRecords(Long userId, Integer limit);

}
