package com.lesingle.creation.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.lesingle.creation.dto.teacher.CreateTeacherDTO;
import com.lesingle.creation.dto.teacher.UpdateTeacherDTO;
import com.lesingle.creation.entity.Teacher;
import com.lesingle.creation.vo.teacher.TeacherVO;

import java.util.List;

/**
 * 教师服务接口
 */
public interface TeacherService extends IService<Teacher> {

    /**
     * 创建教师
     *
     * @param dto 创建教师请求
     * @param tenantId 租户 ID
     * @param creatorId 创建人 ID
     * @return 教师 VO
     */
    TeacherVO create(CreateTeacherDTO dto, Long tenantId, Long creatorId);

    /**
     * 查询教师列表
     *
     * @param tenantId 租户 ID
     * @param departmentId 部门 ID（可选）
     * @param nickname 昵称（可选）
     * @param username 用户名（可选）
     * @return 教师 VO 列表
     */
    List<TeacherVO> list(Long tenantId, Long departmentId, String nickname, String username);

    /**
     * 获取教师详情
     *
     * @param id 教师 ID
     * @param tenantId 租户 ID
     * @return 教师 VO
     */
    TeacherVO getDetail(Long id, Long tenantId);

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

    /**
     * 更新教师
     *
     * @param id 教师 ID
     * @param dto 更新教师请求
     * @param tenantId 租户 ID
     * @param modifierId 修改人 ID
     * @return 教师 VO
     */
    TeacherVO update(Long id, UpdateTeacherDTO dto, Long tenantId, Long modifierId);

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