package com.lesingle.creation.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.lesingle.creation.dto.student.CreateStudentDTO;
import com.lesingle.creation.dto.student.UpdateStudentDTO;
import com.lesingle.creation.entity.Student;
import com.lesingle.creation.vo.student.StudentVO;

import java.util.List;

/**
 * 学生服务接口
 */
public interface StudentService extends IService<Student> {

    /**
     * 创建学生
     *
     * @param dto 创建学生请求
     * @param tenantId 租户 ID
     * @param creatorId 创建人 ID
     * @return 学生 VO
     */
    StudentVO create(CreateStudentDTO dto, Long tenantId, Long creatorId);

    /**
     * 查询学生列表（分页）
     *
     * @param tenantId 租户 ID
     * @param page 页码
     * @param pageSize 每页大小
     * @param classId 班级 ID（可选）
     * @return 学生 VO 列表
     */
    List<StudentVO> list(Long tenantId, Integer page, Integer pageSize, Long classId);

    /**
     * 获取学生详情
     *
     * @param id 学生 ID
     * @param tenantId 租户 ID
     * @return 学生 VO
     */
    StudentVO getDetail(Long id, Long tenantId);

    /**
     * 根据用户 ID 获取学生信息
     *
     * @param userId 用户 ID
     * @param tenantId 租户 ID
     * @return 学生 VO
     */
    StudentVO getByUserId(Long userId, Long tenantId);

    /**
     * 更新学生
     *
     * @param id 学生 ID
     * @param dto 更新学生请求
     * @param tenantId 租户 ID
     * @param modifierId 修改人 ID
     * @return 学生 VO
     */
    StudentVO update(Long id, UpdateStudentDTO dto, Long tenantId, Long modifierId);

    /**
     * 删除学生
     *
     * @param id 学生 ID
     * @param tenantId 租户 ID
     */
    void delete(Long id, Long tenantId);
}
