package com.wecloud.im.service;

import com.wecloud.im.entity.ImApplication;
import com.wecloud.im.entity.ImConversationMembers;
import com.wecloud.im.param.ApiImConversationMembersInfoPageParam;
import com.wecloud.im.param.ApiImConversationMembersInfoQueryVo;
import com.wecloud.im.param.ApiImConversationMembersPageParam;
import com.wecloud.im.param.ApiImConversationMembersQueryVo;
import com.wecloud.im.param.ImConvMemeClientRemarkNameParam;
import com.wecloud.im.param.ImConversationMembersListParam;
import com.wecloud.im.param.ImConversationMembersPageParam;
import com.wecloud.im.param.ImConversationMembersQueryVo;
import com.wecloud.im.param.add.ImConversationMemApiAdd;
import com.wecloud.im.param.add.ImConversationMemAttrUpdate;
import com.wecloud.im.vo.ImConversationMemberListVo;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.service.BaseService;
import io.geekidea.springbootplus.framework.core.pagination.Paging;

import java.util.List;

/**
 * 会话成员表 服务类
 *
 * @author wei
 * @since 2021-05-07
 */
public interface ImConversationMembersService extends BaseService<ImConversationMembers> {


        /**
         * 服务端api-会话成员表分页列表
         *
         * @param apiImConversationMembersPageParam
         * @param imApplication
         * @return
         */
        ApiResult<List<ApiImConversationMembersQueryVo>> getRestApiImConversationMembersList(ApiImConversationMembersPageParam apiImConversationMembersPageParam, ImApplication imApplication);

        ApiResult<Paging<ApiImConversationMembersInfoQueryVo>> getApiImConversationMembersInfoList(ApiImConversationMembersInfoPageParam apiImConversationMembersInfoPageParam, ImApplication imApplication);

        ApiResult<Boolean> saveOrUpdateClientRemarkName(ImConvMemeClientRemarkNameParam imConvMemeClientRemarkNameParam);

        /**
         * 会话成员表分页列表
         *
         * @param imConversationMembersListParam
         * @return
         * @throws Exception
         */
        List<ImConversationMemberListVo> getImConversationMembersList(ImConversationMembersListParam imConversationMembersListParam) throws Exception;


        ApiResult<Boolean> saveOrUpdateAttr(ImConversationMemAttrUpdate imConversationMemAttrUpdate);

        /**
         * 保存
         *
         * @param imConversationMembers
         * @return
         * @throws Exception
         */
        boolean saveImConversationMembers(ImConversationMembers imConversationMembers) throws Exception;


        boolean addImConversationMembersApi(ImConversationMemApiAdd imConversationMemApiAdd, ImApplication imApplication);

        /**
         * 修改
         *
         * @param imConversationMembers
         * @return
         * @throws Exception
         */
        boolean updateImConversationMembers(ImConversationMembers imConversationMembers) throws Exception;

        /**
         * 删除
         *
         * @param id
         * @return
         * @throws Exception
         */
        boolean deleteImConversationMembers(Long id) throws Exception;

        /**
         * 根据ID获取查询对象
         *
         * @param id
         * @return
         * @throws Exception
         */
        ImConversationMembersQueryVo getImConversationMembersById(Long id) throws Exception;

        /**
         * 获取分页对象
         *
         * @param imConversationMembersPageParam
         * @return
         * @throws Exception
         */
        Paging<ImConversationMembersQueryVo> getImConversationMembersPageList(ImConversationMembersPageParam imConversationMembersPageParam) throws Exception;
}
