package com.ym.mec.biz.service;

import com.ym.mec.biz.dal.dto.SubjectApplyDetailDto;
import com.ym.mec.biz.dal.entity.Subject;
import com.ym.mec.biz.dal.entity.SubjectGoodsMapper;
import com.ym.mec.biz.dal.page.SubjectQueryInfo;
import com.ym.mec.common.page.PageInfo;
import com.ym.mec.common.service.BaseService;

import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface SubjectService extends BaseService<Integer, Subject> {

    /**
     * 通过乐团编号查询科目列表
     * @param musicGroupId
     * @return
     */
    List<Subject> findSubByMusicGroupId(Integer musicGroupId);

    /**
     * 分页查询科目树状列表
     * @param queryInfo
     * @return
     */
    PageInfo<Subject> queryPageTree(SubjectQueryInfo queryInfo);

    /**
     * 通过乐团收费类型，获取默认的声部列表
     * @param musicGroupId
     * @return
     */
    List<Subject> findDefaultSubByGroupId(Integer musicGroupId);

    /**
     * 通过乐团编号获取声部列表以及声部报名、缴费、计划人数
     * @param musicGroupId
     * @return
     */
    List<SubjectApplyDetailDto> findSubApplyDetail(Integer musicGroupId);

    /**
     * 修改、新增科目树状列表
     * @param subject
     */
    void upSetSubject(Subject subject);

    /**
     * 修改、保存声部与乐器关联
     * @param subjectGoodsMappers
     */
    void markGoods(List<SubjectGoodsMapper> subjectGoodsMappers);
}