package com.ruoyi.project.service.impl;

import java.util.List;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.project.mapper.BizDocMapper;
import com.ruoyi.project.domain.BizDoc;
import com.ruoyi.project.service.IBizDocService;

/**
 * 文档Service业务层处理
 * 
 * @author ruoyi
 * @date 2025-08-28
 */
@Service
public class BizDocServiceImpl implements IBizDocService
{
    @Autowired
    private BizDocMapper bizDocMapper;

    /**
     * 查询文档
     * 
     * @param docId 文档主键
     * @return 文档
     */
    @Override
    public BizDoc selectBizDocByDocId(Long docId)
    {
        return bizDocMapper.selectBizDocByDocId(docId);
    }

    /**
     * 查询文档列表
     *
     * @param bizDoc 文档
     * @return 文档
     */
    @Override
    public List<BizDoc> selectBizDocList(BizDoc bizDoc)
    {
        // 权限控制：无论角色，列表仅显示
        // - 项目文档：当前用户为项目所有者
        // - 模块文档：当前用户为该模块被指派人
        Long currentUserId = SecurityUtils.getUserId();
        bizDoc.getParams().put("currentUserId", currentUserId);

        return bizDocMapper.selectBizDocList(bizDoc);
    }

    /**
     * 新增文档
     * 
     * @param bizDoc 文档
     * @return 结果
     */
    @Override
    public int insertBizDoc(BizDoc bizDoc)
    {
        bizDoc.setCreateTime(DateUtils.getNowDate());
        return bizDocMapper.insertBizDoc(bizDoc);
    }

    /**
     * 修改文档
     * 
     * @param bizDoc 文档
     * @return 结果
     */
    @Override
    public int updateBizDoc(BizDoc bizDoc)
    {
        return bizDocMapper.updateBizDoc(bizDoc);
    }

    /**
     * 批量删除文档
     * 
     * @param docIds 需要删除的文档主键
     * @return 结果
     */
    @Override
    public int deleteBizDocByDocIds(Long[] docIds)
    {
        return bizDocMapper.deleteBizDocByDocIds(docIds);
    }

    /**
     * 删除文档信息
     * 
     * @param docId 文档主键
     * @return 结果
     */
    @Override
    public int deleteBizDocByDocId(Long docId)
    {
        return bizDocMapper.deleteBizDocByDocId(docId);
    }
}