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

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yonge.cooleshow.biz.dal.dto.MusicTagSaveDto;
import com.yonge.cooleshow.biz.dal.dto.search.MusicTagSearch;
import com.yonge.cooleshow.biz.dal.entity.MusicTag;
import com.yonge.cooleshow.biz.dal.vo.MusicTagVo;

import java.util.List;

/**
 * 音乐标签表 服务类
 * @author liweifan
 * @date 2022-03-29
 */
public interface MusicTagService extends IService<MusicTag>  {

	/**
     * 查询详情
     * @author liweifan
 	 * @date 2022-03-29
     */
	MusicTagVo detail(Long id);

    /**
     * 分页查询
     * @author liweifan
 	 * @date 2022-03-29
     */
    IPage<MusicTagVo> selectPage(IPage<MusicTagVo> page, MusicTagSearch query);

	/**
	 * 假删除标签
	 *
	 * @param musicTagId 标签ID
	 * @return boolean
	 */
    boolean del(Long musicTagId);

	/**
	 * 启用/停用 标签
	 *
	 * @param musicTagId 标签ID
	 * @return boolean
	 */
	boolean state(Long musicTagId);

	/**
	 * 创建音乐标签
	 *
	 * @param musicTagSaveDto 音乐标签信息
	 */
    boolean createMusicTag(MusicTagSaveDto musicTagSaveDto);

	/**
	 * 修改音乐标签
	 *
	 * @param musicTagSaveDto 音乐标签信息
	 */
	boolean updateMusicTag(MusicTagSaveDto musicTagSaveDto);

	/**
	 * 获取标签树
	 *
	 * @return list
	 */
    List<MusicTagVo> selectMusicTagTree();

	/**
	 * 检查每个二级标签都在不同的一级标签下
	 *
	 * @param musicTagIdList 二级标签id集合
	 * @return boolean
	 */
    boolean checkParentDifferent(List<Long> musicTagIdList);

	/**
	 *  获取标签名字符串
	 *
	 * @param tagIdList 标签id集合
	 * @return 标签名字符串
	 */
    String getMusicTagNames(List<Long> tagIdList);
}