package com.yh.saas.plugin.configuration.announcement.service;

import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.IService;
import com.yh.saas.plugin.configuration.announcement.entity.AnnoIssueInfo;
import com.yh.saas.plugin.configuration.announcement.entity.view.DeptStaffTreeView;

import java.util.List;

/**
 * <p>
 * 公告模块 - Service
 * </p>
 *
 * @Auther ZhangMingYu
 * @since 2019年8月14日15:54:22
 */
public interface IAnnoIssueInfoService extends IService<AnnoIssueInfo> {

    /**
     * 分页查询公告 所有与当前登录用户关联的
     *
     * @param annoIssueInfo 查询条件
     * @return 返回分页
     */
    Page<AnnoIssueInfo> queryPage(AnnoIssueInfo annoIssueInfo);

    /**
     * 首页获取公告 前三条
     */
    List<AnnoIssueInfo> queryList();

    /**
     * 查询详情
     *
     * @param annoIssueInfo 查询条件
     * @return 返回对象
     */
    AnnoIssueInfo queryInfo(AnnoIssueInfo annoIssueInfo);

    /**
     * 添加公告
     * recipients 使用这个字段进行传参数[{ parentName: "架构组" , "readUserIds" : ["1","2"]},...]
     *
     * @param annoIssueInfo 添加公告
     * @return 是否成功
     */
    boolean create(AnnoIssueInfo annoIssueInfo);

    /**
     * 修改公告
     * recipients 使用这个字段进行传参数[{ parentName: "架构组" , "readUserIds" : ["1","2"]},...]
     *
     * @param annoIssueInfo 修改公告
     */
    void chagneInfo(AnnoIssueInfo annoIssueInfo);

    /**
     * 删除公告
     * (物理删除)
     *
     * @param annoIssueInfo 删除公告
     */
    void remove(AnnoIssueInfo annoIssueInfo);

    /**
     * 查询发送范围
     *
     * @return 返回当前登录人公司下所有部门和成员
     */
    List<DeptStaffTreeView> getCompDepaStaff();

    /**
     * 获取租户下公司部门
     */
    List<DeptStaffTreeView> getTenantCompDeptInfo();
}
