package com.bicloud.service.impl;

import com.bicloud.common.result.PageResult;
import com.bicloud.mapper.DocumentMapper;
import com.bicloud.pojo.dto.DocumentCreateDto;
import com.bicloud.pojo.dto.DocumentPageQueryDto;
import com.bicloud.pojo.vo.DocumentTypeVo;
import com.bicloud.pojo.vo.DocumentListVo;
import com.bicloud.service.DocumentService;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class DocumentServiceImpl implements DocumentService {

    @Autowired
    private DocumentMapper documentMapper;

    @Override
    public void addDocument(DocumentCreateDto dto) {
        // 新库：直接写入 biology_document_info（SQL 在 XML）
        documentMapper.insertDocument(dto);
    }

    @Override
    public void deleteDocument(Long id) {
        // 新库：软删除 removed=1
        documentMapper.softDeleteById(id);
    }

    @Override
    public PageResult<DocumentListVo> pageQuery(DocumentPageQueryDto queryDTO) {

        // 1) 兜底默认值，避免空指针/非法分页参数
        int page = (queryDTO.getPage() == null || queryDTO.getPage() < 1) ? 1 : queryDTO.getPage();
        int pageSize = (queryDTO.getPageSize() == null || queryDTO.getPageSize() < 1) ? 10 : queryDTO.getPageSize();

        // 2) PageHelper 开始分页
        PageHelper.startPage(page, pageSize);

        // 3) 执行 mapper 查询（PageHelper 自动分页 + 自动 count）
        Page<DocumentListVo> p = documentMapper.pageQuery(queryDTO);

        // 4) 取 total + records
        return new PageResult<>(p.getTotal(), p.getResult());
    }

    @Override
    public List<DocumentTypeVo> listTypes() {
        return documentMapper.listTypes();
    }

}
