package jnpf.notice.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo;
import jnpf.model.notice.domain.FtbNoticeUserGroupMembers;
import jnpf.model.notice.dto.FtbNoticeUserGroupMembersDto;
import jnpf.model.notice.req.group.ListGroupUserMemberReq;

import java.util.List;

/**
 * @author 许贵林
 * @description 针对表【ftb_notice_user_group_members(用户分组成员表)】的数据库操作Service
 * @createDate 2024-05-08 09:42:09
 */
public interface FtbNoticeUserGroupMembersService extends IService<FtbNoticeUserGroupMembers> {
    /**
     * 分页获取用户组成员列表
     *
     * @param groupId 用户组ID，用于定位特定的用户组
     * @param req 包含分页信息和查询条件的请求对象
     * @return 返回分页的用户组成员列表
     */
    PageInfo<FtbNoticeUserGroupMembersDto> getPageList(List<String> powerUserIds, String groupId, ListGroupUserMemberReq req);

    /**
     * 获取用户组的所有成员信息
     *
     * @param groupId 用户组ID，用于定位特定的用户组
     * @param selectFlowerAndHeadLogo 指示是否需要同时查询用户的鲜花数和头像的布尔值
     * @return 返回用户组的所有成员信息列表
     */
    List<FtbNoticeUserGroupMembersDto> getAllList(String groupId, Boolean selectFlowerAndHeadLogo);

    /**
     * 批量添加用户到分组
     *
     * @param groupId  分组ID
     * @param userList 人员列表
     */
    void batchAddGroupUser(String groupId, List<String> userList);

    /**
     * 批量删除用户从分组
     *
     * @param groupId 分组ID
     */
    void batchDeleteGroupUser(String groupId);
    /**
     * 根据组ID列表获取所有列表
     * 该方法用于根据提供的组ID列表返回所有相关的列表
     *
     * @param groupIds 组ID列表，用于识别和查询相关的列表
     * @return 返回一个字符串列表，包含所有与提供的组ID相关的项目
     */
    List<String> getAllListByGroupIds(List<String> groupIds, List<String> leaveUserIds);

    /**
     * 根据组ID列表查询批次组用户应用情况
     * 该方法旨在通过提供的组ID列表查询并返回组内的用户应用情况
     *
     * @param groupIdList 组ID列表，用于识别和查询组内用户的应用情况
     * @return 返回一个包含组用户应用情况的列表，每项代表一个组的用户应用详情
     */
    List<FtbNoticeUserGroupMembersDto> queryBatchGroupUserApp(List<String> groupIdList, List<String> powerUserIds);
}
