package jnpf.authority.service;

import jnpf.base.vo.PageListVO;
import jnpf.model.authority.dto.permission.AuthGetTargetUserInfoBatchDTO;
import jnpf.permission.dto.v2.user.AuthUserBoundInfoBatchDTO;
import jnpf.permission.dto.v2.user.QueryPageUserDTO;
import jnpf.permission.dto.v2.user.QueryPageUserMoreKeywordDTO;
import jnpf.permission.eum.v2.UserWorkStatusEnums;
import jnpf.permission.vo.v2.user.UserBoundVO;
import org.apache.commons.collections.CollectionUtils;

import java.util.List;

/**
 * 带权限的用户管理功能
 *
 * @author Flynn Chan
 * @create 2025-05-21
 */
public interface FtbPermissionUsersService {

    PageListVO<UserBoundVO> pagePost(QueryPageUserDTO dto);

    PageListVO<UserBoundVO> pagePostMoreKeyword(QueryPageUserMoreKeywordDTO dto);

    List<UserBoundVO> authGetAllUserInfoBatch();

    /**
     * 查询拥有数据权限的非userWorkStatusEnumsNotList中的用户
     * @param userWorkStatusEnumsNotList
     * @return
     */
    List<UserBoundVO> authGetAllUserInfoBatch(List<UserWorkStatusEnums> userWorkStatusEnumsNotList);

    /**
     * 权限范围内仅返回用户 id 列表（不查关系与 VO，用于仅需 id 的调用方）
     */
    List<String> authGetPermissionScopeUserIds();

    List<UserBoundVO> listTargetOrganizeIdAuth(String organizeId, List<UserWorkStatusEnums> userWorkStatusEnumsList);

    List<UserBoundVO> listTargetOrganizeIdsAuth(List<String> organizeIds, List<UserWorkStatusEnums> userWorkStatusEnumsList);

    List<UserBoundVO> authGetTargetUserInfoBatch(AuthGetTargetUserInfoBatchDTO dto);

    List<UserBoundVO> getTargetUserInfoBatchByIds(List<String> ids);
}
