package com.ruoyi.hezhi.service.impl;

import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.hezhi.domain.TbExamFile;
import com.ruoyi.hezhi.domain.TbExamSimulateInfo;
import com.ruoyi.hezhi.domain.dto.ExamFileDTO;
import com.ruoyi.hezhi.mapper.TbExamFileMapper;
import com.ruoyi.hezhi.mapper.TbExamSimulateInfoMapper;
import com.ruoyi.hezhi.service.ITbExamFileService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;

/**
 * 考试拍摄文件Service业务层处理
 *
 * @author ruoyi
 * @date 2024-11-14
 */
@Service
public class TbExamFileServiceImpl implements ITbExamFileService
{
    @Autowired
    private TbExamFileMapper tbExamFileMapper;
    @Autowired
    private TbExamSimulateInfoMapper examSimulateInfoMapper;

    /**
     * 查询考试拍摄文件
     *
     * @param examFileId 考试拍摄文件主键
     * @return 考试拍摄文件
     */
    @Override
    public TbExamFile selectTbExamFileByExamFileId(Long examFileId)
    {
        return tbExamFileMapper.selectTbExamFileByExamFileId(examFileId);
    }

    /**
     * 查询考试拍摄文件列表
     *
     * @param tbExamFile 考试拍摄文件
     * @return 考试拍摄文件
     */
    @Override
    public List<TbExamFile> selectTbExamFileList(TbExamFile tbExamFile)
    {
        return tbExamFileMapper.selectTbExamFileList(tbExamFile);
    }

    /**
     * 新增考试拍摄文件
     *
     * @param tbExamFile 考试拍摄文件
     * @return 结果
     */
    @Override
    public int insertTbExamFile(TbExamFile tbExamFile)
    {
        tbExamFile.setCreateTime(DateUtils.getNowDate());
        return tbExamFileMapper.insertTbExamFile(tbExamFile);
    }

    /**
     * 修改考试拍摄文件
     *
     * @param tbExamFile 考试拍摄文件
     * @return 结果
     */
    @Override
    public int updateTbExamFile(TbExamFile tbExamFile)
    {
        tbExamFile.setUpdateTime(DateUtils.getNowDate());
        return tbExamFileMapper.updateTbExamFile(tbExamFile);
    }

    /**
     * 批量删除考试拍摄文件
     *
     * @param examFileIds 需要删除的考试拍摄文件主键
     * @return 结果
     */
    @Override
    public int deleteTbExamFileByExamFileIds(Long[] examFileIds)
    {
        return tbExamFileMapper.deleteTbExamFileByExamFileIds(examFileIds);
    }

    /**
     * 删除考试拍摄文件信息
     *
     * @param examFileId 考试拍摄文件主键
     * @return 结果
     */
    @Override
    public int deleteTbExamFileByExamFileId(Long examFileId)
    {
        return tbExamFileMapper.deleteTbExamFileByExamFileId(examFileId);
    }

    /**
     * 正式考试拍摄
     *
     * @param examFileDTO
     * @return ok
     */
    @Override
    public AjaxResult subjectFormalPhotograph(ExamFileDTO examFileDTO) {
        TbExamFile examFile = new TbExamFile();
        examFile.setExamSimulateInfoId(examFileDTO.getExamSimulateInfoId());
        examFile.setMemberUserId(examFileDTO.getMemberUserId());
        examFile.setFileUrl(examFileDTO.getFileUrl());
        examFile.setExamType(1);
        examFile.setFileType(1);
        examFile.setCreateTime(DateUtils.getNowDate());

        TbExamSimulateInfo tbExamSimulateInfo = examSimulateInfoMapper.selectTbExamSimulateInfoByExamSimulateInfoId(examFileDTO.getExamSimulateInfoId());
        if (tbExamSimulateInfo != null) {
            examFile.setExamId(tbExamSimulateInfo.getExamId());
        }
        tbExamFileMapper.insertTbExamFile(examFile);
        return AjaxResult.success();
    }

    /**
     * 我的正式考试拍照列表
     *
     * @param params 参数
     * @return 结果
     */
    @Override
    public List<Map<String, Object>> getSubjectFormalPhotographList(Map<String, Object> params) {
        return tbExamFileMapper.getSubjectFormalPhotographList(params);
    }
}
