package com.admin.major.service.impl;

import java.util.List;

import com.admin.common.core.service.BaseService;
import com.admin.common.utils.DateUtils;
import com.admin.major.domain.StudentInfo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.admin.common.utils.SecurityUtils;
import com.admin.common.utils.uuid.IdUtils;
import com.admin.major.mapper.StudentCourseMapper;
import com.admin.major.domain.StudentCourse;
import com.admin.major.service.IStudentCourseService;

/**
 * 学生课程信息Service业务层处理
 * 
 * @author zewei
 * @date 2022-04-07
 */
@Service
@Slf4j
public class StudentCourseServiceImpl extends BaseService<StudentCourse> implements IStudentCourseService
{
    @Autowired
    private StudentCourseMapper studentCourseMapper;

    /**
     * 查询学生课程信息
     * 
     * @param studentId 学生课程信息主键
     * @return 学生课程信息
     */
    @Override
    public StudentCourse selectStudentCourseByStudentId(String studentId)
    {
        return studentCourseMapper.selectStudentCourseByStudentId(studentId);
    }

    /**
     * 查询学生课程信息列表
     * 
     * @param studentCourse 学生课程信息
     * @return 学生课程信息
     */
    @Override
    public List<StudentCourse> selectStudentCourseList(StudentCourse studentCourse)
    {
        return studentCourseMapper.selectStudentCourseList(studentCourse);
    }



    /**
     * 查询学生课程信息
     *
     * @param studentCourse 学生课程信息
     * @return 学生课程信息
     */
    @Override
    public StudentCourse selectOneStudentCourse(StudentCourse studentCourse)
    {
        return studentCourseMapper.selectStudentCourseList(studentCourse)
                .stream()
                .findFirst()
                .orElse(null);
    }

    /**
     * 新增学生课程信息
     *
     * @param studentCourse 学生课程信息
     * @return 结果
     */

    @Override
    public int insertStudentCourse(StudentCourse studentCourse)
    {
        studentCourse.setStudentId(IdUtils.simpleUUID());
        studentCourse.setCreateTime(DateUtils.getNowDate());
        studentCourse.setCreateUserId(SecurityUtils.getUserId());
        studentCourse.setUpdateUserId(SecurityUtils.getUserId());
        return studentCourseMapper.insertStudentCourse(studentCourse);
    }

    /**
     * 修改学生课程信息
     * 
     * @param studentCourse 学生课程信息
     * @return 结果
     */
    @Override
    public int updateStudentCourse(StudentCourse studentCourse)
    {
        studentCourse.setUpdateTime(DateUtils.getNowDate());
        studentCourse.setUpdateUserId(SecurityUtils.getUserId());
        return studentCourseMapper.updateStudentCourse(studentCourse);
    }

    /**
     * 批量删除学生课程信息
     * 
     * @param studentIds 需要删除的学生课程信息主键
     * @return 结果
     */
    @Override
    public int deleteStudentCourseByStudentIds(String[] studentIds)
    {
        return studentCourseMapper.deleteStudentCourseByStudentIds(studentIds);
    }

    /**
     * 删除学生课程信息信息
     * 
     * @param studentId 学生课程信息主键
     * @return 结果
     */
    @Override
    public int deleteStudentCourseByStudentId(String studentId)
    {
        return studentCourseMapper.deleteStudentCourseByStudentId(studentId);
    }

    @Override
    public boolean saveBatch(List<StudentCourse> userList) {
        return super.executeBatch(userList, user->{
//            user.setStudentId(IdUtils.simpleUUID());
            log.debug("同步学生课程信息 {}",user);
            studentCourseMapper.replaceStudentCourse(user);
        });
    }

}
