package com.admin.major.service.impl;

import java.util.List;

import com.admin.common.core.service.BaseService;
import com.admin.common.utils.DateUtils;
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.MajorInfoMapper;
import com.admin.major.domain.MajorInfo;
import com.admin.major.service.IMajorInfoService;

/**
 * 专业管理Service业务层处理
 * 
 * @author zewei
 * @date 2022-03-28
 */
@Service
public class MajorInfoServiceImpl extends BaseService<MajorInfo> implements IMajorInfoService
{
    @Autowired
    private MajorInfoMapper majorInfoMapper;

    /**
     * 查询专业管理
     * 
     * @param majorId 专业管理主键
     * @return 专业管理
     */
    @Override
    public MajorInfo selectMajorInfoByMajorId(String majorId)
    {
        return majorInfoMapper.selectMajorInfoByMajorId(majorId);
    }

    /**
     * 查询专业管理列表
     * 
     * @param majorInfo 专业管理
     * @return 专业管理
     */
    @Override
    public List<MajorInfo> selectMajorInfoList(MajorInfo majorInfo)
    {
        return majorInfoMapper.selectMajorInfoList(majorInfo);
    }



    /**
     * 查询专业管理
     *
     * @param majorInfo 专业管理
     * @return 专业管理
     */
    @Override
    public MajorInfo selectOneMajorInfo(MajorInfo majorInfo)
    {
        return majorInfoMapper.selectMajorInfoList(majorInfo)
                .stream()
                .findFirst()
                .orElse(null);
    }

    /**
     * 新增专业管理
     *
     * @param majorInfo 专业管理
     * @return 结果
     */

    @Override
    public int insertMajorInfo(MajorInfo majorInfo)
    {
        majorInfo.setMajorId(IdUtils.simpleUUID());
        majorInfo.setCreateTime(DateUtils.getNowDate());
        majorInfo.setUpdateUserId(SecurityUtils.getUserId());
        majorInfo.setCreateUserId(SecurityUtils.getUserId());
        return majorInfoMapper.insertMajorInfo(majorInfo);
    }

    /**
     * 修改专业管理
     * 
     * @param majorInfo 专业管理
     * @return 结果
     */
    @Override
    public int updateMajorInfo(MajorInfo majorInfo)
    {
        majorInfo.setUpdateTime(DateUtils.getNowDate());
        majorInfo.setUpdateUserId(SecurityUtils.getUserId());
        return majorInfoMapper.updateMajorInfo(majorInfo);
    }

    /**
     * 批量删除专业管理
     * 
     * @param majorIds 需要删除的专业管理主键
     * @return 结果
     */
    @Override
    public int deleteMajorInfoByMajorIds(String[] majorIds)
    {
        return majorInfoMapper.deleteMajorInfoByMajorIds(majorIds);
    }

    /**
     * 删除专业管理信息
     * 
     * @param majorId 专业管理主键
     * @return 结果
     */
    @Override
    public int deleteMajorInfoByMajorId(String majorId)
    {
        return majorInfoMapper.deleteMajorInfoByMajorId(majorId);
    }

    @Override
    public boolean saveBatch(List<MajorInfo> list){
        return super.executeBatch(list,info -> {
            info.setMajorId(IdUtils.simpleUUID());
            majorInfoMapper.replaceMajorInfo(info);
        });
    }
}
