package com.ym.mec.biz.service;

import java.text.ParseException;
import java.util.List;

import com.ym.mec.biz.dal.entity.CooperationOrgan;
import com.ym.mec.biz.dal.entity.Student;
import com.ym.mec.biz.dal.enums.GradeTypeEnum;
import com.ym.mec.biz.dal.enums.PeriodEnum;
import com.ym.mec.biz.dal.page.StudentQueryInfo;
import com.ym.mec.common.page.PageInfo;
import com.ym.mec.common.service.BaseService;

public interface StudentService extends BaseService<Integer, Student> {

    PageInfo findStudentVipGroupList(StudentQueryInfo queryInfo);

    Long upSet(Student student);

    /**
     * 更新学生运营指标
     * @return
     * @throws ParseException
     */
    boolean updateOperatingTempTag();

    /**
     * @describe 初始化教师编号
     * @author Joburgess
     * @date 2020/4/16
     * @return void
     */
    void initTeacherId();

    /**
     * 修改学员的指导老师
     * @param teacherId
     */
    void batchUpdateAdviser(Integer teacherId,String studentIds);

    /**
     * 升级学生的年级
     */
    Integer updateGrade();

    /**
     * 根据学制和年级数字获取年级
     * @param gradeType
     * @param gradeNum
     * @return
     */
    String getStudentGrade(GradeTypeEnum gradeType,Integer gradeNum);

    /**
     * @describe 更新学员指导老师和声部信息
     * @author Joburgess
     * @date 2021/3/29 0029
     * @return void
     */
    void updateStudentTeacherAndSubject();


    /**
     * 获取学生的教务老师
     * @param userId
     * @return
     */
    CooperationOrgan getStudentEduTeacher(Integer userId);

    /**
     * 更新学员会员信息
     */
    void updateMemberRank(Integer userId, Integer rankSettingId, PeriodEnum periodEnum, int quantityPerPeriod);

    /**
     * 更新学员会员信息
     */
    void batchUpdateMemberRank(List<Integer> studentIds, Integer rankSettingId, PeriodEnum periodEnum, int quantityPerPeriod);

    /**
     * 更新服务指标
     * @param studentId
     * @param studentIds
     * @param serviceTag
     */
    void updateStudentServiceTag(Integer studentId,List<Integer> studentIds,Integer serviceTag);

    List<String> getStudentNames(List<Integer> studentIdList);

    Student getLocked(Integer userId);

    void cleanMember(Integer userId);

}
