package com.yonge.cooleshow.biz.dal.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.microsvc.toolkit.common.response.ParamResponse;
import com.yonge.cooleshow.biz.dal.entity.TenantAlbum;
import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
import com.yonge.cooleshow.biz.dal.wrapper.TenantAlbumWrapper;
import com.yonge.cooleshow.biz.dal.wrapper.UserTenantAlbumRecordWrapper;
import com.yonge.cooleshow.biz.dal.entity.UserTenantAlbumRecord;

import java.util.List;

/**
 * 购买训练工具记录
 * 2023-07-24 13:32:24
 */
public interface UserTenantAlbumRecordService extends IService<UserTenantAlbumRecord>  {

	/**
     * 查询详情
     * @param id 详情ID
     * @return UserTenantAlbumRecord
     */
	UserTenantAlbumRecord detail(Long id);

    /**
     * 分页查询
     * @param page IPage<UserTenantAlbumRecord>
     * @param query UserTenantAlbumRecordWrapper.UserTenantAlbumRecordQuery
     * @return IPage<UserTenantAlbumRecord>
     */
    IPage<TenantAlbumWrapper.TenantAlbum> selectPage(IPage<TenantAlbumWrapper.TenantAlbum> page, UserTenantAlbumRecordWrapper.UserTenantAlbumRecordQuery query);

    IPage<UserTenantAlbumRecordWrapper.UserTenantAlbumRecord> selectUserTenantAlbumRecordPage(IPage<UserTenantAlbumRecordWrapper.UserTenantAlbumRecord> page, UserTenantAlbumRecordWrapper.UserTenantAlbumRecordQuery query);

    /**
     * 添加
     * @param userTenantAlbumRecord UserTenantAlbumRecordWrapper.UserTenantAlbumRecord
     * @return Boolean
     */
     Boolean add(UserTenantAlbumRecord userTenantAlbumRecord);

    /**
     * 更新
     * @param userTenantAlbumRecord UserTenantAlbumRecordWrapper.UserTenantAlbumRecord
     * @return Boolean
     */
     Boolean update(UserTenantAlbumRecordWrapper.UserTenantAlbumRecord userTenantAlbumRecord);

    /**
     * 获取最新的购买记录
     *
     * @param tenantId 机构ID
     * @param userId 用户ID
     * @param clientType 客户端类型
     */
    UserTenantAlbumRecord getNewestByTenantIdAndUserId(Long tenantId, Long userId, ClientEnum clientType);

    /**
     * 获取最新的购买记录
     *
     * @param tenantId   机构ID
     * @param userId     用户ID
     * @param clientType 客户端类型
     */
    List<UserTenantAlbumRecord> getNewestByTenantIdAndUserId(Long tenantId, Long userId, ClientEnum clientType, List<Long> tenantAlbumIds);

    /**
     * 获取生效中的专辑ID
     *
     * @param userId
     * @return
     */
    List<Long> getUseAlbumIdsByUserId(Long userId,ClientEnum clientType);

    List<UserTenantAlbumRecord> getUseAlbumByUserId(Long userId, ClientEnum clientType);

    TenantAlbumWrapper.TenantAlbum detailAlbum(String albumId);

    /**
     * 训练教程过期通知
     */
    void sendTenantAlbumMessage();

    UserTenantAlbumRecord getNewestByTenantAlbumId(Long tenantAlbumId, Long userId, ClientEnum client);

    List<UserTenantAlbumRecordWrapper.UserTenantAlbumRecord> list(UserTenantAlbumRecordWrapper.UserTenantAlbumRecordQuery query);
}