package com.ym.mec.biz.service;

import com.ym.mec.biz.dal.dto.TeacherSalaryDto;
import com.ym.mec.biz.dal.entity.CourseSchedule;
import com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary;
import com.ym.mec.biz.dal.entity.VipGroup;
import com.ym.mec.biz.dal.enums.VipGroupStatusEnum;
import com.ym.mec.biz.dal.page.CourseScheduleTeacherSalaryQueryInfo;
import com.ym.mec.common.page.PageInfo;
import com.ym.mec.common.service.BaseService;

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

public interface CourseScheduleTeacherSalaryService extends BaseService<Long, CourseScheduleTeacherSalary> {

    /**
     * @Author: Joburgess
     * @Date: 2019/10/14
     * @params [vipGroup VIP课程信息,
     * vipCourseSchedules 排课计划,
     * onlineTeacherSalary 教师线上课酬,
     * offlineTeacherSalary 教师线下课酬]
     * @return int
     * @describe 创建vip课教师课酬
     */
    void createCourseScheduleTeacherVipSalary(VipGroup vipGroup,
                                             List<CourseSchedule> vipCourseSchedules,
                                             BigDecimal onlineTeacherSalary,
                                             BigDecimal offlineTeacherSalary);

    /**
     * @describe 批量插入教师课程课酬记录
     * @author Joburgess
     * @date 2019/11/7
     * @param courseScheduleTeacherSalaries:
     * @return void
     */
    void batchInsert(List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries);

    /**
     * @Author: Joburgess
     * @Date: 2019/10/15
     * @params []
     * @return void
     * @describe 教师vip课课酬结算
     */
    void teacherSalarySettlement();

    /**
     * @describe 教师乐团课课酬结算
     * @author Joburgess
     * @date 2019/11/3
     * @return void
     */
    void musicGroupTeacherSalarySettlement();

    /**
     * 获取教师薪酬列表
     * @param queryInfo
     * @return
     */
    PageInfo<TeacherSalaryDto> querySalaries(CourseScheduleTeacherSalaryQueryInfo queryInfo);

    /**
     * @describe 更新vip课剩余课时的课酬
     * @author Joburgess
     * @date 2019/12/14
     * @param vipGroupId: vip课程编号
     * @param studentChangeNum: 学员变化数量，增加为正，减少为负
     * @return void
     */
    void updateVipGroupCourseTeacherSalary(Integer vipGroupId, Integer studentChangeNum, VipGroupStatusEnum vipGroupStatusEnum);
}
