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.config.jwt.utils.JwtUserInfo;
import com.yonge.cooleshow.biz.dal.entity.UserMusic;
import com.yonge.cooleshow.biz.dal.wrapper.UserMusicWrapper;

import java.util.List;
import java.util.Map;

/**
 * 用户曲目作品
 * 2023-09-05 15:27:10
 */
public interface UserMusicService extends IService<UserMusic>  {

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

    /**
     * 分页查询
     * @param page IPage<UserMusic>
     * @param query UserMusicWrapper.UserMusicQuery
     * @return IPage<UserMusic>
     */
    IPage<UserMusicWrapper.UserMusic> selectPage(IPage<UserMusicWrapper.UserMusic> page, UserMusicWrapper.UserMusicQuery query);

    /**
     * 添加
     * @param userMusic UserMusicWrapper.UserMusic
     * @return Boolean
     */
     Boolean add(UserMusicWrapper.UserMusic userMusic);

    /**
     * 更新
     * @param userMusic UserMusicWrapper.UserMusic
     * @return Boolean
     */
     Boolean update(UserMusicWrapper.UserMusic userMusic);

    /**
     *  根据曲目练习记录获取发布曲目
     *
     * @param musicPracticeRecordIds 曲目练习记录ID
     */
    Map<Long, UserMusic> getMapByMusicPracticeRecordIds(List<Long> musicPracticeRecordIds);


    /**
     * 保存草稿/发布作品
     *
     */
    void save(UserMusicWrapper.AddUserMusic userMusic);

    /**
     * 分页
     *
     */
    IPage<UserMusicWrapper.UserMusic> selectPage(IPage<UserMusicWrapper.UserMusic> page, UserMusicWrapper.UserMusicQuery query, JwtUserInfo<?> userInfo);


    /**
     * 设置作品草稿过期
     */
    void workOverdue();
}
