package cn.estsh.i3plus.core.api.iservice.busi;

import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.platform.bean.SysMessage;
import cn.estsh.i3plus.pojo.platform.bean.SysRefUserMessage;
import io.swagger.annotations.ApiOperation;

import java.util.List;

/**
 * @Description : 消息业务服务接口
 * @Reference :
 * @Author : yunhao
 * @Date : 2018-10-25 17:10
 * @Modify :
 **/
public interface ISysMessageService {

    /**
     * 添加消息
     * @param sysMessage
     */
    @ApiOperation(value = "添加消息")
    SysMessage insertSysMessage(SysMessage sysMessage);

    @ApiOperation(value = "添加消息")
    List<SysMessage> insertSysMessage(List<SysMessage> sysMessage);

    /**
     * 删除消息
     * @param id
     */
    @ApiOperation(value = "删除消息")
    void deleteSysMessageById(Long id);

    /**
     * 修改消息
     * @param sysMessage
     */
    @ApiOperation(value = "修改消息")
    void updateSysMessage(SysMessage sysMessage);

    /**
     *  查询全部信息
     * @return
     */
    @ApiOperation(value = "查询全部信息")
    List<SysMessage> listSysMessage();

    /**
     * 根据id查询消息
     * @param id
     * @return
     */
    @ApiOperation(value = "根据id查询消息")
    SysMessage getSysMessageById(Long id);

    /**
     * 系统消息复杂查询，分页，排序
     * @param sysMessage
     * @param pager
     * @return
     */
    @ApiOperation(value = "系统消息复杂查询，分页，排序")
    ListPager querySysMessageByPager(SysMessage sysMessage, Pager pager);

    /**
     * 批量删除系统消息
     * @param ids
     */
    @ApiOperation(value = "批量删除消息")
    void deleteSysMessageByIds(Long[] ids);

    /**
     * 添加用户消息关系
     * @param refUserMessage
     */
    @ApiOperation(value = "添加用户消息关系")
    SysRefUserMessage insertSysRefUserMessage(SysRefUserMessage refUserMessage);

    /**
     * 添加用户消息关系
     * @param refList
     */
    @ApiOperation(value = "添加用户消息关系")
    List<SysRefUserMessage> insertSysRefUserMessage(List<SysRefUserMessage> refList);

    /**
     * 添加消息并发送
     * @param sysMessage
     * @return
     */
    @ApiOperation(value = "添加消息并发送")
    void doSendSysMessage(SysMessage sysMessage);

    /**
     * 分页查询用户消息表
     * @return
     */
    @ApiOperation(value = "分页查询用户消息表")
    ListPager querySysRefUserMessageByPager(SysRefUserMessage sysRefUserMessage, Pager pager);

    /**
     * 根据用户id和消息状态和查询用户消息表
     * @param userId
     * @param status
     * @return
     */
    @ApiOperation(value = "根据用户id和消息状态和查询用户消息")
    List findSysRefUserMessageByUserIdAndStatus(Long userId,Integer status);

    /**
     * 根据id查询用户消息
     * @param id
     * @return
     */
    @ApiOperation(value = "根据id查询用户消息")
    SysMessage getSysMessageByRefUserMessageId(Long id);

    /**
     * 批量修改用户消息状态
     * @param ids
     * @param status
     */
    @ApiOperation(value = "根据id查询用户消息")
    void updateSysRefUserMessageStatusByIds(Long[] ids,Integer status);

    /**
     * 批量删除用户消息
     * @param ids
     */
    @ApiOperation(value = "批量删除用户消息")
    void deleteSysRefUserMessageStatusByIds(Long[] ids);
}
