package com.ym.mec.biz.service;

import java.math.BigDecimal;
import java.util.List;
import java.util.Set;

import com.ym.mec.biz.dal.dto.FeeStudentDto;
import com.ym.mec.biz.dal.dto.SimpleUserDto;
import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender;
import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderDetail;
import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderStudentDetail;
import com.ym.mec.common.service.BaseService;

public interface MusicGroupPaymentCalenderDetailService extends BaseService<Long, MusicGroupPaymentCalenderDetail> {

    /**
     * 修改学员预计缴费金额
     * @param expectAmount
     * @param ids
     * @return
     */
    void updateExpectAmount(BigDecimal expectAmount,String ids);

    /**
     * 开启缴费
     * @param ids
     */
    String openPayment(String ids);

    /**
     * 根据声部获取乐团下完成缴费的学员
     * @param musicGroupId
     * @param subjectId
     * @return
     */
    List<SimpleUserDto> findMusicGroupStudentWithSubject(String musicGroupId,Integer subjectId);

    /**
     * 刷新学员乐团付费状态
     */
    void refreshUserMusicGroupPaymentStatusTask();

    /**
     * 乐团缴费记录新增学员
     * @param musicGroupPaymentCalenderId
     * @param userId
     */
    void add(Long musicGroupPaymentCalenderId, Integer userId);

    /**
     * 乐团缴费记录新增学员
     * @param musicGroupPaymentCalenderId
     * @param userIdList
     */
    void batchAdd(Long musicGroupPaymentCalenderId, Set<Integer> userIdList);

    /**
     * 乐团缴费记录新增学员
     * @param musicGroupPaymentCalender
     * @param musicGroupPaymentCalenderStudentDetails
     */
    void batchAdd(MusicGroupPaymentCalender musicGroupPaymentCalender, List<MusicGroupPaymentCalenderStudentDetail> musicGroupPaymentCalenderStudentDetails);

    /**
     * 乐团缴费记录新增学员
     * @param batchNo
     * @param userIdList
     */
    void batchAdd(String batchNo, Set<Integer> userIdList);

    /**
     * 获取fee表学员列表
     * @param musicGroupId
     * @return
     */
    List<FeeStudentDto> queryFeeStudents(String musicGroupId,String search,Integer subjectId);

    /**
     * 批量删除缴费信息
     * @param musicGroupPaymentCalenderDetailIds
     */
    void batchDel(String musicGroupPaymentCalenderDetailIds);
}