package jnpf.notice.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo;
import jnpf.model.common.PageDto;
import jnpf.model.notice.domain.FtbNoticeUserGroups;
import jnpf.model.notice.dto.FtbNoticeUserGroupMembersDto;
import jnpf.model.notice.dto.FtbNoticeUserGroupsDto;
import jnpf.model.notice.req.group.AddUserGroupReq;
import jnpf.model.notice.req.group.UpdateUserGroupReq;

import java.util.List;

/**
 * @author 许贵林
 * @description 针对表【ftb_notice_user_groups(用户分组表)】的数据库操作Service
 * @createDate 2024-05-08 09:42:09
 */
public interface FtbNoticeUserGroupsService extends IService<FtbNoticeUserGroups> {
    /**
     * 查询网站所有用户组
     *
     * @return 包含所有用户组的列表
     */
    List<FtbNoticeUserGroupsDto> queryWebAllGroup();

    /**
     * 插入用户组数据
     *
     * @param req 包含要插入用户组信息的请求对象
     * @return 插入操作的结果信息
     */
    String insertData(AddUserGroupReq req);

    /**
     * 更新用户组数据
     *
     * @param id 用户组的唯一标识
     * @param req 包含要更新用户组信息的请求对象
     */
    void updateData(String id, UpdateUserGroupReq req);

    /**
     * 获取用户组详细信息
     *
     * @param id 用户组的唯一标识
     * @return 包含用户组详细信息的数据传输对象
     */
    FtbNoticeUserGroupsDto getInfo(String id);

    /**
     * 删除用户组数据
     *
     * @param id 用户组的唯一标识
     */
    void deleteData(String id);

    /**
     * 查询用户组分页信息
     *
     * @param req 分页查询请求对象
     * @return 包含分页用户组信息的分页对象
     */
    PageInfo<FtbNoticeUserGroupsDto> queryAppPage(PageDto req);

    /**
     * 批量查询用户组用户
     *
     * @param groupIds 用户组的标识列表
     * @return 包含用户信息的列表
     */
    List<String> queryBatchGroupUser(String groupIds);

    /**
     * 批量查询用户组用户（适用于APP）
     *
     * @param groupIds 用户组的标识列表
     * @return 包含用户组成员信息的列表
     */
    List<FtbNoticeUserGroupMembersDto> queryBatchGroupUserApp(String groupIds);

}
