package cn.iocoder.yudao.module.system.service.project;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.system.controller.admin.project.vo.ProjectPageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.project.vo.ProjectSaveReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.project.ProjectDO;

import javax.validation.Valid;
import java.util.Collection;
import java.util.List;

/**
 * 项目管理 Service 接口
 *
 * @author 符溶馨
 */
public interface ProjectService {

    /**
     * 创建项目管理
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createProject(@Valid ProjectSaveReqVO createReqVO);

    /**
     * 更新项目管理
     *
     * @param updateReqVO 更新信息
     */
    void updateProject(@Valid ProjectSaveReqVO updateReqVO);

    /**
     * 删除项目管理
     *
     * @param id 编号
     */
    void deleteProject(Long id);

    /**
     * 获得项目管理
     *
     * @param id 编号
     * @return 项目管理
     */
    ProjectDO getProject(Long id);

    /**
     * 获得项目管理
     *
     * @param projectNo 项目编号
     * @return 项目
     */
    ProjectDO getProject(String projectNo);

    /**
     * 获得项目管理分页
     *
     * @param pageReqVO 分页查询
     * @return 项目管理分页
     */
    PageResult<ProjectDO> getProjectPage(ProjectPageReqVO pageReqVO);

    /**
     * 获得我参与的项目列表
     * @param userId 用户编号
     * @return 项目列表
     */
    List<ProjectDO> getMyProject(Long userId);

    /**
     * 获得项目列表
     * @param projectNos 项目编号集合
     * @return 项目信息列表
     */
    List<ProjectDO> getProjectList(Collection<String> projectNos);
}