package com.microservices.pms.common.service;

import com.microservices.common.core.web.domain.BaseEntity;
import com.microservices.pms.enterprise.domain.vo.GitLinkUserSimpleInfoVo;
import com.microservices.pms.enterprise.domain.vo.GitlinkOrganizationTeamVo;
import com.microservices.pms.project.domain.vo.BaseEntityVo;
import com.microservices.system.api.domain.*;

import java.util.HashMap;
import java.util.List;

/**
 * 项目管理企业Service接口
 * 
 * @author otto
 * @date 2023-10-10
 */
public interface IPmsCommonService
{
    /**
     * 根据文件id列表获取文件详情列表
     *
     * @param fileIds 文件id列表，逗号分隔
     * @return 文件详情列表
     */
    public List<SysFileInfo> getAllFileByFileIds(String fileIds);

    /**
     * 根据文件标识列表获取文件详情列表
     *
     * @param fileIdentifiers 文件标识列表，逗号分隔
     * @return 文件详情列表
     */
    public List<SysFileInfo> getAllFileByFileIdentifiers(String fileIdentifiers);

    public List<SimpleGitlinkFileInfo> getAllGitlinkFileInfoByFileIdentifiers(String fileIdentifiers);
    public SimpleSysUser getSimpleSysUserByGitlinkUserId(Long gitlinkUserId);
    public SimpleSysUser getSimpleSysUserByUsername(String username);
    public SimpleGitlinkUser getSimpleGitlinkUserByGitlinkUserId(Long gitlinkUserId);
    public SimpleGitlinkUser getSimpleGitlinkUserByUsername(String username);

    public void setBaseEntityVo(BaseEntityVo baseEntityVo, BaseEntity baseEntity);

    SysUser getSysUserByGitlinkId(Long gitlinkUserId);

    /**
     * 根据authorize查询gitlink组织下团队
     *
     * @param gitlinkOrgId gitlink组织id
     * @param authorize    授权标识
     * @return 团队id
     */
    Long getOrgTeamIdByAuthorize(Long gitlinkOrgId, String authorize);

    /**
     * 根据用户id列表获取用户列表，设置缓存
     *
     * @param productAssigneeGitlinkIds gitlink用户id列表
     * @param hashMap 缓存，若不需要缓存传Null
     * @return 用户列表
     */
    List<SimpleSysUser> getSimpleSysUserListByGitlinkUserIdsAndCache(String productAssigneeGitlinkIds, HashMap<String, Object> hashMap);

    /**
     * 获取gitlink组织下所有团队
     *
     * @param gitlinkOrgId gitlink组织Id
     * @return 所有团队
     */
    List<GitlinkOrganizationTeamVo> getAllGitlinkOrgTeams(Long gitlinkOrgId);

    /**
     * 获取Gitlink组织下所有用户
     *
     * @return gitlink用户列表
     */
    List<GitLinkUserSimpleInfoVo> getAllGitlinkUsersByOrgTeam(String orgIdentify, Long teamId);

    /**
     * 当前用户是否为企业管理员
     *
     * @param enterpriseId 企业id
     * @return true是 false否
     */
    Boolean hasDocsManageRole(Long enterpriseId);

    /**
     * 根据用户名获取用户昵称
     *
     * @param username 用户名
     * @return 用户昵称
     */
    String getNickNameByUsername(String username);
}
